周末的时候刚把应用的 ios 给上架了,接着他们就问我什么时候出安卓的版本。好久都没有再打开eclipse,安卓的开发我几乎都忘记完了,看样子要重头再来了。
安装好最新的更新,新建立了项目,发现无论是 官方的模拟器还是我那可怜的魅族M9,调试都很慢。慢到什么程度呢,从我按下调试按钮到应用的界面被显示出来,需要35秒+的时间。而我又是那种猜测编程式的,简直很崩溃。
在微博上抱怨了一番,结果表弟发了个关键词 Genymotion,我一查,是一个第三方的android 模拟器,果然不错。这里就推荐给大家,虽然我的这个空间几乎没有多少观众。
首先,需要去 http://www.genymotion.com 去注册一个帐号,这个帐号在后续中会使用到。注册并激活帐号后,就可以下载了。
然后,需要下载安装 vitual box 软件,下载自己对应的操作系统版本就可以了。
接下来,安装上面的2个软件。
第四步,打开eclipse,安装新插件,插件地址是http://plugins.genymotion.com/eclipse/。安装完成后,打开eclipse的选项菜单,里面就有genymotion的配置项,设置 SDK 的目录,以及代理什么的。
运行 genymotion ,创建虚拟设备。接下来就可以开工运行了,非常的方便。
这里我没有写更具体的,因为我觉得对于常见的 windows 和 mac 平台,是非常傻瓜式的,几乎不需要思考。
这个事情其实持续了有好几个月了,发生在 Android SDK 更新后,Eclipse 项目可以编译成功,但是运行时会崩溃,无论是模拟器还是真机,跟踪输出的记录为 Caused by: java.lang.ClassNotFoundException 。崩溃的地点是第三方的库。
我有在项目里添加了一些统计、广告、语音相关的SDK,移除掉这些 jar 包后就正常,所以问题可能还是和这些有点关系。
奇怪的是,这项目以前是可以运行的,在反复卸载和安装 Eclipse 和 SDK 都没有效果后,我暂时把这事情给放下来,去琢磨 唠叨下 的代码。后来网上有人给出的解决方案是把项目里的 lib 文件夹修改名称为 libs ,就可以了。有问过其它专门做 java 开发的同事,无论是 lib 还是 libs 对项目来说都无所谓的。但是心里对一定要该名字总觉得是怪怪的。
心里还是有点不死心,继续在网上找线索,后来发现了另外的一个解决方法,看原文可以移步到这里。个人觉得第二种方案比较好,我们来看是怎么解决的哈。
在项目点右键,选择 Build Path ,再选择 Configure Build Path ,然后切换到 Libraries 选项卡,把第三方的 jar 引用全部移动到项目的顶部,然后 clean 一下项目,重新编译就可以通过了。
出错的项目是以前的项目,在 Android SDK 和 Eclipse 升级后出现,所以估计 Google 方面是不是做了一些修改导致项目前后不一样。对于文中提及的2个解决方法,各位看官可以根据自己的爱好和实际情况来选择好了。如果是在升级后新建的项目貌似就没有问题。
题外话:
在使用第三方 SDK 库的时候,我都是按照他们提供的文档,使用 Add External JARs 来添加。但是遇到了一个问题,项目通过版本控制在我的小Y和 Mac 上同步,绝对路径 Cover 不住 2 台电脑的项目设置,后来发现改用 Add JARs 可以解决,用的是项目的相对路径,这个真心不错。总感觉自己出东西真慢的样子,问题拖了这么久才解决。
今天想把Android版本的糗事中上次的开机自动检查新版本的事情给解决掉。今天放了一个新版本到测试服务器上,然后更新安装包的时候,提示“应用程序未安装”。
后来发现是签名的问题。我传到测试服务器上面的是经过正式签名的并用zipalign优化过的包,但是我手机上是直接用eclipse调试的,所以用的是Debug签名的。因为签名不一致,导致程序无法安装。
后来把没有正式签名的包放到服务器上更新,问题就解决了,验证修复。