ro.secure值存储位置及AVD中APK安装失败问题咨询
解决AVD上APK安装失败及相关路径/系统属性问题
Hi Andy, let's work through this APK installation issue step by step, and clear up the confusion around ro.secure and the /data/local/tmp path:
一、如何修改ro.secure系统属性
ro.secure是Android系统的只读属性,默认会限制一些权限操作。要修改它,得先让你的AVD获取root权限并把系统分区挂载为可写,步骤如下:
- 先启动你的AVD,然后在终端执行这两条命令获取root权限并挂载系统分区:
如果adb root adb remountadb remount失败,先关掉AVD,再用这条命令重新启动模拟器(把[你的AVD名称]换成你实际的AVD名字):
启动后再重新执行emulator -avd [你的AVD名称] -writable-systemadb root和adb remount就行。 - 接下来进入模拟器的命令行,修改
ro.secure:
要是想让修改永久生效,可以编辑系统配置文件:adb shell setprop ro.secure 0
在文件里找到adb shell vi /system/build.propro.secure=1这一行,改成ro.secure=0,保存退出后重启AVD就生效了。
二、找到并使用/data/local/tmp路径
这个是Android系统自带的临时目录,操作起来很简单:
- 直接在终端执行
adb shell进入模拟器的命令行,然后输入:
用cd /data/local/tmpls命令就能看到目录里的内容。 - 要是想把本地的APK传到这个路径,直接执行:
adb push ~/Projects/TestApp/TestApp.apk /data/local/tmp/
三、规避权限问题的APK安装方法
如果直接用adb install失败,试试这种分步安装的方式:
- 先把APK推送到临时目录:
adb push ~/Projects/TestApp/TestApp.apk /data/local/tmp/ - 进入模拟器命令行安装APK:
要是还是提示权限问题,先执行adb shell pm install /data/local/tmp/TestApp.apkadb root再试安装。
另外,你提到的错误开头是INSTALL_FAILED_A...,如果是INSTALL_FAILED_ALREADY_EXISTS(应用已存在),可以加-r参数覆盖安装:
adb install -r ~/Projects/TestApp/TestApp.apk
内容的提问来源于stack exchange,提问作者Andy D




