使用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;
	}


1 execCommand("pm","install","-f",filePath);//安裝apk,filePath為apk文件路徑,如/mnt/sdcard/ApiDemos.apk
2 execCommand("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這兩個文件刪除掉,然后在命令行中執行以下命令:

1 java -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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM