Android 14安装APK时“Package installer keeps stopping”错误求助
Android 14真机安装APK时Package installer崩溃问题
我的Kotlin Android应用在Android 13及以下版本能正常安装运行,但在Android 14真机上安装APK时,出现“Package installer keeps stopping”错误。模拟器上运行正常,真机无法完成安装。错误截图显示系统提示Package installer停止运行。
项目Manifest文件
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <uses-feature android:name="android.hardware.camera" android:required="false" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/> <uses-permission android:name="android.permission.READ_MEDIA_AUDIO"/> <uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <application android:name=".MyApp" android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" android:icon="@drawable/app_logo" android:label="@string/app_name" android:roundIcon="@drawable/app_logo" android:supportsRtl="true" android:theme="@style/Theme.CUCApplication" android:usesCleartextTraffic="true" tools:targetApi="31"> <activity android:name=".ui.activities.MapsActivity" android:exported="false" /> <meta-data android:name="com.google.android.geo.API_KEY" android:value="" /> <activity android:name=".ui.activities.VideoViewActivity" android:exported="false" /> <activity android:name=".ui.activities.ImageViewActivity" android:exported="false" /> <activity android:name=".ui.activities.CallingActivity" android:exported="false" /> <service android:name=".call.CallService" android:enabled="true" android:exported="false" /> <activity android:name=".ui.activities.GroupCallActivity" android:exported="false" /> <activity android:name=".ui.activities.MessageInfoActivity" android:exported="false" /> <service android:name=".notifications.FcmService" android:enabled="true" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> <activity android:name=".ui.activities.SelectChatsActivity" android:exported="false" /> <activity android:name=".ui.activities.CallActivity" android:exported="false" /> <activity android:name=".ui.activities.CreateGroupActivity" android:exported="false" /> <activity android:name=".ui.activities.RegistrationActivity" android:exported="false" /> <activity android:name=".ui.activities.LoginActivity" android:exported="false" android:label="@string/title_activity_login" /> <activity android:name=".ui.activities.MessageActivity" android:exported="false" android:label="@string/title_activity_message" android:theme="@style/Theme.CUCApplication" /> <activity android:name=".ui.activities.StartupActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity" android:exported="false" android:theme="@style/Theme.CUCApplication" /> <receiver android:name=".di.NotificationBroadcastReceiver" android:exported="false"> <intent-filter> <action android:name="ooo" /> </intent-filter> </receiver> <receiver android:name=".di.NotificationReplyReceiver" android:exported="false"> <intent-filter> <action android:name="replyy" /> </intent-filter> </receiver> <receiver android:name=".db.RoomDbCleaner" android:exported="false"> <intent-filter> <action android:name="ooo" /> </intent-filter> </receiver> <receiver android:name=".di.AlarmSchedulerBootReceiver" android:enabled="false" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> </application> </manifest>
Gradle(app)配置
import org.jetbrains.kotlin.js.facade.exceptions.TranslationRuntimeException plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("kotlin-kapt") id("com.google.gms.google-services") id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") } android { namespace = "com.dev.cucapp" compileSdk = 34 defaultConfig { applicationId = "com.dev.cucapp" minSdk = 24 targetSdk = 34 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } buildFeatures { viewBinding = true dataBinding = true } } dependencies { implementation("androidx.core:core-ktx:1.9.0") implementation("androidx.appcompat:appcompat:1.6.1") implementation("com.google.android.material:material:1.9.0") implementation("androidx.constraintlayout:constraintlayout:2.1.4") implementation("androidx.legacy:legacy-support-v4:1.0.0") implementation("androidx.annotation:annotation:1.7.0") implementation("com.google.firebase:firebase-messaging:23.3.0") implementation("com.google.android.gms:play-services-maps:18.2.0") implementation("com.google.android.gms:play-services-location:21.1.0") testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") //data store & prefernces store implementation("androidx.datastore:datastore-preferences:1.0.0") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9") //lifecycle cscope implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.6.2") implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2") //recyclerview implementation("androidx.recyclerview:recyclerview:1.3.2") //image library implementation("com.github.dhaval2404:imagepicker:2.1") //retrofit library implementation("com.squareup.retrofit2:retrofit:2.9.0") implementation("com.squareup.retrofit2:converter-gson:2.9.0") implementation("com.squareup.retrofit2:converter-scalars:2.7.1") //gson implementation("com.google.code.gson:gson:2.10.1") // Room val room_version = "2.5.2" implementation("androidx.room:room-runtime:$room_version") implementation("androidx.room:room-ktx:$room_version") kapt("androidx.room:room-compiler:$room_version") //socket implementation ("io.socket:socket.io-client:2.1.0") { // excluding org.json which is provided by Android exclude(group="org.json", module="json") } //videosdk.live implementation("live.videosdk:rtc-android-sdk:0.1.21") //notify implementation("io.karn:notify:1.4.0") //signal implementation(files("libs/libsignal-android-0.32.1.aar")) //video picker val pickerVersion = "1.1.0" implementation("com.github.FunkyMuse.MediaPicker:core:$pickerVersion") implementation("com.github.FunkyMuse.MediaPicker:videopicker:$pickerVersion") }
排查与解决方案
1. 清理重复权限声明
Manifest中重复声明了CAMERA和INTERNET权限,Android 14对Manifest解析校验更严格,重复权限可能触发安装失败。删除以下重复行:
- 第二行
<uses-permission android:name="android.permission.CAMERA" /> - 第二行
<uses-permission android:name="android.permission.INTERNET" />
2. 修复APK安装环境问题
- 重新生成签名完整的Release APK,确保签名过程无错误
- 在真机上打开“允许安装未知应用”的全部相关选项,部分设备需单独授予Package installer权限
- 进入系统设置,找到Package installer应用,清理其缓存和数据后重试安装
3. 升级老旧第三方依赖
部分低版本库未适配Android 14,建议升级:
- 将
kotlinx-coroutines-android和kotlinx-coroutines-core从1.3.9升级到最新稳定版 - 检查
live.videosdk:rtc-android-sdk官方是否有Android 14适配版本,替换当前0.1.21版本 - 升级
com.github.dhaval2404:imagepicker到最新版,确保支持Android 14媒体权限逻辑
4. 验证备份规则文件
Android 14对备份规则格式要求更严格,检查data_extraction_rules.xml和backup_rules.xml是否存在语法错误。若暂时不需要备份功能,可移除Manifest中android:dataExtractionRules和android:fullBackupContent属性测试。
5. 获取安装日志定位问题
通过ADB命令抓取安装时的详细错误日志,明确崩溃原因:
adb logcat | grep -i "PackageInstaller"
内容的提问来源于stack exchange,提问作者Sheraz Ahmed
相关产品推荐
相关产品推荐

