杂七杂八---常用命令2

category为:android.intent.category.HOME 表示随home应用启动的activity。
 
cts 测试:
http://developer.android.com/tools/device.html
./android-cts/tools/cts-tradefed
 CTS  Signature Android Java VM RefApp Performance
run cts  --plan  Android 运行某个测试计划。
start --plan Android -p android.acceleration  运行某个包
Start –plan [test plan name]–c  [plan_package_name].[class_name]#[plan_package_test_name]  运行某个测试项
list packages  list plans list invocations list commands list results list devices
not responsive to adb shell command skip adding to available pool  错误,可能是因为网络不好,没有连接上。
 
设置是否优化apk为odex,build/core.main.mk文件WITH_DEXPREOPT := true
查看签名:
jarsigner -keystore /working/mystore -verify -verbose -certs myTest.jar
 
google搜索 Windows 8″ filetype:pdf | filetype:pptx | filetype:docx | filetype:ppt | filetype:doc | filetype:rtf site:download.microsoft.com | inurl:”ftp://”
 
adb shell monkey -v 5000     (-p packages)
 
am broadcast -a android.intent.action.ActionName
am start -n com.android.settings/com.android.settings.Settings
 
多关注events日志。
判断系统重启,boot_progress_ams_ready
iptables -F清除所有规则

快捷方式,快速打开资源管理器服务
资源管理器 devmgmt %windir%\system32\devmgmt.msc
服务 services.msc %windir%\system32\services.msc
 
内存问题 
top -m 5 -s cpu -n 1
 
top,procrank,ps 
ps -x 得出的u: s:  为utime和stime应该是用户时间和系统时间
VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
• RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)
• PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
• USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
 
procrank
  • VSS- Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
  • RSS- Resident Set Size 实际使用物理内存(包含共享库占用的内存)
  • PSS- Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
  • USS- Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)

一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS

/proc/cpuinfo 系统CPU的类型等多种信息。
/proc/meminfo 系统内存使用信息
dumpsys meminfo "adb shell dumpsys meminfo com.teleca.robin.test" 将得到com.teleca.robin.test进程使用的内存的信息:
top  | grep app名称

ps  |  grep app名称

procrank | grep app名称

dumpsys meminfo app名称

前两个命令只能查到VSS RSS内存占用信息

而后面两个命令可以查出  PSS USS内存占用.

dumpsys meminfo 可以查出native和dalvik分别占用多少内存

dumpsys 用来给出手机中所有应用程序的信息,并且也会给出现在手机的状态。

dumpsys [Option]

               meminfo 显示内存信息

               cpuinfo 显示CPU信息

               account 显示accounts信息

               activity 显示所有的activities的信息

               window 显示键盘,窗口和它们的关系

             wifi 显示wifi信息

ActivityManager.MemoryInfo outInfo = new ActivityManager.MemoryInfo();
am.getMemoryInfo(outInfo);
outInfo.availMem即为可用空闲内存。

 
判断系统进程:
1.可以通过uid来过滤系统系统的安装包,因为android系统中的uid从 1000 ~ 9999 都是给系统程序保留的,所以只要判断package的uid > 10000即可判定该程序是非系统程序。
2.ApplicationInfo appInfo = p.applicationInfo;
    /**
     * Value for {@link #flags}: if set, this application is installed in the
     * device's system image.
     */
if((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) >0)
    //系统程序
else
    //不是系统程序
3.通过获取的安装包(包括安装的与系统自身的应用程序),对其android.content.pm.PackageInfo的packageName 进行过滤,
但是Anrodi与google的包比较容易过滤掉,但需要对不同产商进行适配;
 
记录日志信息 adb shell "su xxxlogcat -v time -f /data/logcat.log -r 1000 " &
导出日志先修改权限,su xxx chmod 777 /data/logcat.log
 
adb shell tcpdump -i rmnet0 -vv -s 0 -w /mnt/sdcard/output.cap &
 
查看电量:/sys/class/power_supply/bq27541
MTP无法用:
安装windows player 11
设置c:\windows\inf\wpdmtp.inf增加%GenericMTP.DeviceDesc%=MTP, USB\VID_XXXX&PID_XXXX&MI_00
 
反编译odex 和apk:
1.  java -jar baksmali-1.2.2.jar -x <a.odex>
a)UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.RuntimeException: bad magic value: 64 65 79 0a 30 33 36 00
b)smali 版本不对导致。2.3.5的需要用1.2.8版本。
org.jf.dexlib.Util.ExceptionWithContext: regCount does not match the number of a
rguments of the method

2.  将 class 生成为 classes.dex 文件。

命令: java -Xmx512M -jar smali-1.2.2.jar out -o classes.dex

3. classes.dex 放入 apk 里面
 
查看apk签名:
jarsigner -verbose -certs -verify apk
 
安装apk异常
Android: INSTALL_FAILED_UPDATE_INCOMPATIBLE错误解决措施 
以前uninstall应用的时候,没有做彻底,执行adb uninstall
INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
有时候我们在APK安装时由于工程制定了UID,换过签名后可能出现类似 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 或 INSTALL_FAILED_UPDATE_INCOMPATIBLE 的错误,对于后者我们可以通过Logcat看到具体的比如说 has no signatures that match those in shared user 这样的关键字,这是由于使用了sharedUserId后你使用了不同的签名造成的  
 
git ls-files > filelist.txt  
find > filelist.txt
getevent /dev/input/event1
adb logcat -t file -r 1000 //设置日志文件大小,1000k,超过了则记录到下一个文件中。
shell脚本:
1.for循环:
for i in `busybox seq 10000`
do
done
2.发送touch事件:
touch 83 718 //坐标点位置,通过getevent 从/dev/input/event1中获取,
/dev/input/event1: 0003 0039 00000000
/dev/input/event1: 0003 0035 0000016e  //
注意需要进行转换。16e 和 1ea 从十六进制 -->十进制。
/dev/input/event1: 0003 0036 000001ea
/dev/input/event1: 0003 003a 000000c8
touch()
{
    sendevent /dev/input/event1 3 57 35
    sendevent /dev/input/event1 3 53 $1
    sendevent /dev/input/event1 3 54 $2
    sendevent /dev/input/event1 3 58 200
    sendevent /dev/input/event1 0 2 0
    sendevent /dev/input/event1 1 330 1
    sendevent /dev/input/event1 0 0 0
    #sendevent /dev/input/event2 3 57 0
    #sendevent /dev/input/event2 3 53 $1
    #sendevent /dev/input/event2 3 54 $2
    sendevent /dev/input/event1 3 58 200
    sendevent /dev/input/event1 0 2 0
    #sendevent /dev/input/event2 0 0 0
    #sendevent /dev/input/event2 0 2 0
    sendevent /dev/input/event1 1 330 0
    sendevent /dev/input/event1 0 0 0
    sleep 1
 
 
使用procrank查看进程内存
 # echo standby > /sys/power/state 命令系统进入休眠
 
echo PowerMana > wake_unlock 解除加锁。
 
echo    mem    /sys/power/state                            使系统进行睡眠
echo  on   > /sys/power/state      使系统从睡眠中唤醒过来
标志性:Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done

Android在Linux内核原有的睡眠唤醒模块上基础上,主要增加了下面三个机制:

    Wake _Lock 唤醒锁机制;

Early _Suspend 预挂起机制;

Late _Resume 迟唤醒机制;

http://blog.sina.com.cn/s/blog_759dc36b0100stax.html

 

强制亮屏:
PowerManager.WakeLock mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
                            | PowerManager.ACQUIRE_CAUSES_WAKEUP
                            | PowerManager.ON_AFTER_RELEASE/*PowerManager.PARTIAL_WAKE_LOCK*/"AlarmReceiver");
//得到键盘锁管理器对象
KeyguardManager  km=(KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
//解锁
KeyguardLock kl= km.newKeyguardLock("unLock");
kl.disableKeyguard();
//重新启用自动加锁
kl.reenableKeyguard();
 
杀死应用:
ActivityManager am = (ActivityManager)getActivity().getSystemService(
                Context.ACTIVITY_SERVICE);
        for (int i = 0; i < mPackages.length; i++) {
            am.forceStopPackage (mPackages[i]);
        }
不允许应用重启:
Intent intent = new Intent(Intent.ACTION_QUERY_PACKAGE_RESTART ,
                Uri.fromParts ("package"mPackages[0], null));
        intent.putExtra(Intent.EXTRA_PACKAGES mPackages);
        intent.putExtra(Intent.EXTRA_UIDmUid);
        getActivity().sendOrderedBroadcast(intent, null, mCheckKillProcessesReceiver null,
                Activity.RESULT_CANCELEDnullnull);
 
public static boolean RootCommandDumpstate(String command)
    {
        Process process = null;
        DataOutputStream os = null;
 
        try{
            //process = Runtime.getRuntime().exec("su");
            process = Runtime.getRuntime().exec("suapk");
            os = new DataOutputStream(process.getOutputStream());
            os.writeBytes(command + "\n");
            os.writeBytes("exit\n");
            os.flush();
            process.waitFor();
        }catch (Exception e){
            Log.d("*** DEBUG ***", "ROOT REE" + e.getMessage());
            return false;
        } finally{
            try{
                if (os != null) {
                    os.close();
                }
                process.destroy();
            } catch (Exception e){
            }
        }
        Log.d("*** DEBUG ***", "Root SUC ");
        return true;
    }
 
 
CDMA 与 GSM切换出错问题:
无法判断sim卡类型导致。
现在在UiccCardApplication.update 方法中通过AppType 类型来判断 sim卡类型。
此处优先于ServiceStateTracker.updateIccAvailability ()
流程:
 
EVENT_ICC_STATUS_CHANGED 事件-->EVENT_GET_ICC_STATUS_DONE 事件-->
UiccManager.onGetIccCardStatusDone -->
1.mUiccCards[index].update(mContextmCi[index], status);
2.mIccChangedRegistrants.notifyRegistrants -->ServiceStateTracker.updateIccAvailability

你可能感兴趣的:(杂七杂八---常用命令2)