【问题标题】:Failure [INSTALL_FAILED_USER_RESTRICTED: Invalid apk] in androidandroid中的失败[INSTALL_FAILED_USER_RESTRICTED: Invalid apk]
【发布时间】:2018-09-13 13:53:54
【问题描述】:

我使用的是 Android Studio 3.0.1。
当我尝试运行应用程序时

INSTALL_FAILED_USER_RESTRICTED:apk 无效

发生错误。

我还禁用了 Instant Run。

我再次运行应用程序,但发生同样的错误。

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: Invalid apk]

$ adb shell pm uninstall com.android.buyforfund
DELETE_FAILED_INTERNAL_ERROR
安装 APK 时出错

【问题讨论】:

  • 使用 SU(用户)登录,然后尝试安装。
  • 是什么意思?我不明白。 @HimeshGoswami
  • @unnati..您使用的是哪个设备(品牌/型号)?

标签: android android-studio apk adb failed-installation


【解决方案1】:

我有同样的问题,我在手机上向 Google 发送了反馈,我会说这是一个错误。在我的情况下,最好的解决方案是取消该对话框,然后重新运行,它总是在取消后第二次尝试。

根据您使用的手机,我认为问题出在手机 (Google) 方面。不知道是一般的谷歌问题还是特定的硬件手机,我用的是“小米红米5”。

在我的情况下,禁用即时运行实际上有效,但这不是它的目的,这只是一个肮脏的解决方法。

编辑: 确保你没有像

这样的东西
android:debuggable="false"

在您的清单中。

【讨论】:

  • Redmi 5 plus 设备在这里,同样的问题,取消并再次安装有帮助,每隔一次安装都会发生
【解决方案2】:

确保您已启用以下选项:

设置 > 其他设置 > 开发者选项

  1. USB调试
  2. 通过 USB 安装
  3. USB 调试(安全设置)

【讨论】:

  • 所有选项都已启用。
  • 试试这个命令:adb shell pm uninstall com.android.buyforfund.debug看看结果是成功还是失败?
  • adb shell "su" 比尝试安装
【解决方案3】:

在 Mi 9 手机上使用 Xiaomis MIUI 10 时,其他答案均不适合我。

除了通常的(例如在开发者选项中启用USB debuggingInstall via USB),其他问题的答案建议关闭MIUI optimization。虽然这起到了作用,但我对此并不满意。所以我做了一些挖掘,得出了以下结论:

所述错误仅在您第二次部署应用时发生,之后在将同一应用部署到该手机时每隔一次发生一次。

要解决这个问题,我可以再次点击 Run / 按 Shift + F10 或拔下电话并再次插入。这些似乎都不可行。因此,我进行了更多挖掘,结果发现,当您每次构建应用程序时都在 build.gradle 文件中增加 versionCode 时,MIUI 10 不会抱怨并让您按照预期安装应用程序。甚至 Android Studios Instant Run 也能正常工作。虽然手动执行此操作同样烦人。

所以我采取了一些想法,从this question 自动增加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!")
}

现在,每次您通过点击RunInstant Run 构建应用程序时,您的versionCode / VERSION_BUILD 都会增加。 如果您构建一个版本,您的VERSION_PATCH 也会增加,同时将您的versionNamex.y.z 更改为x.y.z+1(即1.2.3 变为1.2.4)。要更改VERSION_MAJORx)和VERSION_MINORy),请编辑您可以在模块文件夹中找到的version.properties 文件。如果您没有更改模块名称,则它称为app,因此此文件位于app/version.properties

【讨论】:

  • 谢谢!我可以确认这个解决方案在 MIUI 10 上完美运行
【解决方案4】:

如果您的目标是 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' 及更高版本上运行。

【讨论】:

    【解决方案5】:

    如果你已经完成了从启用到flutter clean等所有操作,仍然可能会出现此错误的人。 我通过检查清单并添加正确的值来解决此错误,因为我更改了清单中不支持的内容,后来忘记更改它。 因此,如果您更改了主题、drawable 或任何资源文件中的某些内容,请先检查一下。

    【讨论】:

      猜你喜欢
      • 2017-03-24
      • 2018-11-07
      • 2018-09-20
      • 1970-01-01
      • 2022-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多