将 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