Android问题集锦
记录Android开发中遇到的问题
repository ‘Gradle Libs‘ was added by unknown code
settings.gradle中,去除repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
dependencyResolutionManagement {
// repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
gradle 编译报错Manifest merger failed with multiple errors
原因
由于多个module合并AndroidManifest.xml导致,一般是由于没有设置android:exported属性
解决
1、自己项目的问题,通过AndroidManifest.xml的uses-permission功能查看未设置exported的
2、第三方依赖的问题,我是通过注释第三方依赖查找出来有问题的依赖,查到问题的配置地方
用下面配置修复
<!--以下:android 12 加入exported-->
<!--com.umeng.umsdk:vivo-umengaccs:1.1.6-->
<receiver
android:name="org.android.agoo.vivo.PushMessageReceiverImpl"
android:exported="false"
tools:node="merge" />
<!--com.umeng.umsdk:oppo-push:3.0.0,com.umeng.umsdk:oppo-umengaccs:1.0.8-fix-->
<service
android:name="com.heytap.msp.push.service.CompatibleDataMessageCallbackService"
android:exported="false"
tools:node="merge" />
<service
android:name="com.heytap.msp.push.service.DataMessageCallbackService"
android:exported="false"
tools:node="merge" />
注意
等以后依赖升级后,若第三方依赖的新版本加入了exported,记得再去掉此处配置,否则也会爆merger failed
gradle编译报错StackOverflowError
升级gradle-7.3.3后,编译报错
java.lang.StackOverflowError
at com.google.common.collect.AbstractMapEntry.hashCode(AbstractMapEntry.java:56)
at com.google.common.collect.Sets.hashCodeImpl(Sets.java:1712)
at com.google.common.collect.ImmutableMap.hashCode(ImmutableMap.java:873)
at com.android.build.gradle.internal.ide.dependencies.ResolvedArtifact.hashCode(ResolvedArtifact.kt)
at com.android.build.gradle.internal.ide.dependencies.LibraryServiceImpl.getLibrary(LibraryService.kt:116)
at com.android.build.gradle.internal.ide.dependencies.FullDependencyGraphBuilder.handleDependency(FullDependencyGraphBuilder.kt:187)
原因:
由于项目中用到了Umeng Push,里面的华为包导致
implementation 'com.huawei.hms:push:5.3.0.304'
implementation 'com.umeng.umsdk:huawei-umengaccs:1.3.5'
解决
需要升级到新版
implementation 'com.huawei.hms:push:6.3.0.302'
implementation 'com.umeng.umsdk:huawei-umengaccs:1.3.7'