如何解决Android Manifest中app.digiedu.android的内容提供器授权冲突
以下是针对该问题的排查和解决步骤:
检查合并后的Manifest文件
仅查看主Manifest可能看不到依赖库注入的配置,执行命令./gradlew app:mergeDebugAndroidManifest生成合并后的完整Manifest文件(路径一般在app/build/intermediates/merged_manifests/debug/AndroidManifest.xml),搜索com.example.app,定位所有残留的旧包名引用,特别是内容提供器的android:authorities属性。强制覆盖AndroidX Startup的内容提供器配置
AndroidX Startup的授权默认是${applicationId}.androidx-startup,如果合并后仍显示旧值,手动在主Manifest中添加以下代码强制替换:<provider android:name="androidx.startup.InitializationProvider" android:authorities="app.digiedu.android.androidx-startup" android:exported="false" tools:node="replace"> <meta-data android:name="androidx.startup.InitializationProvider" android:value="androidx.startup" /> </provider>注意要在Manifest根标签里添加
xmlns:tools="http://schemas.android.com/tools",才能使用tools:node="replace"属性。确认自定义Content Provider的所有配置
检查所有自定义Provider的android:authorities是否已改为app.digiedu.android.provider,同时同步修改代码中ContentResolver调用的Uri(比如content://app.digiedu.android.provider/xxx),确保代码与Manifest配置一致。同步所有模块的namespace/applicationId
若使用AGP 7.0+,确保所有模块(包括library)的build.gradle里的namespace都设置为app.digiedu.android;若为旧版本,application模块的applicationId和library模块的package要统一改成新包名,避免依赖模块的组件使用旧包名。清理构建缓存并重新编译
执行./gradlew clean清除旧构建缓存,然后重新生成APK/AAB,避免缓存中的旧配置干扰上传流程。搜索项目中所有旧包名引用
用IDE的全局搜索功能(如Android Studio的Ctrl+Shift+F)搜索整个项目里的com.example.app,检查是否有遗漏的配置文件(如gradle.properties、strings.xml)或代码中的硬编码Uri,逐一替换为app.digiedu.android。
内容的提问来源于stack exchange,提问作者Radwa Khan

