使用pm命令安装或卸载apk,静默安装、卸载方法


pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME][-s] [-f] PATH

pm uninstall [-k] PACKAGE

pm命令可以通过adb在shell中执行,同样,我们可以通过代码来执行。

	/*
	 * m命令可以通过adb在shell中执行,同样,我们可以通过代码来执行
	 */
	public static String execCommand(String ...command)
	{
		Process process=null;
		InputStream errIs=null;
		InputStream inIs=null;
		String result="";
		
		try 
		{
			process=new ProcessBuilder().command(command).start();
			
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
            int read = -1;
			errIs=process.getErrorStream();			
			while((read=errIs.read())!=-1)
			{
				baos.write(read);
			}
			
			inIs=process.getInputStream();
			while((read=inIs.read())!=-1)
			{
				baos.write(read);
			}
			result=new String(baos.toByteArray());
			
			if(inIs!=null)
			   inIs.close();
			if(errIs!=null)
			   errIs.close();
			process.destroy();
		} catch (IOException e) {
		
			result=e.getMessage();
		}
		
		return result;
	}


1execCommand("pm","install","-f",filePath);//安装apk,filePath为apk文件路径,如/mnt/sdcard/ApiDemos.apk
2execCommand("pm","uninstall", packageName);//卸载apk,packageName为包名,如com.example.android.apis

编译生成apk时,要在你的manifest文件下添加android:sharedUserId="android.uid.system",如:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xieyuan.mhfilemanager"
    android:versionCode="1"
    android:versionName="1.0"
    android:installLocation="internalOnly"
    android:sharedUserId="android.uid.system" >

编译完成之后还无法正常安装,会出现Installationerror: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这两个文件删除掉,然后在命令行中执行以下命令:

1java -jar signapk.jarplatform.x509.pem platform.pk8 PMDemo.apk NewPMDemo.apk

安装前先把旧的apk卸载,这样重新签名之后的apk就可以正常安装了。


没有platform.pk8和platform.x509.pem,signapk.jar的可以到这里下载

http://download.csdn.net/detail/ab6326795/6042755
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江西省遂川县常驻深圳大使

喜欢本文,打赏下作者吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值