Android Studio : Android旧工程问题import com.google.common.collect.ImmutableList;android:exported属性未配置无法上传到Google play console
设备/引擎:Mac(11.6)/cocos
开发工具:Android studio(4.1.2)
开发语言:java
开发需求:Android旧工程问题import com.google.common.collect.ImmutableList;android:exported属性未配置无法上传到Google play console;Default interface methods are only supported starting with Android N (–min-api 24): androidx.lifecycle.Lifecycle androidx.lifecycle.LifecycleRegistryOwner.getLifecycle()
1.com.google.common.collect不存在
import com.google.common.collect.ImmutableList;
这个问题是因为你在项目中使用了 import com.google.common.collect.ImmutableList;,但是你的项目没有包含 Google Guava 库造成的
解决方法:
1.添加 Google Guava 依赖
1)使用Maven,可以在pom.xml文件中添加依赖项
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1.1-jre</version>
</dependency>
</dependencies>
2)使用Gradle,在build.gradle文件中添加依赖项
dependencies {
implementation 'com.google.guava:guava:31.0.1-android'
}
2.刷新依赖项
如果你的项目使用的是 IDE(如 IntelliJ IDEA 或 Eclipse),请确保刷新项目的依赖,以便 IDE 可以正确地加载 Guava 库。
3.重新编译工程
如果你的项目已经正确添加了依赖,但仍然无法找到 ImmutableList 类,可能是因为编译器缓存等问题。尝试重新编译你的项目,看看问题是否解决。
如果以上步骤都试了,但仍然无法找到 ImmutableList 类,那可能是因为依赖版本不匹配、依赖下载失败等原因。你可以检查 Maven 或 Gradle 日志,以及 IDE 的依赖管理界面,来查看是否有错误信息或下载失败的情况。
2.You uploaded an APK or Android App Bundle which has an activity, activity alias, service or broadcast receiver with intent filter, but without ‘android:exported’ property set. This file can’t be installed on Android 12 or higher. See: developer.android.com/about/versions/12/behavior-changes-12#exported
这个错误消息表明上传的 APK 或 aab 中存在具有意图过滤器的活动、活动别名、服务或广播接收器,但没有设置 ‘android:exported’ 属性。这可能导致在 Android 12 或更高版本上无法安装此文件。此错误是由于 Android 12 引入的更严格的导出组件行为规则所导致的。
解决方法:
在 AndroidManifest.xml 文件中添加 ‘android:exported’ 属性
<activity
……
android:exported="true"> <!-- 或者 android:exported="false" -->
<!-- 其他属性和过滤器 -->
……
</activity>
添加好后重新编译即可
3.Default interface methods are only supported starting with Android N (–min-api 24): androidx.lifecycle.Lifecycle androidx.lifecycle.LifecycleRegistryOwner.getLifecycle()
这个问题的原因是你使用的一个接口方法;只能在API 24及以上才能被支持,所以只需要更新一下你的最低API即可
解决办法:
升级最低API级别
在app下的build.gradle 文件中将 minSdkVersion 更新为 24 或更高即可
android {
defaultConfig {
minSdkVersion 24
// ...
}
// ...
}
如果你想要支持较低版本的Android;应该避免使用androidx.lifecycle.LifecycleRegistryOwner接口,如果必须要用,可以考虑使用 AndroidX Lifecycle 扩展的支持库版本。在app的build.gradle 文件中添加以下依赖项
implementation "android.arch.lifecycle:extensions:1.1.1"
如果你也需要处理一些比较老的工程项目遇到以上问题,可以作为参考
希望能给大家带来帮助!!!有什么问题需要讨论的可以评论私信欢迎讨论~