Android Studio踩坑記
拾起Android專案,需要使用Goolgle Play Services。順應潮流換了Android Studio,開啟了踩坑之旅。
1. 嘗試直接將Eclipse專案匯入AS,結果根本沒法用啊。正確的方法應該是升級ADT,在Eclipse下匯出build.gradle然後再匯入。但是升級的時間還不如直接新建專案把資源拷進去,同時也能瞭解一下AS預設的專案結構。
2. 第一個遇到的問題是新建的專案沒有assert和lib目錄。java和res等資源都在src/main目錄下,於是我將assets和libs目錄都放在這了。結果assets目錄沒問題,但是實際上要在gradle檔案中引用libs目錄,libs目錄應該放在src下。
3. 加入jar包沒有那麼簡單,放入libs目錄下之後還需要:右擊lib選擇新增為lib;在專案中新增庫引用;在build.gradle中新增對這個jar的依賴;手動在專案目錄下執行gradew clean。
4. 想要使用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'
5. 這裡的版本號也是略坑爹,想知道版本號需要開啟目錄<SDK>\extras\google\m2repository\com\google\android\gms\play-services,然後就能看到可用的版本號,其他兩個包也是類似的方法檢視。
6. 下載的play services目錄重要示例工程,本還想參考一下,結果都沒有升級成新的工程結構。
7. 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
1. build.gradle中gradle版本修改為0.7+
2. 執行後出錯,按照提示修改gradle-wrapper.properties檔案中
3. 加入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了。