Android日常开发(36) Project needs to be converted to androidx.* dependencies

本文介绍了解决在旧项目中创建模块时遇到的AndroidX迁移问题的方法。通过升级项目到AndroidX或修改配置来消除提示,确保项目顺利进行。

前言

最近在旧项目中创建module时候会遇到

可能是因为升级了as的缘故

方案一:升级项目到androidx

方案二:修改配置让提示消失

步骤一:gradle.properties(Global Properties)下添加:

android.useAndroidX=true
android.enableJetifier=true

步骤二:新建module_test,这时就没有Project needs to be converted to androidx.* dependencies

步骤三:把新建的lib或者app的build.gradle——dependencies下引入的androidX包改成android的,参考原项目中的build文件

步骤四:在步骤一种添加的内容移除掉

这个错误 **`java.lang.Process cannot be converted to android.os.Process`** 是由于混淆了 **Java 标准库的 `java.lang.Process`****Android 特有的 `android.os.Process`** 导致的。 --- ## **错误原因** - **`java.lang.Process`** 是标准 Java 的类,用于执行外部进程(如 `Runtime.exec()` 返回的对象)。 ```java Process process = Runtime.getRuntime().exec("ls"); ``` - **`android.os.Process`**Android 特有的类,用于管理 **当前进程**(如获取 PID、设置线程优先级等)。 ```java int pid = android.os.Process.myPid(); ``` **错误示例**: ```java // ❌ 错误:尝试将 java.lang.Process 转成 android.os.Process android.os.Process proc = Runtime.getRuntime().exec("sync"); // 编译报错 ``` --- ## **解决方案** ### **1. 如果目标是执行命令(使用 `java.lang.Process`)** ```java // ✅ 正确:直接使用 java.lang.Process Process process = Runtime.getRuntime().exec("sync"); process.waitFor(); // 等待命令执行完成 ``` ### **2. 如果目标是管理当前进程(使用 `android.os.Process`)** ```java // ✅ 正确:使用 android.os.Process 的方法 int pid = android.os.Process.myPid(); // 获取当前进程 PID android.os.Process.setThreadPriority(10); // 设置线程优先级 ``` ### **3. 如果确实需要两者结合** 例如,执行命令后获取其 PID: ```java Process process = Runtime.getRuntime().exec("sync"); int pid = getProcessId(process); // 需要反射获取(不推荐) // 反射获取 PID(仅适用于某些 Android 版本) private static int getProcessId(Process process) { try { Field pidField = process.getClass().getDeclaredField("pid"); pidField.setAccessible(true); return (int) pidField.get(process); } catch (Exception e) { return -1; } } ``` **注意**:反射方式不稳定,不同 Android 版本可能失效。 --- ## **关键区别** | **`java.lang.Process`** | **`android.os.Process`** | |-------------------------|--------------------------| | 用于执行外部命令(如 `Runtime.exec()`) | 用于管理当前进程(如 `myPid()`) | | 属于 Java 标准库 | 属于 Android 特有 API | | 返回 `Process` 对象 | 提供静态方法(如 `killProcess()`) | --- ## **最佳实践** 1. **执行命令** → 用 `java.lang.Process` + `Runtime.exec()` 2. **管理进程** → 用 `android.os.Process` 3. **避免混用**,编译器会直接阻止类型不匹配 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值