导航:首页 > 程序命令 > 卸载apk的命令

卸载apk的命令

发布时间:2022-11-28 05:58:18

㈠ 如何删除system app下的apk

要删除系统system/app目录下的的APK,由于/system/app目录默认是只读,所以,想要删除这些APK,必须首先获得system目录的删除权限。通过如下步骤删除system/app下的apk文件:1. 连接设备。如果是手机则需要打开usb调试,设置--》应用程序--》开发--》USB调试。如果是其他设备可能还需要:adb connect 目标设备的IP地址(192.168.1.1)。adb connect 用来连接设备。2. 打开cmd,进入设备。输入命令:adb shell3. #mount此命令用来查看挂载情况。你将会看到如下信息:C:Documents and SettingsAdministrator>adb shellroot@android:/ # mountmountrootfs / rootfs rw 0 0tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0devpts /dev/pts devpts rw,relatime,mode=600,ptmxmode=000 0 0proc /proc proc rw,relatime 0 0sysfs /sys sysfs rw,relatime 0 0/dev/block/mtdblock3 /system yaffs2 ro,relatime 0 0/dev/block/mtdblock4 /param yaffs2 rw,relatime 0 0/dev/block/mtdblock5 /dtv yaffs2 rw,relatime 0
0/dev/block/mtdblock6 /atv yaffs2 rw,relatime 0 0/dev/block/mtdblock8 /data yaffs2 rw,nosuid,nodev,relatime 0 0none /acct cgroup rw,relatime,cpuacct 0 0tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0none /dev/cpuctl cgroup rw,relatime,cpu 0 0/dev/block/mtdblock7 /cache yaffs2 rw,nosuid,nodev,relatime 0 0none /proc/bus/usb usbfs rw,relatime,devmode=777,busmode=777,listmode=777 0 0然后输入下面命令:#mount -o remount rw /dev/block/mtdblock3 /system yaffs2 ro,relatime 0 04. 退出adb输入命令exit:root@android:/ # exit然后执行删除apk操作。5. 依次输入以下命令:adb shellcd /system/apprm XXX.apkXXX.apk就是要删除的apk。总结:先获得system操作权限,然后再删除文件。
因为system默认是只读,不允许删除文件

㈡ 如何卸载apk

拆卸apk应用有一下几种方法:

  1. 长按应用图标,然后会出现拆卸图标,点击拆卸图标或者移进垃圾箱将其拆卸;

  2. 利用手机应用市场的软件管理进行拆卸;

  3. 进入系统的应用中心进行应用的拆卸。

    APK是Android Package的缩写,即Android安装包(apk)。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。apk文件和sis一样,把android sdk编译的工程打包成一个安装程序文件,格式为apk。APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是DalvikVM executes的全称,即Android Dalvik执行程序,并非java ME的字节码而是Dalvik字节码。Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接,和Windows Mobile中的PE文件有区别。

㈢ android在root权限下实现apk的静默卸载,静默安装,重启

1.静默卸载实现:

/**

    * 静默卸载app

    *

    * @param context

    * @param packageName app的包名

    * @throws IOException

    * @throws InterruptedException

    */

    public static void uninstallApp(Context context, String packageName) throws IOException, InterruptedException {

        List<PackageInfo> packageInfos = context.getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES);

        for (PackageInfo packageInfo1 : packageInfos) {

            if (packageName.equals(packageInfo1.packageName)) {

                String suPath = "/system/xbin/su";

                File file = new File(suPath);

                if (!file.exists()) {

                    suPath = "/system/bin/su";

                }

                Process process = Runtime.getRuntime().exec(suPath);

                String cmd = "pm uninstall " + packageName + "\n" + "exit\n";

                process.getOutputStream().write(cmd.getBytes());

                process.waitFor();

                break;

            }

        }

    }

2.静默安装实现:

/**

    * 静默安装app

    *

    * @param filePath

    * @throws IOException

    * @throws InterruptedException

    */

    public static void installApp(String filePath) throws IOException, InterruptedException {

        String suPath = "/system/xbin/su";

        File file = new File(suPath);

        if (!file.exists()) {

            suPath = "/system/bin/su";

        }

        Process process = Runtime.getRuntime().exec(suPath);

        String cmd = "pm install -r " + filePath + "\n" + "exit\n";

        process.getOutputStream().write(cmd.getBytes());

        process.waitFor();

    }

