使用pm命令安装或卸载apk
来源:互联网 发布:linux系统使用 编辑:程序博客网 时间:2024/05/16 08:27
使用pm命令安装或卸载apk 系统签名和平台签名
pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f] PATH
pm uninstall [-k] PACKAGE
pm命令可以通过adb在shell中执行,同样,我们可以通过代码来执行。
public static void execCommand(String... command) {
Process process = null;
try {
process = new ProcessBuilder().command(command).start();
//对于命令的执行结果我们可以通过流来读取
// InputStream in = process.getInputStream();
// OutputStream out = process.getOutputStream();
// InputStream err = process.getErrorStream();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (process != null)
process.destroy();
}
}
execCommand("pm", "install", "-f", filePath);//安装apk,filePath为apk文件路径,如/mnt/sdcard/ApiDemos.apk
execCommand("pm", "uninstall", packageName);//卸载apk,packageName为包名,如com.example.android.apis
编译生成apk时,要在你的manifest文件下添加android:sharedUserId="android.uid.system",编译完成之后还无法正常安装,会出现Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误,此时,要为apk重新签名。
在android源码\build\target\product\security中找platform.pk8和platform.x509.pem两个文件,在android 编绎目录out下找到 signapk.jar 这个包(源码目录\build\tools\signapk),并把编译好的apk(如PMDemo.apk)放在同一目录下,在重新签名之前,用rar文件打开apk文件,进入META-INF目录下,将CERT.SF和CERT.RSA这两个文件删除掉,然后在命令行中执行以下命令:
java -jar signapk.jar platform.x509.pem platform.pk8 PMDemo.apk NewPMDemo.apk
安装前先把旧的apk卸载,这样重新签名之后的apk就可以正常安装了。
- 使用pm命令安装或卸载apk
- 使用pm命令安装或卸载apk,静默安装、卸载方法
- Android下pm 命令详解 - 安装/卸载/APK等
- 使用adb命令批处理安装&卸载apk
- 使用adb命令批处理安装&卸载apk
- 使用adb命令批处理安装&卸载apk
- Android采用pm命令静默安装apk
- Android下pm 命令详解 - 安装APK
- 安卓使用root权限执行pm命令无法安装apk的解决办法
- adb命令安装和卸载apk文件
- Android pm命令 以及在终端安装卸载安装包方法
- Android pm命令 以及在终端安装卸载安装包方法
- 使用adb命令安装apk
- 模拟器使用命令安装apk
- android cmd命令,创建avd、安装卸载删除APk
- cmd命令安装和卸载android手机apk
- android安装卸载apk
- apk 安装与 卸载
- 视频文件怎样加滤镜?
- python 中的异常处理
- C程序设计 例题6.2 用数组处理Fibonacci问题
- Flume-ng 1.7.0 安装、配置及说明之1-直接读取Nginx日志存入HDFS
- 简要描述 JavaScript 的数据类型
- 使用pm命令安装或卸载apk
- Oracle自定义一个把 IP 地址转成整数的函数
- 关于程序打包的问题请教!
- centos6.7(64 bit)安装mysql5.7.16 的用户与权限管理 (含主从复制【master/slave】)
- Android Host-based Card Emulation
- C程序设计 例题6.1 数组赋值例
- C#中创建线程的方式,以及主线程和子线程之间的资源调用
- 写递归时切忌把查询语句写进去
- 读代码,写结果