Marshmallow时期旧APK修改Manifest后仍无法兼容新版Android求助
结合你提供的Manifest文件,以下是几个导致设备显示应用不兼容的常见原因:
权限隐含的硬件特性要求未声明为可选
你的Manifest中申请的部分权限会自动关联对应的硬件特性,系统默认将这些特性标记为「必需」,若设备不具备该特性就会判定不兼容:ACCESS_COARSE_LOCATION:Android 10及以上版本中,该权限会隐含要求android.hardware.location.network特性,若设备无网络定位模块,会触发不兼容提示,需添加<uses-feature android:name="android.hardware.location.network" android:required="false"/>声明为可选。BLUETOOTH:旧版BLUETOOTH权限在Android 12+会关联android.hardware.bluetooth特性,若设备无蓝牙模块,需补充<uses-feature android:name="android.hardware.bluetooth" android:required="false"/>。VIBRATE:该权限会隐含android.hardware.vibrator特性,若设备无振动功能,需将该特性声明为可选。
supports-screens属性缺失关键配置
当前supports-screens仅声明了largeScreens="true"和resizeable="true",缺少smallScreens、normalScreens、xlargeScreens的声明,也未添加android:anyDensity="true"。新系统会依据这些配置判断应用是否适配当前设备屏幕尺寸,建议补全:<supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:resizeable="true" android:anyDensity="true"/>旧版第三方库的兼容性问题
Manifest中包含MoPub、MillennialMedia等老旧广告库,以及版本极低的Google Play Services(5077000对应5.0.77版本)。这些库大多未适配Android 10+的系统规则,部分甚至已停止维护,系统可能因潜在兼容性风险判定应用与当前设备不兼容。WRITE_EXTERNAL_STORAGE权限的适配问题
你申请了WRITE_EXTERNAL_STORAGE权限,但Android 10及以上版本对该权限的行为限制大幅收紧,若应用未适配分区存储规则,系统可能认为应用无法在新设备正常运行,进而触发不兼容提示。建议移除该权限(若无需读写公共存储),或在<application>标签中添加android:requestLegacyExternalStorage="true"作为临时兼容方案。签名与打包完整性问题
修改Manifest后,若签名方式不正确(比如用调试签名替代原发布签名,或打包过程中文件损坏),部分设备会将签名不匹配判定为「不兼容」。需确保使用与原应用一致的签名文件重新打包,且打包流程完整无错误。
内容的提问来源于stack exchange,提问作者user1947331