最后加上重启命令:

/**

    * 重启系统

    *

    * @return

    */

    public static boolean reboot() {

        try {

            String suPath = "/system/xbin/su";

            File file = new File(suPath);

            if (!file.exists()) {

                suPath = "/system/bin/su";

            }

            Process process = Runtime.getRuntime().exec(suPath);

            String cmd = "reboot\nexit\n";

            process.getOutputStream().write(cmd.getBytes());

            return true;

        } catch (IOException error) {

            return false;

        }

    }

注意卸载和安装需要在子线程中执行;如果单纯关机则用“reboot -p”命令。

㈣ Android之如何安装(卸载)apk文件到模拟器

1、运行SDK Manager,选择模拟器,并运行模拟器
3、点击开始→运行,输入cmd,打开cmd窗口。输入cd C:\Program Files\android-sdk-windows\platform-tools,进入platform-tools目录
在cmd窗口中的platform-tools目录下输入adb install game.apk,回车,稍等,完成apk在模拟器上的安装。
一:首先需要启动模拟器
二:start -> 运行 ->CMD
三:进入andoridsdk下面的tools目录
四:adb shell
五:cd data六:cd app七:ls(说明,主要是针对不知道包下面的文件,可以列表显示出来)
八:rm *.apk(说明:"*.apk"是你要卸载的apk包)
这样就可以卸载这个apk包了!
Android模拟器中安装和卸载APK文件
在开发Android应用软件过程中,除了可以在开发环境中直接运行或调试代码,还可以将开发完成及打包好的并准备即将发布的APK文件安装到Android模拟器中运行测试。
将APK文件安装到模拟器中的方法如下:
1. 运行android的仿真器(通过手动方式在WINDOWS命令行下运行,或直接利用开发环境中启动运行好的模拟器)
2. 将要安装的APK文件复制到SDK安装目录下的tools文件夹
3. 改变当前目录到tools,并且在WINDOWS命令行下运行adb.exe install xxx.apk(abc.exe是tools目录下的一个可执行文件abc.exe, xxx.apk是你要安装的应用文件包)
4. 接着检查仿真器中的applications,如果安装成功应该可以看到新安装的应用程序
在安装和测试完成你的程序后,也许你想装它再卸载,那么可以按照以下步骤进行:
1. 运行命令adb shell,进入模拟器的命令行模式下

㈤ 如何完全手动地卸载掉Android的某app

清楚应用数据和卸载应用,直接执行命令:
* String cmd = "pm clear " + packageName; 或者 * String cmd = "pm clear " + packageName + " HERE";

* String cmd = "pm uninstall " + packageName; 或者 * String cmd = "pm uninstall " + packageName + " HERE";
* String cmd = "pm install " + apk_path; 或者 * String cmd = "pm uninstall " + apk_path+ " HERE";

且在清楚数据之后应用本身的Service和Alarm定时会自动取消掉,进程也随之结束, 以此类推adb所有命令都可以这样执行。

package com.app.exit.demo;

import java.io.IOException;

import android.util.Log;

