adb 指令uninstall卸载android app 处理方法

正常思路,想当然,两句指令搞定应该没啥毛病。

adb unstall ImageGrabber.apk
adb install ImageGrabber.apk

问题来了,报错Unknown package: ImageGrabber.apk

Exception occurred while dumping:
java.lang.IllegalArgumentException: Unknown package: ImageGrabber.apk
        at com.android.server.pm.Settings.isOrphaned(Settings.java:4134)
        at com.android.server.pm.PackageManagerService.isOrphaned(PackageManagerService.java:18256)
        at com.android.server.pm.PackageManagerService.deletePackage(PackageManagerService.java:15673)
        at com.android.server.pm.PackageInstallerService.uninstall(PackageInstallerService.java:888)
        at com.android.server.pm.PackageManagerShellCommand.runUninstall(PackageManagerShellCommand.java:792)
        at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:118)
        at android.os.ShellCommand.exec(ShellCommand.java:94)
        at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:18516)
        at android.os.Binder.shellCommand(Binder.java:468)
        at android.os.Binder.onTransact(Binder.java:367)
        at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:2387)
        at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:3147)
        at android.os.Binder.execTransact(Binder.java:565)

手机端根本不认识这个apk,解决办法:

将 ImageGrabber.apk整个文件解压,其中包含:AndroidManifest.xml,打开之后是乱码,别着急,需要反编译工具AXMLPrinter2.jar 给他翻译一下,将这两个文件放在同一个目录下,如D:\ImageGrabber

先命令行将目录设定为D:\ImageGrabber    然后再执行java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifest.txt,前提是PC端装好了Java环境,特别是要注意设置好PC端的环境变量。

C:\Users\Antony WU>d:

D:\>cd ImageGrabber

D:\ImageGrabber>java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifest.txt

执行完成后,用notepad++打开AndroidManifest.txt,其中第6行就是所要的答案了package="com.qualcomm.vr.callibrationtool"

<?xml version="1.0" encoding="utf-8"?>
<manifest
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:versionCode="1"
	android:versionName="1.0"
	package="com.qualcomm.vr.callibrationtool"
	platformBuildVersionCode="25"
	platformBuildVersionName="7.1.1"
	>
	<uses-sdk
		android:minSdkVersion="15"
		android:targetSdkVersion="22"
		>
	</uses-sdk>
	<uses-permission
		android:name="android.permission.CAMERA"
		>
	</uses-permission>
	<uses-permission
		android:name="android.permission.WRITE_EXTERNAL_STORAGE"
		>
	</uses-permission>
	<meta-data
		android:name="android.support.VERSION"
		android:value="25.3.0"
		>
	</meta-data>
	<application
		android:theme="@7F0800A3"
		android:label="@7F060021"
		android:icon="@7F030000"
		android:debuggable="true"
		android:allowBackup="true"
		android:supportsRtl="true"
		android:roundIcon="@7F030001"
		>
		<activity
			android:name="com.qualcomm.vr.callibrationtool.CameraActivity"
			>
			<intent-filter
				>
				<action
					android:name="android.intent.action.MAIN"
					>
				</action>
				<category
					android:name="android.intent.category.LAUNCHER"
					>
				</category>
			</intent-filter>
		</activity>
	</application>
</manifest>

接下来就好搞了,做一个批处理文件,连接USB线或者设置手机端和PC端的wifi在同一局域网,点击后自动执行安装apk文件了,免去了手动安装的痛苦。

.\platform-tools\adb uninstall com.qualcomm.vr.callibrationtool

.\platform-tools\adb install  ImageGrabber.apk

pause

再高级一点就用c# winform做一个界面,可以把多个adb指令功能集成到一个界面里,实现PC端一键控制手机端adb各类指令。

所涉及到的各工具下载地址如下:

https://download.youkuaiyun.com/download/ericwuhk/10672633

ref: https://blog.youkuaiyun.com/atggdsai/article/details/42131515

<think>好的,用户问的是如何通过ADB卸载应用的指令,需要具体的例子。首先,我得回忆ADB的基本用法。ADB卸载应用通常使用`adb uninstall`命令,后面跟上包名。比如,用户可能需要知道如何找到包名,或者直接通过APK文件卸载。 记得用户提供的引用中,引用[1]提到可以直接用`adb shell pm uninstall`命令,而引用[3]有个例子用了`adb unstall`,不过这里可能是个拼写错误,正确应该是`uninstall`。需要指出正确的语法。 另外,用户可能需要知道如何获取已安装应用的包名,可以用`adb shell pm list packages`。这点在引用[2]里有提到ADB的基础概念,可能需要引用到。还有,卸载系统应用可能需要root权限,这点也很重要,应该提到。 用户还可能遇到问题,比如如果应用正在运行,可能需要先停止它。引用[4]提到的svc命令可能不相关,但引用[5]的链接可能有更多细节,不过无法访问,所以可能忽略。 总结步骤应该是:1. 连接设备;2. 获取包名;3. 执行卸载命令。同时给出常见问题,比如保留数据或系统应用的情况。确保回答清晰,结构正确,并引用提供的资料。</think>### 通过ADB卸载Android应用的指令及示例 #### 1. **基本卸载命令** 通过ADB卸载应用的核心命令是`adb uninstall`,需要指定应用的**包名**(Package Name)。 **语法格式**: $$ adb uninstall <package\_name> $$ **示例**: ```bash adb uninstall com.example.MyApp ``` 此命令会彻底删除应用及其数据[^1][^5]。 --- #### 2. **如何获取包名?** 若不清楚包名,可通过以下步骤获取: 1. 列出所有已安装应用: ```bash adb shell pm list packages ``` 2. 结合`grep`(需设备支持)过滤目标应用: ```bash adb shell pm list packages | grep "example" ``` --- #### 3. **保留数据卸载(仅调试场景)** 若需保留应用数据(如调试配置),添加`-k`参数: ```bash adb uninstall -k com.example.MyApp ``` 此操作会移除应用但保留数据目录[^2]。 --- #### 4. **通过APK文件直接卸载** 若仅有APK文件,可通过`pm`命令结合路径卸载: ```bash adb shell pm uninstall -k --user 0 $(adb shell pm path com.example.MyApp | cut -d':' -f2) ``` 需替换`com.example.MyApp`为实际包名[^3]。 --- #### 5. **系统应用卸载(需Root权限)** 对于系统预装应用,需先获取Root权限,再执行: ```bash adb shell pm uninstall --user 0 com.example.SystemApp ``` 此命令会禁用应用而非完全删除。 --- ### 常见问题与注意事项 - **设备连接失败**:确保已启用USB调试模式,并通过`adb devices`验证连接。 - **权限不足**:卸载系统应用需Root或使用`--user 0`参数。 - **应用正在运行**:部分情况需先停止应用进程(`adb shell am force-stop <package_name>`)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值