原创

AndroidStudio 编译中遇到问题总结2

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://gaolei.blog.csdn.net/article/details/82706401

1、问题:Android Studio3.0以后,在项目编译的时候发现Gradle中报错了,错误如下,

Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated

原因:3.0里面批量修改APK名字的配置有变化

解决方法:可参考:https://blog.csdn.net/uu00soldier/article/details/78440953

2、问题:AndroidStudio3.0 Unable to resolve dependency for ':app@betaUnitTest/compileClasspath': Could not

原因1:app的buildTypes 和依赖library中gradle的buildTypes设置的不一样,library中缺少debug

app中:
buildTypes {
        debug {
                ....
        }
        release {
                ....
        }
    }
library中:
 buildTypes {
        release {
                ....
        }
    }

​

解决方法:可参考:https://blog.csdn.net/monkin2011/article/details/78427598

原因2:我遇到的是项目的build.gradle里repositories缺少google()

解决办法2:

项目中build.gradle有这句话么?别切google()和jcenter()都不能少
repositories {
        google()
        jcenter()
    }

3、问题:微信开放平台SDK的Demo运行时报错:Unable to resolve dependency for ':app@debug/compileClasspath': Could not download wechat-sdk-android-with-mta.jar (com.tencent.mm.opensdk:wechat-sdk-android-with-mta:5.1.6): No cached version available for offline modess

原因:gradle设置为了Offline模式

解决方法:gradle的Offline work不选中。如下图,

4、问题: 找不到符号 符号:   方法 checkSelfPermission(BaseActivity,String) 位置: 类 ContextCompat

原因:这个方法是为了解决Android6.0以上的运行时权限问题,这个错误是因为libs下存在android-suport-v4.jar包,和build.gradle中引入的v4包冲突了,所以会产生这上面的这种错误

解决方法:可参考,https://blog.csdn.net/u011734444/article/details/52492187

5 Caused by: java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

原因:依赖library重复导致

解决方法:可参考,https://blog.csdn.net/qq_33445600/article/details/78550455?locationNum=7&fps=1

6、问题:Warning: there were * unresolved references to classes or interfaces.

原因:代码warn 导致

解决方法:在proguard-rules.pro这个文件了加了一行

 -ignorewarnings

7、问题:Android 打包时出现 java.lang.OutOfMemoryError: GC overhead limit exceeded 的解决办法

原因:内存溢出

解决方法:在graldr中添加如下信息即可:

android {
      dexOptions {
            incremental true
            javaMaxHeapSize "4g"
        }

8、问题:Unable to load class 'org.gradle.api.internal.component.Usage'

原因:这是由于插件兼容问题导致的错误

解决方法:如果有com.novoda:bintray-release请把版本修改为0.5.0,如下图

9、问题:集成友盟分享(UShare),新浪微博出现崩溃,报错

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.xuetangx.mobile-2/base.apk", zip file "/data/app/
...
/lib/arm64-v8a, /vendor/lib64, /system/lib64]]] couldn't find "libweibosdkcore.so"
 at java.lang.Runtime.loadLibrary(Runtime.java:367)
 at java.lang.System.loadLibrary(System.java:1076)

原因:其实有许多问题认真分析日志都可以看出来,入这个可以看到couldn't find "libweibosdkcore.so"。虽然你也有但是我们看到程序实在arm64-v8a中找的,而你的jniLib中没有,arm64-v8a是其他module有,所以不同意导致寻找不到

解决方法:统一不同module种CPU架构对应一个ABI:armeabi,armeabi-v7a,x86,mips,arm64- v8a,mips64,x86_64。如都是armeabi或armeabi-v7a

10、问题:retrofit 2.0 代码混淆后返回空数据

解决方法:使Entity数据不做混淆,如下图

11、问题:Failed to resolve: com.github.franmontiel:PersistentCookieJar:v1.0.1

解决方法:project的gradle中加入   maven { url "https://jitpack.io" },如下

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

12、问题:Could not find manifest-merger.jar (com.android.tools.build:manifest-merger:26.0.1

解决方法:在项目的build.gradle文件中使google()的位置在jcenter()的前面,如下

buildscript {
    repositories {
        maven {
            url "https://maven.google.com"
        }
        google()
        jcenter()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
    }
}

// Allow plugins to declare Maven dependencies via build-extras.gradle.
allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
}

13、问题:

Unexpected scopes found in folder '/Users/gaolei/gaolei/Android/Project/ppzc_app_android/ICarsclub/build/intermediates/transforms/AspectTransform/debug'. Required: SUB_PROJECTS. Found: EXTERNAL_LIBRARIES, PROJECT, SUB_PROJECTS

解决方式:去掉InstantRun,如下图

14、问题:No toolchains found in the NDK toolchains folder for ABI with prefix

解决方法:新版本的NDK与3.0及以前旧版的Android Gradle plugin插件不兼容,其实解决方法很简单,就是修改build.gradle中的红字部分,改为3.1以上版本即可,如下

dependencies {
    classpath 'com.android.tools.build:gradle:3.2.0'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

15、问题:com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

解决方法:

步骤一:在app: build.gradle中添加multidex配置

android {
    defaultConfig {
	    ...
        multiDexEnabled true
    }
    dexOptions {
        incremental true
    }
}
dependencies {
    ...
    compile 'com.android.support:multidex:1.0.3'
}

步骤二:继承MultiDexApplication 或者在Application的attachBaseContext方法中加入

MultiDex.install(this);

16、问题:项目依赖的sdk版本从26升级到28后报错,java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource compilation failed

解决方法:app默认的依赖不全导致,可以把运行成功的app的默认依赖拷贝过来,如下

implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

17、问题:Execution failed for task ':app:mergeDebugResources'.

解决方法:由于logcat或者build没有给出具体详细的错误信息,无法轻易找出问题。因为和resource有关可使用命令:gradlew compileDebugSources --stacktrace -info。这样就会有详细的错误信息。其它错误信息可使用

'compileDebugAidl',
'compileDebugAndroidTestAidl',
'compileDebugAndroidTestJavaWithJavac',
'compileDebugAndroidTestNdk',
'compileDebugAndroidTestRenderscript',
'compileDebugAndroidTestShaders',
'compileDebugAndroidTestSources',
'compileDebugJavaWithJavac',
'compileDebugNdk',
'compileDebugRenderscript',
'compileDebugShaders',
'compileDebugSources',
'compileDebugUnitTestJavaWithJavac',
'compileDebugUnitTestSources'.

18、问题: Supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath:

解决方法:把library模块的依赖包implementation改为api,因为implementation依赖的包只能在本模块使用,api依赖的包可供其它模块使用

 implementation 'com.squareup.okhttp3:okhttp:3.14.2'
改为
api 'com.squareup.okhttp3:okhttp:3.14.2'

19、问题:Duplicate class android.support.v4...

解决方法:是因为项目中依赖的第三方library中由多个library有依赖android.support.v4导致重复,引起的错误。

可通过命令查看依赖:./gradlew -q sample:dependencies --configuration debugCompileClasspath

文章最后发布于: 2018-09-14 18:24:44
展开阅读全文
0 个人打赏
私信求帮助

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览