将 compileSdkVersion 和 targetSdkVersion 设置为 31(Android 12)后出现“未安装应用程序”

Posted

技术标签:

【中文标题】将 compileSdkVersion 和 targetSdkVersion 设置为 31(Android 12)后出现“未安装应用程序”【英文标题】:"App not installed" after setting compileSdkVersion & targetSdkVersion to 31 (Android 12) 【发布时间】:2022-01-17 17:15:13 【问题描述】:

我刚刚将我们的应用更新为以下构建设置:

buildToolsVersion = "30.0.2"
minSdkVersion = 23
compileSdkVersion = 31
targetSdkVersion = 31
ndkVersion = "21.4.7075529"
androidXCore = "1.0.2"
playServicesVersion = "17.0.0"

并且应用程序不再安装,消息只是“未安装应用程序”。 为了从针对 android 11 到现在针对 android 12,我遵循了一些迁移指南,但我看不到任何可能遗漏的内容。

有没有人遇到过这种情况并且想不出我需要做的显而易见的事情。

我在 上测试的手机是 一部 android 11 手机,但这应该不会仅仅因为更改目标编译版本而影响安装,不是吗?

完整的 AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="uk.co.mycompany">

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.INTERNET" />
    
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
    <uses-permission android:name="android.permission.DOWNLOAD_COMPLETE" />

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <queries>
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:mimeType="*/*" />
        </intent>
    </queries>
    
    <application
      android:name="uk.co.mycompany.MainApplication"
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:allowBackup="false"
      android:usesCleartextTraffic="true"
      android:theme="@style/BootTheme"
      android:screenOrientation="portrait"
      android:requestLegacyExternalStorage="true"
    >
      <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="@string/GOOGLE_GEO_API_KEY"
      />
      <meta-data
        android:name="com.google.android.gms.wallet.api.enabled"
        android:value="true" 
      />
      <meta-data 
        android:name="com.facebook.sdk.ApplicationId" 
        android:value="@string/facebook_app_id"
      />

      <activity
        android:name="uk.co.mycompany.MainActivity"
        android:label="@string/app_name"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
        android:launchMode="singleTask"
        android:windowSoftInputMode="adjustResize"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="mycompany" />
        </intent-filter>
      </activity>
      
      <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
    </application>

</manifest>

【问题讨论】:

你能显示完整的清单吗 @ShahidIqbal 我会更新原帖 删除singleTask=true会解决你的问题 太棒了,谢谢,你的意思是 AndroidManifest 中的android:launchMode="singleTask" 是吗? @ShahidIqbal 我不确定这是否对我有用 【参考方案1】:

请在我们定义意图过滤器的每个 Activity 、 service 和 receiver 中添加 android:exported="false/true" (也请检查第三方库)。请参阅以下链接以获取开发者门户网站的指南。

https://developer.android.com/about/versions/12/behavior-changes-12#exported

【讨论】:

以上是关于将 compileSdkVersion 和 targetSdkVersion 设置为 31(Android 12)后出现“未安装应用程序”的主要内容,如果未能解决你的问题,请参考以下文章

Android compileSdkVersion 升级到33

compileSdkVersion 和 targetSdkVersion 有啥区别?

compileSdkVersion, minSdkVersion 和 targetSdkVersion

compileSdkVersion, minSdkVersion 和 targetSdkVersion

compileSdkVersion, minSdkVersion 和 targetSdkVersion

compileSdkVersion, minSdkVersion 和 targetSdkVersion