解决:The application could not be installed: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
一般這種情況,你都可以在清單文件頂部找到類似如下的代碼:
?他的作用是:在AndroidManife.xml 中添加android:sharedUser可以將不同的程序加入到同一個(gè)進(jìn)程中,方便數(shù)據(jù)的共享。
但是有個(gè)前提是需要簽名相同
而報(bào)這個(gè)錯(cuò)有可能是因?yàn)楹灻拖到y(tǒng)簽名不相同, android.uid.system是表示系統(tǒng)進(jìn)程
解決方案
1.如果是自己定制的系統(tǒng)可以使用系統(tǒng)簽名,如果是上傳到應(yīng)用市場(chǎng)的,每個(gè)應(yīng)用市場(chǎng)都不相同,所以可能就用不了
2.如果不想和系統(tǒng)一個(gè)進(jìn)程,就刪掉這行代碼
擴(kuò)展
?從as運(yùn)行的時(shí)候有時(shí)候會(huì)出現(xiàn):?Couldn't terminate the existing process for com.xxx.xxx? 或者 一運(yùn)行就wait for devxxx
我這邊也有兩個(gè)解決方案:
1.如果暫時(shí)測(cè)試用不到和系統(tǒng)進(jìn)程相關(guān)的事,就暫時(shí)把這行代碼刪掉
2.如果需要測(cè)試和系統(tǒng)進(jìn)程相關(guān)的事,則每次運(yùn)行之前先把應(yīng)用卸載掉,然后在安裝,手動(dòng)可能比較麻煩,但是寫到運(yùn)行的任務(wù)中就比較方便了,加到任務(wù)中的方式如下:
先在app:build.gradle中加入如下代碼: 就是使用adb卸載當(dāng)前的app(如果執(zhí)行不了的請(qǐng)自行配置adb環(huán)境變量)
Groovy:
task unInsApk() {doLast {Runtime.getRuntime().exec("adb uninstall $android.defaultConfig.applicationId").waitFor()} }kts:
tasks.register<Task>("unInsApk") {doLast {Runtime.getRuntime().exec("adb uninstall ${android.defaultConfig.applicationId}").waitFor()} }?
?然后點(diǎn)上下箭頭或拖動(dòng),將卸載app的task移動(dòng)到執(zhí)行安裝apk之前,這樣就可以先卸載在編譯安裝apk了
?然后就可以好好的玩耍了,親測(cè)可用
ps:如果下面一直提示wait to devxxx的話可以先clean project ,然后重啟所有as,卸載在重新運(yùn)行一般就可以了
發(fā)現(xiàn)如果手動(dòng)編譯并安裝就不會(huì)出現(xiàn)wait to devxxx,所以我們也可以直接寫一個(gè)task,每次運(yùn)行都使用它,就可以一鍵部署apk了,代碼如下(可能需要根據(jù)你的目錄小改)
Groovy:
task buildAndInstallApk(dependsOn: assemble) {doLast {def apkDir = new File(getBuildDir(), "outputs/apk/release")def apkFile = nullfor (File file : apkDir.listFiles().sort()) {if (file.name.lastIndexOf(".apk") > 0) {apkFile = filebreak}}Runtime.getRuntime().exec("adb install -r -d -t $apkFile.absolutePath").waitFor()//如果需要啟動(dòng)某個(gè)頁(yè)面的話,可以用上一行的代碼執(zhí)行以下命令:adb shell am start xxx,命令參考:https://blog.csdn.net/qq_33505109/article/details/79515747} }kts:
tasks.register("buildAndInstallApk") {doLast {val apkFile = File(buildDir, "outputs/apk/release").listFiles()?.sorted()?.find {it.name.endsWith(".apk")} ?: throw RuntimeException("找不到apk文件")Runtime.getRuntime().exec("adb install -r -d -t ${apkFile.absolutePath}").waitFor()//如果需要啟動(dòng)某個(gè)頁(yè)面的話,可以用上一行的代碼執(zhí)行以下命令:adb shell am start xxx,命令參考:https://blog.csdn.net/qq_33505109/article/details/79515747} }.dependsOn("assemble")ps:如果有更好的方式請(qǐng)留言
總結(jié)
以上是生活随笔為你收集整理的解决:The application could not be installed: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 好用的Span(富文本)api
- 下一篇: AI 趋势