Android各路問題集錦

自從Google發(fā)布AS 3.0以來,一直都在猶豫要不要升級,要不要升級,要不要升級!昨天手賤升級了之后,呵呵噠!前方無數(shù)個坑慢慢爬吧,僅以記錄自己遇到的關(guān)于AS 3.0來發(fā)過程中遇到的問題和解決方法。

1.錯誤如下

Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:Execution failed for task ':app:mergeDebugResources'.
> Error: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details

解決辦法
在項(xiàng)目的gradle.properties中加入:

android.enableAapt2=false

2.關(guān)于library依賴

圖片.png

背景:
build.gradle(module:library):

  buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

build.gradle(module:app):

  buildTypes {
        release {
            signingConfig signingConfigs.myconfig
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        greendao {
            schemaVersion 2
        }
    }

原因:app中buildTypes集合不是library的buildTypes集合子集,即app中buildType屬性greendao在依賴的library中找不到。
解決辦法:
在build.gradle(module:library)增加greendao

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        greendao{

        }
    }

3.關(guān)于多渠道打包錯誤

Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=xiaomiDebug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.

之前的打包方式:

applicationVariants.all { variant ->
       variant.outputs.each { output ->
           def outputFile = output.outputFile
           if (outputFile != null && outputFile.name.endsWith('.apk')) {
               File outputDirectory = new File(outputFile.parent);
               def fileName
               if (variant.buildType.name == "release") {
                   fileName = "app_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"
               } else {
                   fileName = "app_v${defaultConfig.versionName}_${releaseTime()}_debug.apk"
               }
               output.outputFile = new File(outputDirectory, fileName)
           }
       }
   }

修改成下面的方式:

applicationVariants.all { variant ->
    variant.outputs.all {
        if (variant.buildType.name == "release") {
            outputFileName = "app_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"
        } else {
            outputFileName = "app_v${defaultConfig.versionName}_${releaseTime()}_debug.apk"
        }
    }
}

4.錯誤如下

Error:Execution failed for task :app:processDebugAndroidTestResources.
> No slave process to process jobs, aborting

解決辦法
clean和rebuild都沒有成功后,直接點(diǎn)擊 File>Invalidate Caches/Restart后編譯通過

5.錯誤如下

Error:(12, 32) 錯誤: 程序包android.support.multidex不存在

解決辦法
在build.gradle文件里加上compile 'com.android.support:multidex:1.0.1'即可

6.錯誤如下

Error:Execution failed for task ':app:preDebugAndroidTestBuild'.
> Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved 
versions for app (26.1.0) and test app (27.1.1) differ. 
See https://d.android.com/r/tools/test-apk-dependency-conflicts.html for details.

解決辦法

android {
    ...
}
configurations.all {
    resolutionStrategy.force 'com.android.support:support-annotations:27.1.1'
}
dependencies {
    ...
}

7.錯誤如下

Vivo Oppo系列手機(jī)運(yùn)行安裝總是失敗

Failure [INSTALL_FAILED_TEST_ONLY]

解決辦法


圖片.png

在該處加入

...
#解決Vivo手機(jī)安裝失敗問題
android.injected.testOnly=false

8.全面屏適配

//在Manifest的application節(jié)點(diǎn)加入屬性
<application
    ...
    android:resizeableActivity="true"
    tools:targetApi="n"
    .../>

...
  <!--適配全面屏手機(jī)-->
  <meta-data android:name="android.max_aspect"
             android:value="2.1"/>
...

9.依賴

錯誤如下

Error: Could not find common.jar (android.arch.core:common:1.0.0).
       Searched in the following locations:https://jcenter.bintray.com/android/arch/core/common/1.0.0/common-1.0.0.jar

解決辦法 將google()放在最前面

  allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://jitpack.io' }
    }
}

10.導(dǎo)入項(xiàng)目錯誤

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
> More than one file was found with OS independent path 'META-INF/DEPENDENCIES'

解決辦法

android {
    ...
       packagingOptions {
              exclude 'META-INF/LICENSE'
              exclude 'META-INF/DEPENDENCIES'
    }
    ...
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容