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"

如果你也需要处理一些比较老的工程项目遇到以上问题,可以作为参考
希望能给大家带来帮助!!!有什么问题需要讨论的可以评论私信欢迎讨论~

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