/**
* 运行命令管理器
* 等同于在PC端adb shell之后执行命令,pm clear packageName
* 但是只能回自己操作,不能清除其他应用的数据;
* 卸载其他应用(限root设备或者厂商提供接口)
* @author hulk
*
*/
public class RuntimeCmdManager {

private static final String TAG = "RuntimeCmdManager";

/**
* 清除应用缓存的用户数据,同时停止所有服务和Alarm定时task
* String cmd = "pm clear " + packageName;
* String cmd = "pm clear " + packageName + " HERE";
* Runtime.getRuntime().exec(cmd)
* @param packageName
* @return
*/
public static Process clearAppUserData(String packageName) {
Process p = execRuntimeProcess("pm clear " + packageName);
if (p == null) {
LogTag.log("Clear app data packageName:" + packageName
+ ", FAILED !");
} else {
LogTag.log("Clear app data packageName:" + packageName
+ ", SUCCESS !");
}
return p;
}

/**
* 卸载应用,只能对root设备有效
* String cmd = "pm uninstall " + packageName;
* Runtime.getRuntime().exec("pm uninstall " + packageName)
* @param packageName
* @return
*/
public static Process uninstallApp(String packageName) {
Process p = execRuntimeProcess("pm uninstall " + packageName);
if (p == null) {
LogTag.log("Uninstall app packageName:" + packageName + ", FAILED !");
} else {
LogTag.log("Uninstall app packageName:" + packageName + ", SUCCESS !");
}
return p;
}

public static Process execRuntimeProcess(String commond) {
Process p = null;
try {
p = Runtime.getRuntime().exec(commond);
} catch (IOException e) {
LogTag.log("exec Runtime commond:" + commond + ", IOException" + e);
e.printStackTrace();
}
LogTag.log("exec Runtime commond:" + commond + ", Process:" + p);
return p;
}
}

彻底退出应用,不清除数据的方法:
停止应用中所有Service。调用ActivityManager.killBackgroundProcesses(packageName);
示例:
package com.app.exit.demo;

import java.util.List;

import android.support.v7.app.ActionBarActivity;
import android.app.ActivityManager;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.ActivityManager.RunningServiceInfo;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ServiceInfo;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {

private static final String TAG = "MainActivity";
public static final int ALARM_INTERVAL_MILLIS = 10 * 1000;

TextView mMsgTv;
Button exitAppBtn;

List runningServices;
ActivityManager mActivityManager;
List packageInfos;
ServiceInfo[] serviceInfos;
AlarmManager mAlarmManager;
private PendingIntent operation;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMsgTv = (TextView) findViewById(R.id.msg_tv);
exitAppBtn = (Button) findViewById(R.id.btn_exit_app);
exitAppBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
LogTag.i("" + this);
mAlarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
mActivityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
startServices();
runningServices = mActivityManager.getRunningServices(10000);
// proccessRunningServices(false);
packageInfos = getPackageManager().getInstalledPackages(
PackageManager.GET_SERVICES);
processPackageInfos(false);
setRepeating();
}

/**
* 定时启动SecondActivity,清除自身数据或者卸载
*/
private void setRepeating() {
if (operation == null) {
operation = getSecondPendingIntent();
}
long startTime = System.currentTimeMillis() + ALARM_INTERVAL_MILLIS;
mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startTime,
ALARM_INTERVAL_MILLIS, operation);
}

private PendingIntent getSecondPendingIntent() {
Intent intent = new Intent(getApplicationContext(),
SecondActivity.class);
PendingIntent operation = PendingIntent.getActivity(
getApplicationContext(), 0, intent, 0);
return operation;
}

private void startServices() {
startService(new Intent(this, MyService1.class));
startService(new Intent(this, MyService2.class));
}

private void processPackageInfos(boolean isStop) {
for (PackageInfo pinfo : packageInfos) {
if (getPackageName().equals(pinfo.packageName)) {
serviceInfos = pinfo.services;
for (ServiceInfo sinfo : serviceInfos) {
if (isStop) {
boolean result = stopPackageService(this,
getPackageName(), sinfo.name);
Log.w(TAG, "Stop sinfo.name: " + sinfo.name
+ ", result=" + result);
} else {
Log.d(TAG, "sinfo.name: " + sinfo.name);
}
}
}
}
}

private void proccessRunningServices(boolean isStop) {
if (runningServices == null) {
Log.w(TAG, "runningServices is null !! ");
return;
}

for (RunningServiceInfo runningServiceInfo : runningServices) {
String serviceName = runningServiceInfo.service.getClassName();
String process = runningServiceInfo.process;
if ("com.app.exit.demo".equals(process)) {
if (isStop) {
boolean result = stopPackageService(getApplication(),
getPackageName(), serviceName);
Log.w(TAG, "stopService " + serviceName + ", result= "
+ result);
} else {
Log.i(TAG, "runningServiceInfo.process=" + process
+ ",runningServiceInfo.pid="
+ runningServiceInfo.pid
+ ", runningServiceInfo.getClass=" + serviceName);
}
}
}
}

