GooglePlay发布应用: targetSdkVersion 30 的要求

本文讲述了开发者如何在22年8月针对targetSdkVersion 30的升级中,解决第三方包名搜索被屏蔽及Environment.getExternalStorageDirectory()失效的问题。通过添加<queries>标签指定包名,并切换到使用Environment.DIRECTORY_PICTURES获取外部存储路径的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如题:我是22年8月初提交aab的

targetSdkVersion 提示最低需要 targetSdkVersion 30

所以迁移之

1.搜索第三方包名,被过滤屏蔽

 就是这个方法,里面的pinfo直接就是空的

解决办法:

在清单文件第一层添加代码:

<queries>
    <package android:name="com.tencent.mobileqq"/>
    <package android:name="com.tencent.mm"/>
    <package android:name="com.sina.weibo"/>
</queries>

把想要搜索到的包名加到queries里面就ok了

2.获取SD卡路径的方法

Environment.getExternalStorageDirectory()作废了

解决办法:

使用

BaseApplication.getContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES);替换

Environment.DIRECTORY_PICTURES : 子文件夹,用于区分各种类型文件,应该都能用不影响的;

<think>好的,用户问如何将之前的targetSdkVersion从使用prop_targetSdkVersion改为32。首先,我需要确认用户的需求是什么。看起来他们希望将targetSdkVersion硬编码为32,而不是通过属性变量动态获取。这可能是因为他们希望固定这个值,或者不再需要从gradle.properties中配置这个属性。 接下来,我需要回顾之前的配置,那里用的是prop_targetSdkVersion,这个属性通常是在gradle.properties文件中定义的。用户现在想直接指定32,所以需要修改build.gradle文件中的对应行。 然后,我要考虑可能的步骤。首先,直接替换prop_targetSdkVersion为32。但用户可能还需要清理掉gradle.properties中的相关属性,或者至少知道这样做的影响。另外,如果项目中其他地方引用了prop_targetSdkVersion,可能会有问题,不过通常targetSdkVersion只在defaultConfig中设置。 还需要提醒用户同步Gradle,比如点击Sync Now按钮,这样更改才会生效。另外,修改targetSdkVersion可能涉及到应用兼容性的问题,用户可能需要测试应用在新target版本下的表现,特别是如果从较低版本升级到32,需要检查是否有行为变更,比如权限、后台限制等。 用户可能是在准备发布应用,或者遵循Google Play的要求,因为现在可能要求targetSdkVersion至少为某个版本。例如,Google Play可能要求应用更新到更高的targetSdkVersion,所以用户需要升级到32以满足要求。 另外,用户可能没有意识到直接硬编码和通过属性配置的区别,所以需要解释两种方式的优缺点。硬编码更直接,但缺乏灵活性;使用属性则方便多环境配置,比如不同的构建变体可能有不同的值。 最后,确保回答清晰,步骤明确,并包含注意事项,比如同步Gradle和测试应用,以及可能的后续影响。这样用户不仅能修改配置,还能理解背后的原因和需要注意的地方。</think>### 📝 **如何将 `targetSdkVersion` 修改为 32?** 以下是具体步骤及注意事项: --- #### **步骤 1:直接修改 `build.gradle`** 在 `defaultConfig` 闭包中找到 `targetSdkVersion` 配置,将动态属性 `prop_targetSdkVersion` 替换为固定值 `32`: ```groovy defaultConfig { minSdkVersion prop_minSdkVersion targetSdkVersion 32 // 直接赋值32 // 其他配置保持不变... } ``` --- #### **步骤 2:移除或保留属性变量(可)** - **若不再需要动态注入** 删除 `gradle.properties` 中 `prop_targetSdkVersion` 的定义,避免冗余。 - **若需保留动态配置(如多环境构建)** 保持 `gradle.properties` 中的属性,但需同步更新其值为 `32`: ```properties prop_targetSdkVersion=32 ``` --- #### **步骤 3:同步 Gradle** 点击 Android Studio 右上角的 **Sync Now** 按钮,确保配置生效。 --- ### ⚠️ **注意事项** 1. **兼容性测试** - 升级 `targetSdkVersion` 到 32 后,需测试应用Android 12(API 31)及以上系统的行为,重点检查以下变更: - **存储权限**:Android 11+ 的 Scoped Storage 限制。 - **后台定位**:Android 12 限制后台应用获取精确位置。 - **PendingIntent 可变性**:Android 12 要求显式声明 `PendingIntent` 的 `FLAG_MUTABLE` 或 `FLAG_IMMUTABLE`。 2. **依赖库兼容性** - 确保第三方库(如 Firebase、广告 SDK)支持 `targetSdkVersion=32`,避免因库版本过低导致崩溃。 3. **Google Play 要求** - 自 2023 年 8 月 31 日起,Google Play 新应用需至少以 Android 13(API 33)为目标版本。若上架应用需注意时间节点,适时升级到更高版本。 --- ### 📌 **两种配置方式对比** | 方式 | 优点 | 缺点 | |-----------------------|-------------------------------|--------------------------| | **直接赋值 `32`** | 配置简单,无需管理外部属性 | 灵活性低,多环境需手动修改 | | **保留属性变量** | 支持多环境差异化构建(如开发/生产) | 需维护 `gradle.properties` | --- ### 🔧 **扩展:动态属性的典型用法** 若需通过 `gradle.properties` 动态控制版本: 1. **定义属性** 在 `gradle.properties` 中添加: ```properties prop_targetSdkVersion=32 ``` 2. **引用属性** `build.gradle` 中保持原有写法: ```groovy targetSdkVersion prop_targetSdkVersion ``` 此方式适合需要区分 **开发版** 和 **生产版** 不同配置的场景。 --- **完成修改后,务必执行完整构建并测试应用功能!**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值