1. 程式人生 > >android studio使用要點及常見錯誤

android studio使用要點及常見錯誤

1、主專案跟他的依賴lib要放在同一個目錄才能在eclipse中export

2、匯入eclipse中匯出的專案到studio後的配置:
(1)開啟工作空間目錄下的 gradle –> wrapper –> gradle-wrapper.properties 。修改一下內容: distributionUrl=http://services.gradle.org/distributions/gradle-a.b.c-all.zip –> distributionUrl=https://services.gradle.org/distributions/gradle-2.4-all.zip

(2)開啟工作空間目錄下的 build.gradle 檔案。修改以下內容:
classpath ‘com.android.tools.build:gradle:0.x.+’ –> classpath ‘com.android.tools.build:gradle:1.2.3’

3、新增其他專案為module需要手動修改主目錄裡的settings.gradle,把**檔名或包名(遠端的用包名)**include進去(加冒號,ex:include ‘:app’),然後sync同步一下

4、主專案和依賴的lib放在同一個目錄時,輸出後主目錄也有build.gradle,各個lib(包括主專案)也都各自有build.gradle,匯入的時候需要匯入根目錄

(不是主專案)裡的那個build.gradle

5、錯誤自動檢測:在 AS 右下角有個小人頭 點選 有個POWER SAVE MODE 取消對鉤 程式碼就能自動檢測了

6、主專案圖示為小手機表示這是主應用程式,為咖啡杯表示還有未完成的配置等,變成三本豎著的書表示這是個module

7.添加了 compile fileTree(include: ‘*.jar’, dir: ‘libs’)就不用新增libs資料夾下的dependence了(寫了也不會報錯)

8、變lrmlibrary由應用為lib庫(即eclipse中的is library):只需要修改lib專案lrmlibrary裡build.gradle中的apply plugin: ‘com.android.application’為apply plugin: ‘com.android.library’。並且修改lib專案lrmlibrary的manifest中application標籤,去掉

