You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改Target SDK Version至29后,Android 10/9设备无法运行求助

问题分析与解决方案

从你提供的apktool.yml和AndroidManifest.xml来看,主要存在几个targetSdkVersion 29(Android 10)适配相关的问题,以及Manifest的缺失配置,下面逐一说明:

1. AndroidManifest.xml 缺失 <uses-sdk> 标签

你的Manifest文件里没有声明<uses-sdk>节点,虽然apktool.yml里已经配置了minSdkVersion和targetSdkVersion,但系统在解析APP时,优先以Manifest里的配置为准。缺失这个标签可能导致设备无法正确识别APP的兼容范围,甚至出现安装或运行异常。

解决方案:在<manifest>根标签下添加该节点:

<uses-sdk
    android:minSdkVersion="19"
    android:targetSdkVersion="29" />

2. Scoped Storage 适配问题(针对 WRITE_EXTERNAL_STORAGE 权限)

Android 10(API29)引入了Scoped Storage机制,默认限制APP访问公共外部存储。你的Manifest里声明了WRITE_EXTERNAL_STORAGE权限,但如果没有配置兼容开关,APP在Android 10+设备上将无法正常读写公共存储(比如DCIM、Download目录)。

解决方案:在<application>标签中添加兼容属性,临时启用旧的存储行为(如果暂时不想迁移到Scoped Storage):

<application
    ...
    android:requestLegacyExternalStorage="true">
    ...
</application>

如果后续打算适配Scoped Storage,可以逐步替换为MediaStore或APP私有目录的API,移除这个属性。

3. READ_PHONE_STATE 权限的动态申请要求

READ_PHONE_STATE在API29及以上属于危险权限,仅在Manifest里静态声明是不够的,必须在代码中向用户动态申请该权限,否则APP在Android 10+设备上无法获取到设备状态信息(比如IMEI),会触发权限异常。

解决方案:在APP启动或使用相关功能前,添加动态权限申请逻辑,示例伪代码:

// 检查权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
    // 申请权限
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_CODE_PHONE_STATE);
}

同时要处理权限申请的回调结果,确保权限通过后再执行相关操作。

4. 潜在的其他适配点(需要根据APP功能确认)

  • 明文HTTP请求限制:如果你的APP需要访问HTTP(非HTTPS)接口,API28及以上默认禁止明文请求,需要在<application>标签添加:

    android:usesCleartextTraffic="true"
    

    或者创建res/xml/network_security_config.xml配置允许特定域名的明文请求。

  • 后台启动Activity限制:API29开始,APP在后台状态下无法直接启动Activity,除非满足特定场景(比如通知点击、闹钟触发等)。如果你的APP有后台启动页面的逻辑,需要调整为符合系统规则的实现方式。

  • DISABLE_KEYGUARD权限的替代方案:API29推荐使用KeyguardManager的requestDismissKeyguard()方法替代直接使用DISABLE_KEYGUARD权限,旧的权限方式在新版本系统上可能被限制。

总结需要添加/修改的内容

  • 向AndroidManifest.xml添加<uses-sdk>标签
  • 向<application>标签添加android:requestLegacyExternalStorage="true"(适配存储)
  • 在代码中添加READ_PHONE_STATE的动态权限申请逻辑
  • (可选)添加明文HTTP兼容配置(如果需要)

完成这些修改后,重新构建并签名APK,就能更好地适配Android 10及以上设备了。

内容的提问来源于stack exchange,提问作者samsam114

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 20:52:53