[英]Android Studio: Failure [INSTALL_FAILED_USER_RESTRICTED]
[英]Failure [INSTALL_FAILED_USER_RESTRICTED: Invalid apk] in android
我正在使用 Android Studio 3.0.1。
當我嘗試運行應用程序時
INSTALL_FAILED_USER_RESTRICTED:無效的apk
發生錯誤。
我還禁用了即時運行。
我再次運行應用程序,但發生同樣的錯誤。
04/04 10:59:08:啟動應用程序
$ adb push G:\Android\Fundraiser\BuyForFund\app\build\outputs\apk\debug\app-debug.apk /data/local/tmp/com.android.buyforfund
$ adb shell pm install -t -r "/data/local/tmp/com.android.buyforfund"
失敗 [INSTALL_FAILED_USER_RESTRICTED:無效的 apk]$ adb shell 下午卸載 com.android.buyforfund
DELETE_FAILED_INTERNAL_ERROR
安裝 APK 時出錯
我有同樣的問題,我在手機上向谷歌發送反饋,會說這是一個錯誤。 在我的情況下,最好的解決方案是取消該對話,然后重新運行,它取消后始終在第二次嘗試。
根據您使用的手機,我會假設問題出在手機(谷歌)方面。 目前還不確定是否存在Google常見問題或特定硬件手機,我使用的是“小米Redmi 5”。
禁用即時運行實際上在我的情況下工作,但這不是它的目的,這只是一個骯臟的解決方法。
編輯:確保您沒有類似的東西
android:debuggable="false"
在你的清單中。
在Mi 9手機上使用Xiaomis MIUI 10
,其他任何答案都沒有。
除了通常的(如啟用USB debugging
和在開發人員選項中Install via USB
),其他問題的答案建議關閉MIUI optimization
。 雖然這樣做了,但我對此並不滿意。 所以我做了一些挖掘並得出以下結論:
所描述的錯誤僅在您第二次部署應用程序時發生,之后在將相同應用程序部署到該電話時每隔一段時間發生一次。
為了解決這個問題,我可以再次點擊Run
/ Press Shift + F10
,或者重新插上電源並重新插入手機。 這似乎都不可行。 所以我做了一些挖掘,當你每次構建應用程序時在build.gradle
文件中增加versionCode
時, MIUI 10
都不會抱怨,讓你按照預期安裝應用程序。 甚至Android Studios Instant Run
可以。 雖然手動執行此操作同樣令人討厭。
所以我采取了一些想法從這個問題中自動增加versionCode
並修改了build.gradle
(模塊的那個,而不是你項目的那個)。 您可以按照以下簡單步驟執行相同操作:
更換
defaultConfig {
applicationId "your.app.id" // leave it at the value you have in your file
minSdkVersion 23 // this as well
targetSdkVersion 28 // and this
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
同
def versionPropsFile = file('version.properties')
def value = 0
Properties versionProps = new Properties()
if (!versionPropsFile.exists()) {
versionProps['VERSION_MAJOR'] = "1"
versionProps['VERSION_MINOR'] = "0"
versionProps['VERSION_PATCH'] = "0"
versionProps['VERSION_BUILD'] = "0"
versionProps.store(versionPropsFile.newWriter(), null)
}
def runTasks = gradle.startParameter.taskNames
if ('assembleRelease' in runTasks) {
value = 1
}
if (versionPropsFile.canRead()) {
versionProps.load(new FileInputStream(versionPropsFile))
versionProps['VERSION_PATCH'] = (versionProps['VERSION_PATCH'].toInteger() + value).toString()
versionProps['VERSION_BUILD'] = (versionProps['VERSION_BUILD'].toInteger() + 1).toString()
versionProps.store(versionPropsFile.newWriter(), null)
// change major and minor version here
def mVersionName = "${versionProps['VERSION_MAJOR']}.${versionProps['VERSION_MINOR']}.${versionProps['VERSION_PATCH']}"
defaultConfig {
applicationId "your.app.id" // leave it at the value you have in your file
minSdkVersion 23 // this as well
targetSdkVersion 28 // and this
versionCode versionProps['VERSION_BUILD'].toInteger()
versionName "${mVersionName} Build: ${versionProps['VERSION_BUILD']}"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
}
else {
throw new GradleException("Could not read version.properties!")
}
現在,每次通過點擊Run
或“ Instant Run
構建應用程序時,您的versionCode
/ VERSION_BUILD
增加。 如果你構建一個版本,你的VERSION_PATCH
也會增加,你的versionName
也會從xyz
更改為xyz+1
(即1.2.3
轉為1.2.4
)。 要更改VERSION_MAJOR
( x
)和VERSION_MINOR
( y
),請編輯可在模塊文件夾中找到的version.properties
文件。 如果您沒有更改模塊名稱,則稱為app
因此該文件位於app/version.properties
。
確保您已啟用以下選項:
設置>其他設置>開發人員選項
如果您已經完成了從啟用到flutter clean等所有操作,對於那些仍然可能會收到此錯誤的人。 我通過檢查清單並添加正確的值來解決此錯誤,因為我更改了清單中不支持的內容,后來忘記更改它。 因此,如果您更改了主題、可繪制對象或任何資源文件中的某些內容,請先檢查一下。
如果你的目標是android'P',那么你的build.gradle文件應該是這樣的
android {
compileSdkVersion 'android-P'
defaultConfig {
applicationId "xyz.com"
minSdkVersion 16
targetSdkVersion 27
versionCode 1
versionName "1.0"
}
buildTypes {
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
targetSdkVersion必須為27才能在android'P'下運行您的應用程序,否則該應用程序只能在'P'及以上運行。
INSTALL_FAILED_USER_RESTRICTED:MIUI 9 及更高版本的 apk 步驟無效:
設置 -> 附加設置 -> 開發者選項 ->步驟 1:向下滾動 - 關閉“MIUI 優化”並重新啟動您的設備。 第 2 步:打開“USB 調試”第 3 步:打開“通過 USB 安裝”第 4 步:顯示推送通知,然后單擊 USB - 將 USB 配置設置為充電(MTP(媒體傳輸協議)是默認模式。即使在MTP 在某些情況下)。 請試試。
當根本問題不同時,我遇到了同樣的錯誤。
我的是我試圖在 Android 12 設備上安裝我的應用程序,而AndroidManifest.xml
文件沒有明確設置所有android:exported
屬性。 此處進一步解釋了此錯誤: https ://developer.android.com/about/versions/12/behavior-changes-12#exported
如果您的應用面向 Android 12 或更高版本並包含使用 Intent 過濾器的活動、服務或廣播接收器,則您必須為這些應用組件顯式聲明
android:exported
屬性。警告:如果活動、服務或廣播接收器使用意圖過濾器並且沒有明確聲明的
android:exported
值,則您的應用無法安裝在運行 Android 12 或更高版本的設備上。
在我將所需的android:exported
屬性添加到AndroidManifest.xml
文件后,錯誤得到解決。
在路徑的Androidmanifest.xml
文件中
應用程序/src/main/Androidmanifest.xml
在活動標簽中添加 android:exported="true"`。
樣本:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.example">
<application
android:label="example"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize"
android:exported="true">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.