Android Studio 故障[安装失败用户限制:无效的apk]在android

1aaf6o9v  于 2023-03-30  发布在  Android
关注(0)|答案(9)|浏览(269)

我使用的是Android Studio 3.0。
当我尝试运行应用程序时
INSTALL_FAILED_USER_RESTRICTED:无效的apk
发生错误。
我还禁用了Instant Run。

我再次运行应用程序,但同样的错误发生。
04/04 10:59:08:启动应用程序
Android的Android应用程序是一个简单的Android应用程序,它可以帮助您在Android上安装Android应用程序。
$ adb shell pm install -t -r“/data/local/tmp/com.android.buyforfund”
故障[安装失败用户限制:无效的apk]
$ adb shell pm uninstall com.android.buyforfund
DELETE_FAILED_INTERNAL_ERROR
安装APK时出错

af7jpaap

af7jpaap1#

其他答案都不适用于我在小米9手机上使用Xiaomis X1 m0n1x。
除了通常的(比如在开发者选项中启用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文件,您可以在模块文件夹中找到该文件。如果您没有更改模块,请将其命名为s称为app,因此此文件位于app/version.properties

gpfsuwkq

gpfsuwkq2#

我有同样的问题,我发送了一个反馈给谷歌在我的手机,会说这是一个错误.在我的情况下,最好的解决方案是取消该对话框,然后重新运行,它总是在第二次尝试后取消.
根据你使用的手机,我会假设问题是在手机(谷歌)方面.还不确定如果一个一般的谷歌问题或特定的硬件手机,我使用“小米红米5”.
禁用instant run在我的情况下实际上是有效的,但这不是它的目的,这只是一个肮脏的解决方案。
编辑:确保你没有类似的东西

android:debuggable="false"

在你的旅客名单上。

9njqaruj

9njqaruj3#

我遇到了同样的错误,而根本的问题是不同的。
我的是,我试图在Android 12设备上安装我的应用程序,而AndroidManifest.xml文件没有显式设置所有android:exported属性。这个错误在这里进一步解释:https://developer.android.com/about/versions/12/behavior-changes-12#exported
如果您的应用面向Android 12或更高版本,并且包含使用Intent过滤器的Activity、服务或广播接收器,您必须为这些应用组件显式声明android:exported属性
警告:如果Activity、服务或广播接收器使用Intent过滤器,并且没有显式声明的android:exported值,则您的应用无法安装在运行Android 12或更高版本的设备上。
在我将所需的android:exported属性添加到AndroidManifest.xml文件中后,错误得到了解决。

hgb9j2n6

hgb9j2n64#

确保已启用以下选项:
设置〉其他设置〉开发者选项

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

gopyfrb35#

在路径下的Androidmanifest.xml文件中
app/src/main/Androidmanifest.xml
在activity标签中添加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">
pgccezyw

pgccezyw6#

对于那些谁仍然可能得到这个错误,如果你已经做了一切从启用到flutter清理和所有.我解决了这个错误,检查清单,并添加适当的值,因为我改变了清单中的东西,这是不支持的,后来忘记改变它.所以如果你改变了主题,drawable或任何资源文件检查出来的第一.

yiytaume

yiytaume7#

INSTALL_FAILED_USER_RESTRICTED:APK无效MIUI 9及以上版本的步骤:

设置-〉附加设置-〉开发者选项-〉**第一步:**向下滚动-关闭“MIUI优化”并重新启动设备。**第二步:**打开“USB调试”**第三步:**打开“通过USB安装”**第四步:**显示推送通知并单击USB -将USB配置设置为充电(MTP(媒体传输协议)是默认模式。在某些情况下即使在MTP下也可以工作)。请尝试。

2nbm6dog

2nbm6dog8#

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

30byixjq

30byixjq9#

MIUI 9及以上版本:
1.导航到Settings -〉Additional Settings -〉Developer Options。
1.禁用“MIUI优化”并重新启动设备。启用“USB
1.调试“中的”开发人员选项”。
1.激活“通过USB安装”(请注意,MTP(媒体传输协议)是默认模式,在某些情况下它可能与MTP一起工作)。
1.将USB配置设置为“充电”模式。

相关问题