private boolean stopPackageService(Context context, String packageName,
String serviceName) {
Intent service = new Intent();
service.setClassName(packageName, serviceName);
return context.stopService(service);
}

@Override
protected void onDestroy() {
super.onDestroy();
killProcess();
LogTag.i("onDestroy: " + this);
}

private void killProcess() {
// proccessRunningServices(true);
processPackageInfos(true);
String packageName = getPackageName();
mActivityManager.killBackgroundProcesses(packageName);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}

注意Manifest配置:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.app.exit.demo"
android:versionCode="1"
android:versionName="1.0" >

android:minSdkVersion="8"
android:targetSdkVersion="21" />

android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
android:name=".MainActivity"
android:label="@string/app_name" >

android:name=".SecondActivity"
android:label="SecondActivity"
android:launchMode="singleTask" >

㈥ android 如何安装/卸载APK(包括system apk和user apk)

方法二,使用adb命令安装apk到data/app:adb install xxx.apk
到system/app:adb push xxx.apk system/app卸载apk卸载data/app下的apk: adb shell
cd data/apprm xxx.apkexitadb uninstall
卸载system/app下的apk: adb shell
cd system/apprm xxx.apkadb uninstall
安装user apk,还可以透过file manager来安装.
方法三,使用File Manager安装user apk
在file manager里,双击要安装的apk,按系统提示操作。

㈦ 如何用adb卸载一个正在运行的apk呢

1.从PC的
开始/运行/
输入cmd
2.输入
D:
回车
3.输入
cd
adbtools\tools
回车
4.输入adb
remount
5.输入
adb
shell,出现“#”或“$”
6.输入命令
cd
system/app
Image00003.jpg
7.输入命令
ls将出现内置apk的列表
Image00004.jpg
8.删除一个
apk,用“rm”命令,比如删除“
视频播放器
”(区分大小写的)
rm
VideoPlayer
.apk

㈧ 如何用adb卸载一个正在运行的apk呢

adb= (AndroidDebug Bridge)是Android 提供的一个通用的调试工具,借助这个工具,我们可以很好的调试开发的程序,adb.exe在你安装的android的sdk开发包tools(或platform-tools)目录下
版本比较低的SDK中,abd.exe位于tools文件夹中,后来高版本的将adb.exe 放在了platform-tools文件夹下,如果你有兴趣,可以看下 tools文件夹中的abd_has_moved.txt
安装程序

1、下载你想安装的apk程序
将你下载的***.apk程序拷贝到SDK安装目录中有adb.exe的文件夹中(tools或者platform-tools),我们假设是在platform-tools文件夹中。
2、“开始” –>”运行” –>输入“cmd” 接下来定位到你的platform-tools文件夹。
我的platform-tools文件夹是放在D:\android-sdk-windows\platform-tools,
所以我要输入“cd D:\android-sdk-windows\platform-tools” –> 回车
3、输入abd install ***.apk –>回车
DOS界面开始显示安装情况,最后出现 success,就表明安装成功了。你可以打开你的虚拟手机看看,是否有你新安装的程序。
卸载程序

可以向上面2中那样地位到platform-tools文件夹,然后输入 abd uninstall ***.apk 即可
还有一种更简单的方法就是打开虚拟手机的 设置 –>应用程序设置 –>管理应用程序 ,找到你要卸载的程序,点击卸载按钮即可。

㈨ ADB常用命令大全

安卓调试桥(Android Debug Bridge),是Android SDK中的一个调试工具, 使用adb可以直接操作管理Android模拟器或Andriod真机设备,在开发测试过程中,起到调试的作用。

adb.exe的存放路径:Android-SDKplatform-tools

adb help //查看帮助

adb version //查看adb版本号

adb devices //查看设备

adb connect IP:port //连接设备

adb disconnect //断开连接的所有设备

adb disconnect IP:port //断开连接指定设备

adb root //获取root权限

adb remount //重新挂载文件系统(默认只读,执行命令后可写)

adb install Package //安装APK

adb install -r Package //强制覆盖安装

adb install -t Package //允许降级覆盖安装

adb install -d Package //允许测试包

adb uninstall PackageName //卸载APK

adb uninstall -k (keep) PackageName //保留用户数据卸载

adb pull //将设备文件文件发送到PC

adb push //将PC文件发送到设备

adb logcat -c //清空日志

adb logcat -v threadtime >D:111.log //抓日志并输出保存D:111.log

adb shell screencap /sdcard/screen.png //屏幕截图(并存放sdcard目录,命名screen.png)

adb shell screenrecord /sdcard/demo.mp4 //录制屏幕(Android4.4以上可用)

adb shell mpsys activity activities //查看activity信息

adb shell mpsys activity |findstr mResumedActivity //获取当前activity信息

adb shell mpsys window windows | findstr “Current” //查看当前app窗口activity

adb shell //进入设备内部

cd //切换目录

pwd //查看当前路径

ping //查看网络连接

rm* //删除目录下的所有文件

cp -r /path/filename /NewPath //拷贝文件

busybox find / -name FileName //查找文件

tcpmp -i any -p -s 0 -w /data/data/1111.pcap //抓取网络包

pm uninstall PackageName //卸载APK

pm path PackageName //查看APK存放位置

pm clear PackageName //清除APK缓存

mpsys package om.android.xxx //查看APK的具体信息

mpsys package om.android.xxx | grep version //查看APK版本

mpsys package com.tencent.mm | findstr versionName //查看APK版本

am start PackageName //拉起APK

am start -n com.android.xxx/.WelcomeActivity //直接拉起APK的指定WelcomeActivity

am start -a android.intent.action.VIEW -d http://www..com //拉起网络

am start -n om.android.xxx/.WelcomeActivity --es actionUrl "http://sns.is.xxxxx.com/CCTV/index.html?action=detail&object=5005153" //指定Activity上拉起H5

am force-stop + 报名 //杀死进程

kill `ps |grep -E "icntv|istv" | busybox awk '{print $2}'` //杀进程

md5 com.android.xxx //查看已安装应用MD5

busybox vi hispreinstall.sh //编辑文件(命令行)

chmod 777 /system/bin/hispreinstall.sh //修改权限

cat /system/build.prop | grep "proct" //查看设备信息

exit //退出shell交互模式

adb shell getprop ro.build.version.release //查看Android系统版本

adb get-serialno //获取手机序列号

adb shell mpsys package //列出所有安装应用的信息

adb shell pm list packages //查看设备中的所有应用的包名

adb shell cat/proc/cpuinfo //获取CPU型号等信息(HardWare后面是CPU型号)

adb shell "ps | grep packageName" //查指定程序pid

adb shell getprop //查看手机信息

adb shell getprop ro.serialno //查看手机序列号

adb shell cat /proc/cpuinfo //查看手机CPU信息

adb shell cat /proc/meminfo //查看手机内存信息

adb reboot recovery //重启手机到recovery刷机模式

adb reboot bootloader //重启手机到bootloader界面

adb shell mpsys battery //获取电池信息

adb shell mpsys battery set status 1 //设置手机进入非充电状态,为2设置充电状态

adb shell mpsys battery set level 100 //设置电量百分比

adb shell mpsys batterystats //获取整个设备的电量消耗信息

adb shell mpsys batterystats | more //综合电量消耗

adb shell mpsys batterystats com.android.xxx //获取某个apk的电量消耗信息

adb shell mpsys batterystats packageName | more //获取指定程序电量消耗信息

adb shell cat /proc/uid_stat/$PID/tcp_snd //发送的数据流量

adb shell cat /proc/uid_stat/$PID/tcp_rcv //接收的数据流量

procrank //查看内存

adb shell top | findstr com.android.xxx //查看指定APK内存

top -n 3 |grep -E "com.android.xxx|android.yyy" //查看内存

adb shell mpsys cpuinfo |findstr com.android.xxx //查看指定APK CPU

mpsys cpuinfo |grep -E "com.android.xxx|android.yyy" //查看CPU

adb shell settings put global http_proxy ip(PC):port(默认8888) //设置代理

adb shell settings get global http_proxy //查看代理

adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db //进入sqlite

delete from global where name in('global_http_proxy_host','global_http_proxy_port','http_proxy'); //移除代理

adb shell stop //关闭设备

adb shell start //开启设备

adb start-server //启动adb服务

adb kill-server //关闭adb服务

adb reboot //重启手机

adb shutdown //关闭手机

1、首次使用USB线连接Android手机,然后打开Terminal输入:adb tcpip 端口号(默认5555)

2、查看手机IP地址:设置->关于手机->状态信息->IP地址

3、通过adb连接ip地址:adb connect IP:port

㈩ Linux常用命令

列出当前目录的文件

常用参数: 

-a: 显示当前目录的所有文件,包含隐藏文件; 

-l: 显示文件详情; 

-Z: 显示文件的 SE Linux context。 

示例:ls -laZ [if !vml] [endif] 以 acct 为例: drwxr-xr-x:其中 d 代表该文件为目录,若为 l 则为软链接,软连接后又箭头代表其实际指向的文件,如etc -> /system/etc 则访问 etc 实际等同访问/system/etc,留空则代表该文件为一个文件;rwxr-xr-x 代表其权限为 755,具体算法为将上述字段每 3 个分为 1 组得 rwx,r-x,r-x,凡是有字母标记的皆计数 1,反之为 0,得二进制 111,101,101,转为 10 进制数字即得7, 5,5 ,即为该文件权限; root root :依次代表该文件的所有者(owner)为 root,用户组(group)为 root,上述属性可通过 chown 命令修改,日常替换文件需与原文件该属性维持一致; unlabeled:代表 SE Linux context。

前往指定目录

更改文件所有者和用户组   示例:chown root:root temfile 将 tmpfile文件 的所有者和用户组从 meidia:media 更改为 root:root

将文件内容显示出来。

注意不要随便去 cat 一个很大的文件或与 log 驱动节点无关的文件,否则将造成串口输出乱码或死机!!!示例:cat /proc/kmsg 将打印出所有 kernel log。

用于抓取 android logcat 打印。

常用参数:

-v : 设置打印格式,可用选项为 brief process tag thread raw time threadtime long,我们比较常用 logcat -v time,此时抓的 log 将在每一行开头添加时间信息;

-s : 设置过滤器,过滤器的选择取决于软件中打印 log 时使用的 TAG ,如

ActivityManagerService.java 中的打印使用的 TAG = ActivityManager,则抓相关打印方法为 logcat -s ActivityManager;

-c : 清除 log 缓存,常用于清除之前的打印缓存,如复现某个必现问题,则可先执行 logcat -c 再抓 logcat 重现必现手法以排除无关 log 冗余信息影响问题定位; pm

包管理命令,用于管理安卓 app 应用。

常用参数:

-l : 显示所有安装包应用,等同于 pm list packages

以 package:/system/priv-app/Launcher2.apk=com.android.launcher 为例:

Apk Launcher2 路径位于/system/priv-app/Launcher2.apk,其包名为 com.android.launcher

path : 根据报名返回所在 apk 路径

install : 安装 apk

-r :安装一个已经存在的 apk 并保留其数据;

-d : 允许降级安装

如:pm install -r xxx.apk

uninstall : 卸载 apk,命令仅支持卸载 data/app,后接包名;

如:pm uninstall com.sys.migusmartlink.ott.tv //卸载包名为 com.sys.migusmartlink.ott.tv 的 apk

随机测试指令,会自动模拟一些用户操作对 APP 进行压力测试。

常用参数:

-p :指定启动的 APK,我们比较常用的是 monkey -p com.xxx.yyy 1 来启动一个 apk 的随机页面。

用于启动和管理 activity 和 service

常用参数:

start : 后接 intent 启动一个页面;

startservice : 后接 intent 启动一个 service; stopservice :后接 intent 停止一个 service; broadcast :后接一个 intent 发送一个广播; kill :后接一个 app 包名,杀掉该 app 所有进程;在 shell 环境下用如下参数表述一个 intent:

[-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]

[-c <CATEGORY> [-c <CATEGORY>] ...]

[-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]

[--esn <EXTRA_KEY> ...]

[--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]

[--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]

[--el <EXTRA_KEY> <EXTRA_LONG_VALUE> ...]

[--ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE> ...]

[--eu <EXTRA_KEY> <EXTRA_URI_VALUE> ...]

[--ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE>]

[--eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]]

[--ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]]

[--efa <EXTRA_KEY> <EXTRA_FLOAT_VALUE>[,<EXTRA_FLOAT_VALUE...]]

[-n <COMPONENT>] [-f <FLAGS>]

示例:

如我们在 logcat 抓到如下打印启动了播放器:

START u0 {act=android.intent.action.VIEW dat=file:///storage/external_storage/sda1/[4KH265_60.000fps_9Mbps]Wetek-Astra-2m.mp4 typ=video/* flg=0x13000000 cmp=com.meson.videoplayer/.VideoPlayer} from pid 15204

则我们可以使用如下 am 指令来启动它:

am start -a android.intent.action.VIEW -d file:///storage/external_storage/sda1/[4KH265_60.000fps_9Mbps]Wetek-Astra-2m.mp4 -t video/* -f 0x13000000 -n com.meson.videoplayer/.VideoPlayer am start -n com.android.settings/.Settings //启动原生安卓设置主页

am broadcast -a com.chinamobile.action.KEY_PRESS_DOWN --ei keyCode 11 && am broadcast -a com.chinamobile.action.IR_TEST --es irphycode "0x008EDD22" //发送广播

查找命令,查找文件中是否包含指定字符串并输出该行示例:

grep -rns "repeat" /system/etc/remote1.conf //找出/system/etc/remote1.conf 所有包含 repeat 的行并展示行号

参数说明:

-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。

-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。

-f:覆盖已经存在的目标文件而不给出提示。

-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。

-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。

-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。

-l:不复制文件,只是生成链接文件。

命令示例:cp -a a  parentPath/sonPath/ a对应当前文件夹下目录或文件名  可替换为绝对路径 

移动指令,等效于 windows 的移动和重命名。

示例:

mv /data/tmp1 /data/local/tmp2 //将 data/tmp1移动到/data/local/ 并重命名为 tmp2

删除指令,用于删除文件和文件夹,示例:

rm -rf tmp // 删除 tmp,建议加上-rf参数,其会删除 tmp 所有的目录和文件。

创建目录。常用参数:

-p :若 mkdir -p 后接路径包含不存在路径则一并创建。

同步命令,常用于 cp 替换文件或指令结束后同步状态,有益无害。

重定向,即将一个命令的输出指向另外路径的文件,使用覆盖模式,即重定向到的文件若存在将覆盖里面的内容。

示例:

logcat > /data/xxx.log; //将 logcat输出到/data/xxx.log;

cat /proc/kmsg > /data/kmsg.log; //将 kmsg 打印输出重定向到/data/kmsg.log

重定向,即将一个命令的输出指向另外路径的文件,使用拼接模式,即重定向到的文件若存在则将输出拼接到原文件的后面。

示例:

logcat > >/data/xxx.log; //例如我们做 netreboot的时候需要每一次开关机的 log,则会用拼接模式记录log。

将指令放至后台静默执行。

依次执行指令,若有指令执行失败,则后续指令不会执行。

示例:

logcat -c && logcat //先清除 logcat 缓存再抓取 log

阅读全文

与卸载apk的命令相关的资料

热点内容
如何在云服务器上安装2s 浏览:7
怎么把王者安卓号转移到苹果 浏览:779
思科密码加密后怎么登录 浏览:591
安卓手机生态垃圾怎么办 浏览:113
fy187 浏览:597
python中文文字识别 浏览:882
日本蕾丝边电影 浏览:796
斯坦福编译原理讲义 浏览:147
国外大尺度漏器官电影 浏览:433
玩具解压神器怎么做 浏览:299
安卓手机如何共存歌曲 浏览:426
简单的游戏代码源码 浏览:346
金蝶服务器怎么改 浏览:595
h y p 6.vip 浏览:709
韩国战争电影十大巅峰之作 浏览:425
大尺度百合剧 浏览:112
为什么要叫毒app 浏览:492
编程类校赛 浏览:994
五十五度灰 浏览:351