1. 程式人生 > >Android Studio踩坑記

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了。