<intent-filter>-->
                <!--<action android:name="android.intent.action.MAIN" />-->
                <!--<category android:name="android.intent.category.LAUNCHER" />-->
            <!--</intent-filter>
  

    錯誤6:找不到R檔案
    module找不到R檔案-build-make module xxx
    檢查是否編譯了專案。Android studio有時候沒有編譯就會報出沒有R檔案的錯誤。(可以make project或者make module)
    檢查程式碼中包名是否正確。有時候從其他地方複製程式碼過來時連帶了包名,也會報出R檔案找不到。
    檢查佈局檔案是否有語法錯誤。佈局檔案有語言錯誤時也會導致R檔案錯誤。
    軟體抽風了,重建專案試試。
    另外可能很多人不知道在哪兒找R檔案,Android studio左上角有個選項,一般我們可能是選的Android模式,選擇Packages模式找到你的專案,裡面就可以看到R檔案了

    錯誤7:V7包內build-intermediates-explodedaar-com.android.support-appcompatv7-22.1.1-res.value 什麼什麼錯誤 :檢查build.gradle的compileSdkVersion和buildtoolsversion和主專案的這兩個是不是寫的一樣

    錯誤8:有個很嚴重的問題,比如我有個主工程為MainProject,另外有個庫工程為library,如果主工程與 library**都需要引用Jar support-v4.jar**,不能直接新增Jar引用,必須要為此公共Jar建立一個Library,然後兩個工程都引用此library,否則在編譯Android過程中提示 此Jar already added Exception
    –新建一個module(file-new module-android library)然後為這個module從dependencies處add- library,選V4和V7。然後其他各個需要V4或V7包的module都從dependencies處add-module來引用這個module(不直接引用v4和v7)

    錯誤9:V4、V7等包衝突(java.exe finished with non-zero exit value 2 、has already exists等)
    1、新建module library_support ,引用V4 V7
    2、引用的開源lib全新增依賴為這個module,間接引用V4 V7(即錯誤8裡的解決方法),並把新增library_support的這一項的scope改為provided(不是改support的,是改依賴support的),讓他只給自己的lib用,不給別人用。
    3、在./build/intermediates/dex-cache/cache.xml 中找到所有關於v4 v7的包定義全部刪掉(假如有的話)
    4、假如主專案也依賴V4 V7的話就要也給主專案依賴library_support了(因為引用的lib裡的V4和V7都是私有的,不能間接給主專案用),但主專案的library_support依賴必須為compile
    5、clean project
    6、假如有報錯如在某個開源lib的build-intermediates-manifest-androidTest-debug-androidmanifest.xml檔案有報錯則刪除那個報錯的沒見過的標籤(instrumentation),此時不要clear project!否則還會再生成。直接run project。

    錯誤10.主專案假如新增maven裡的遠端專案時,假如提示遠端專案的minversion大於主專案的minversion,則需要在主專案的manifest中的 uses-sdk元素中新增 tools:overrideLibrary = “com.soundcloud.android.crop,com.ikimuhendis.ldrawer”

    錯誤11.假如提示錯誤找不到drawable-iclauncher(因為新版studio中圖片放在mipmap而不是drawable中)則需要在新專案的manifest的application標籤下新增tools:replace=”android:icon”

    錯誤12、打包時報a problem was found with the configuration of task。。。錯誤
    1。clear專案
    2.打包時的key store path要寫全路徑!

    錯誤13、libs裡的jar包不能展開並且在專案中無法引用
    如圖
    解決方法:sync一下就行了

    錯誤14、 1 .Duplicate files copied in APK META-INF/LICENSE.txt

    android {

    packagingOptions {
    exclude 'META-INF/LICENSE.txt'
    }
    

    }
    My logcat: log Execution failed for task ‘:Prog:packageDebug’.
    Duplicate files copied in APK META-INF/LICENSE.txt File 1: /home/scijoker/AndroidStudioProjects/ProgProject/Prog/libs/httpclient-4.1.1.jar File 2: /home/scijoker/AndroidStudioProjects/ProgProject/Prog/libs/httpclient-4.1.1.jar

    解決方法
    在主專案app的build.gradle新增

    android {    
        packagingOptions {  
            exclude 'META-INF/DEPENDENCIES.txt'  
            exclude 'META-INF/LICENSE.txt'  
            exclude 'META-INF/NOTICE.txt'  
            exclude 'META-INF/NOTICE'  
            exclude 'META-INF/LICENSE'  
            exclude 'META-INF/DEPENDENCIES'  
            exclude 'META-INF/notice.txt'  
            exclude 'META-INF/license.txt'  
            exclude 'META-INF/dependencies.txt'  
            exclude 'META-INF/LGPL2.1'  
        }  
    } 
       

      錯誤15、
      異常提示:
      應用在Android Studio Build的時候,丟擲瞭如下異常:
      Error:Execution failed for task ‘:app:processDebugManifest’.

      Manifest merger failed : uses-sdk:minSdkVersion 8 cannot be smaller than version 9 declared in library [jp.wasabeef:blurry:1.0.0]
      /Users/xxx/xxx/app/build/intermediates/exploded-aar/jp.wasabeef/blurry/1.0.0/AndroidManifest.xml
      Suggestion: use tools:overrideLibrary=”jp.wasabeef.blurry” to force usage
      錯誤原因:
      出現這個錯誤的原因是我引入的第三方庫最低支援版本高於我的專案的最低支援版本,異常中的資訊顯示:我的專案的最低支援版本為8(Android 2.2),而第三方庫的最低支援版本為9(Android 2.3),所以丟擲了這個異常。

      解決辦法:
      在AndroidManifest.xml檔案中 標籤中新增

      <uses-sdk tools:overrideLibrary="xxx.xxx.xxx"/>
        

        其中的xxx.xxx.xxx為第三方庫包名,如果存在多個庫有此異常,則用逗號分割它們,例如:

        <uses-sdk tools:overrideLibrary="xxx.xxx.aaa, xxx.xxx.bbb"/>
          

          這樣做是為了專案中的AndroidManifest.xml和第三方庫的AndroidManifest.xml合併時可以忽略最低版本限制。