赞
踩
targetSdkVersion 31的应用在Android 12上安装时可能会存在两种安装不上的情况。
adb: failed to install xxx.apk: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Scanning Failed.: No signature found in package of version 2 or newer for package com.tomes.sharefile]
分析与解决请参照我的另一篇帖子Android R(11)targetSdkVersion 30的应用必须使用v2及以上签名,这里不再累述
adb: failed to install xxx.apk: Failure [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: Failed parse during installPackageLI: /data/app/vmdl2054463318.tmp/base.apk (at Binary XML file line #49): com.tomes.ShareOpenTestActivity: Targeting S+ (version 10000 and above) requires that an explicit value for android:exported be defined when intent filters are present]
我的ShareOpenTestActivity在AndroidManifest.xml中的申明是:
- <activity android:name=".ShareOpenTestActivity">
- <intent-filter>
- <action android:name="android.intent.action.SEND"/>
- <category android:name="android.intent.category.DEFAULT" />
- <data android:mimeType="text/*" />
- </intent-filter>
- </activity>
查看官网文档:https://developer.android.google.cn/about/versions/12/behavior-changes-12#exported
我们知道,当我们的应用以Android 12为目标,使用的activity,service,broadcast receiver含有intent-filter,则必须显示声明android:exported属性,如果没有声明,则我们的应用不能安装在Android 12上
声明android:exported属性即可解决。
如我上面的错误,只需要对
ShareOpenTestActivity增加android:exported属性申明就好
- <activity android:name=".ShareOpenTestActivity" android:exported="true">
- <intent-filter>
- <action android:name="android.intent.action.SEND"/>
- <category android:name="android.intent.category.DEFAULT" />
- <data android:mimeType="text/*" />
- </intent-filter>
- </activity>
targetSdkVersion为31【以Android 12为目标】的应用务必要加入v2签名,务必要对使用的activity,service,broadcast receiver含有intent-filter,显示声明android:exported属性。
更多的Android12上面的信息和思考请看:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。