Android有自己的安全机制,没有root权限的非系统应用是不能实现的。所以应用调试期需要一个root过的手机。 第一步:是要判断手机是否root,如下就是判断手机是否root过,我从网上找的,方便查看就粘过来了/** * * @param pkgCodePath 参数传这个getPackageCodePath() * @return */ public static boolean isRoot(String pkgCodePath) { Process process = null; DataOutputStream os = null; try { String cmd = "chmod 777 " + pkgCodePath; process = Runtime.getRuntime().exec("su"); // 切换到root帐号 os = new DataOutputStream(process.getOutputStream()); os.writeBytes(cmd + "\n"); os.writeBytes("exit\n"); os.flush(); process.waitFor(); } catch (Exception e) { return false; } finally { try { if (os != null) { os.close(); } process.destroy(); } catch (Exception e) { } } return true; } 第二步:卸载应用,第三方应用的apk存在/data/app/目录下;系统应用的apk存在/system/app/目录下。卸载第三方应用的时候 就是执行 ”pm uninstall 包名“ ;而卸载系统应用的时候 就 不能单一的执行uninstall了,uninstall会返回 failure卸载失败。所以应该用”rm /system/app/apk名“ 删除system/app下的apk包,删除后 Android系统会自动识别并将桌面上的快捷方式删除。 第三步:安装应用,安装第三方应用同样是执行"pm install apk的路径"。安装系统应用则有点麻烦,要先把apk拷贝到/system/app/中,我用的是cat,因为对linux等命令不熟悉,这次拷贝apk的权限是rw----,就是说除了本应用其他应用都不能对这个apk读写,导致Android系统不能读取apk文件,解析androidmainfest生成快捷方式的动作,最后安装失败。所以我拷贝完之后将这个apk的权限设置成644,再执行一遍cat,这样系统类Android程序就可以安装成功。 大致代码: mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system;\n //挂载分区 cat /storage/sdcard0/uninstall_dashi/MiuiVideo.apk > /system/app/MiuiVideo.apk\n mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system;\n chmod 644 MiuiVideo.apk; \n cat /storage/sdcard0/uninstall_dashi/MiuiVideo.apk > /system/app/MiuiVideo.apk\n 住:有的人可能会用虚拟机测试,可能有的虚拟机执行这些需要获得root权限的代码时会报下面这个错:uid 10041 not allowed to su 这是因为虚拟机默认不让第三方应用执行su方法。这时候 需要开启cmd控制台窗口 执行以下代码 控制台代码: adb shell mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system cd /system/bin cat sh > su chmod 4755 su su 执行完之后 ,手机就可以执行su了 |
Android静默安装、卸载,应用程序/预装程序
最新推荐文章于 2021-05-29 07:40:47 发布