簡體   English   中英

android中的失敗[INSTALL_FAILED_USER_RESTRICTED: Invalid apk]

[英]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_MAJORx )和VERSION_MINORy ),請編輯可在模塊文件夾中找到的version.properties文件。 如果您沒有更改模塊名稱,則稱為app因此該文件位於app/version.properties

確保您已啟用以下選項:

設置>其他設置>開發人員選項

  1. USB調試
  2. 通過USB安裝
  3. USB調試(安全設置)

如果您已經完成了從啟用到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM