Automated Instrumentation Testing:如果你的项目里有Instrumentation测试,需要加入-keep public class * extends android.app.Application这样一条规则。因为每个测试项目会自动生成一个android.app.Application类,而ProGuard则认为这些Application类没有在任何地方被调用就自动剔除了,所以测试就没法在ci服务器上运行。这点我当时花了一天时间才最后解决的。:-(
Play Services:这个庞大的库本身就占用了大概两三万的方法数,虽然这个库在Android开发中算是必须的,但其实大部分都未必用得到,于是就造成了浪费。Google对于这个库有它自己推荐的规则,直接添加进来就可以。好消息是Play Services下一个版本6.5将会模块化。
Multi-dex
随着app体积越来越大,即使用了ProGuard也还是会导致引用的方法数超过65536,于是有人就想到那我就编译多个dex文件,其中一个是主要的dex文件,然后在运行时再载入其他所需的dex。在Android新的运行时ART发布之前,这是非常繁琐低效的。随着ART的发布,multi-dex有了原生的支持,多个dex文件会在app安装的时候被编译成一个.oat文件让ART来执行,所以也不需要在运行时才载入所需的dex。而在ART之前的版本,Google也发布了支持multidex的库。详细的设置可以看这里:Configuring Your App for Multidex with Gradle。但这个归根到底还是一个hack,而且还是有很多限制,比如不怎么支持Android 4.0之前的版本,极大地增加了编译时间等等。
新的网站体验非常不错,搜索响应非常迅速,还支持”Go to Definition”跟”Find All References”,URL即是链接到某个assembly或者是某个文件的第几行,比如像这样:/#System.Core,或者是像这样:/#mscorlib/system/environment.cs#56。这些都是由还在CTP阶段的Roslyn API(微软的.Net compiler as service)项目构建。另外.Net源代码也可以下载下来,还附带了.sln的solution文件,方便在Visual Studio里直接查看。目前的代码是基于.Net 4.5.1这个版本的,.Net团队意思是以后网站会随着.Net重大更新而同步更新。
“Reference use” means use of the software within your company as a reference, in read only form, for the sole purposes of debugging your products, maintaining your products, or enhancing the interoperability of your products with the software, and specifically excludes the right to distribute the software outside of your company.
今天,Xamarin终于把第一天的keynote发布了出来。在keynote里,介绍了Xamarin从成立到现在的一些有趣的故事,进军移动领域的原因,他们CTO Miguel是如何从Linux粉转向果粉的,Xamrin 2.0的介绍,F#和Async开始beta测试,新的内嵌iOS designer,以及新产品Xamarin Test Cloud。Keynote地址在这里:Xamarin Evolve 2013。
重点提下Xamarin Test Cloud,这是一套自动化UI测试(Automated UI Testing)框架。因为在iOS有几个版本,还有几个不同的设备,测试会变得很繁琐。在Android平台上这个情况更加严重,不仅版本众多而且还有两三千种不同的设备。面对这么繁多的设备,在所有真机上测试你的程序变得几乎不可能。在我实际Android开发的时候就碰到过这种情况,说得夸张些就是几乎每增加一个测试的真机就会出现一个新的问题。而Xamarin Test Cloud正是想解决这个问题。目前提供他们web app,可以上传你的程序的apk(Android)或者ipa(iOS)文件,选择想要的机型然后开始测试。当然,除了web app,也有API可以嵌入到你自己的开发过程当中。
既然叫Automated UI Testing,手工点app上的各种按钮,填写各种文本框等等这类根本算不上自动化测试。Xamarin Test Cloud最令我激动的是提供了一套脚本来自动化这些测试,比如定义脚本来进行“打开app->输入用户名和密码->点击登录按钮”这样的一系列操作,然后就可以在各个设备上看到跑这个脚本的情况,多少通过了,哪些有crash,crash的话就会有相应的log,哪些反应比较慢就会给出警告,非常方便和使用。最后提一点,Xamarin Test Cloud是适用于所有Android/iOS app的,并不仅限于用Xamarin写的app。
using Java.Util;
...
var nextYear = Calendar.Instance;
nextYear.Add (CalendarField.Year, 1);
var calendar = FindViewById (Resource.Id.calendar_view);
calendar.Init (new Date (), new Date (), nextYear.Time);
新的IDE:Xamarin Studio
Xamarin Studio的前身是MonoDevelop,一款用于在Linux/MacOS/Windows下写C#应用程序的IDE。新版本主要重新设计了UI,之前时不时会有问题的代码完成也有了巨大的改进以及全局搜索等等。官方blog里详细地介绍了这些改进是怎么来的。
此外,他们选择了C#这个非常强大又高效的语言,比如这些杀手级feature:LINQ, Lamda表达式,var匿名类型等(JAVA?!)。再通过P/Invoke实现每个平台上所有API的绑定。由于C#及其虚拟机CLI(Common Language Infrastructure,即.Net的核心部分)加入了ECMA标准,于是他们脱离微软自己实现了这些。当然也不用担心版权纠纷。
折腾了几个月,在Lion上安装Rails时总是在安装到ri和RDoc时总是会出现”File ‘lib’ not found”的问题。ri是一个离线的Ruby on Rails文档查询工具,而RDoc则是文档生成工具。所以在光写代码而且有网络的情况下,问题不是太大,但总是非常恼人,而且之前在Snow Leopard上一点问题都没有。尝试各种办法都不行: