導航:首頁 > 程序命令 > 卸載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的命令相關的資料

熱點內容
日本男男電影大尺推薦 瀏覽:326
最好用指標源碼 瀏覽:775
寬窄巷子離奎星樓街源碼 瀏覽:111
我欲封天什麼時候開新伺服器 瀏覽:540
750影視是美 瀏覽:500
香港電影主角喜歡殺女人再把奶頭咬掉 瀏覽:213
李彩譚性感模特 瀏覽:144
外國大寸度愛情電 瀏覽:329
李彩譚作品介紹 瀏覽:894
安卓主頁怎麼弄好看 瀏覽:602
外出思念老婆生了個娃什麼電影 瀏覽:538
app怎麼都登陸這么慢 瀏覽:334
好看的小電影地址 瀏覽:807
下巴上蛋蛋是什麼電影 瀏覽:204
古代酷刑電影 瀏覽:755
好電影網址 瀏覽:406
3D動漫電影 瀏覽:788
寶書網 小說 瀏覽:899
安卓手機藍牙刷新怎麼設置 瀏覽:4