Android Studio踩坑记

拾起Android项目,需要使用Goolgle Play Services。顺应潮流换了Android Studio,开启了踩坑之旅。

  • 尝试直接将Eclipse项目导入AS,结果根本没法用啊。正确的方法应该是升级ADT,在Eclipse下导出build.gradle然后再导入。但是升级的时间还不如直接新建项目把资源拷进去,同时也能了解一下AS默认的项目结构。

  • 第一个遇到的问题是新建的项目没有assert和lib目录。java和res等资源都在src/main目录下,于是我将assets和libs目录都放在这了。结果assets目录没问题,但是实际上要在gradle文件中引用libs目录,libs目录应该放在src下。

  • 加入jar包没有那么简单,放入libs目录下之后还需要:右击lib选择添加为lib;在项目中添加库引用;在build.gradle中添加对这个jar的依赖;手动在项目目录下运行gradew clean。

  • 想要使用gms,最新的方法是在SDK manager中安装Google Play Services和Google Repository,在dependencies中添加:

    compile 'com.android.support:support-v4:19.0.0'
    compile 'com.android.support:appcompat-v7:19.0.0'
    compile 'com.google.android.gms:play-services:4.1.32'
  • 这里的版本号也是略坑爹,想知道版本号需要打开目录 <SDK>\extras\google\m2repository\com\google\android\gms\play-services ,然后就能看到可用的版本号,其他两个包也是类似的方法查看。

  • 下载的play services目录重要示例工程,本还想参考一下,结果都没有升级成新的工程结构。

  • Play Services安装文档中指明需要添加:

<meta-data android:name="com.google.android.gms.version"
           android:value="@integer/google_play_services_version" />

但是这个版本号略坑。平时看到的都是x.x.xx这样的格式,而不是整数。最终在sdk\extras\google\google_play_services\libproject\google-play-services_lib\AndroidManifest.xml中找到了版本号4132530,运行之后提示需要的是4132500,为什么要减去30至今没搞明白。需要放在application节点下,我还错误地放在manifest节点下。

最后吐槽一下打开的各种弹窗太大了,我这1366×768分辨率的笔记本经常看不到下边的内容。第一次运行AS的时候还有长时间走滚动条的问题,据说是在下载gradle,不过我没有感觉到。因为用电脑是需要和小外甥打游击,不能被看到,下载的时候把电脑藏起来干别的去了。

jni库始终无法正常加入安装包中。没事升级AS到0.4.3,之前jar包引用又出问题了,就在决定今天无法解决就换回Eclipse之际,一篇帖子帮了大忙:http://blog.csdn.net/look_down/article/details/17557031

  • build.gradle中gradle版本修改为0.7+

  • 运行后出错,按照提示修改gradle-wrapper.properties文件中

  • 加入so库的代码修改为:

task copyNativeLibs(type: Copy) {  
    from fileTree(dir: 'libs', include: 'armeabi/*.so' )  into  'build/lib'  
}  
tasks.withType(Compile) {  
    compileTask -> compileTask.dependsOn copyNativeLibs  
}  
  
clean.dependsOn 'cleanCopyNativeLibs'  
  
tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->  
   pkgTask.jniFolders = [new File(buildDir, 'lib')]  
}  

经过gradlew clean build之后成功了。这下没有理由再用Eclipse了。

Comments

comments powered by Disqus