1.升级安卓4.2.2版本后,源码手机无法连接电脑的源码问题怎么解决?
2.å¦ä½è°è¯Android Framework
3.Android Adb 源码分析(一)
4.linuxä¸å
³äºadbå½ä»¤çä¸äºç¥è¯
升级安卓4.2.2版本后,手机无法连接电脑的源码收割 指标源码问题怎么解决?
第一 手机设置里面,把usb调试打开,源码再连接电脑,源码赵源码头手机会自动安装驱动。源码南图源码
第二 对应你手机的源码型号,在网上搜索连接电脑需要的源码驱动,可以在你手机的源码官网上下载。
第三 可能是源码找的ROM包有问题,可以尝试换一个4.的源码。
最后,源码如果你的源码源码时代总部手机配置不再三星note的配置以上的话,不推荐刷4.0以上版本:1.耗电高 2.内存占用偏大 3.手机配置跟不上用上很卡。源码
(以上为我本人观点,源码亚太代理源码供楼主参考) 回答完毕,收工,求最佳!
å¦ä½è°è¯Android Framework
å ¶å®æ´ä¸ªè°è¯è¿ç¨é常ç®åï¼
å¨ä½ è¦è°è¯è¿ç¨çåéä½ç½®æä¸æç¹
è·è¸ªä»£ç (Step in/out/overçç)
å¨å±å¼è®²è¿°è¿ä¸¤æ¹é¢ä¹åï¼æå¿ è¦å ç®åäºè§£ä¸è°è¯çåºç¡ç¥è¯ãJavaå¹³å°çè°è¯æ¯æä¸ä¸ªè§èåçæ åçï¼é£å°±æ¯JPDA(Java Platform Debugger Architecture);éè¿ JPDA æä¾ç APIï¼å¼å人åå¯ä»¥æ¹ä¾¿çµæ´»çæ建 Java è°è¯åºç¨ç¨åºã JPDA 主è¦ç±ä¸ä¸ªé¨åç»æï¼Java èææºå·¥å ·æ¥å£(JVMTI)ï¼Java è°è¯çº¿åè®®(JDWP)ï¼ä»¥å Java è°è¯æ¥å£(JDI)ã
Javaç¨åºçè°è¯æ éå°±æ¯éè¿ä¸ä¸ªè°è¯å¨(debugger)è·å对åºJavaèææºçä¿¡æ¯ï¼ä¸ææè¿°çJDWPå°±æ¯è°è¯å¨ä¸èææºéä¿¡çæ¡¥æ¢ãå¨dalvikèææºå é¨æä¸ä¸ªä¸é¨çjdwp线ç¨ï¼Androidç³»ç»çadbdè¿ç¨éè¿socketä¸å个èææºçjdwp线ç¨è¿è¡éä¿¡ï¼å¤é¨è°è¯å¨éè¿adbå·¥å ·ä¸adbdéä¿¡è¿èå®æä¸jdwpçéä¿¡ãæ们é常æ说çãattach debuggerãæçå°±æ¯è¿ä¸ªææââè¿æ¥å°æå®çéè¦è°è¯çè¿ç¨ã
è°è¯å¨å·¥ä½åç
å¦ä½å¨æ£ç¡®çå°æ¹ä¸æç¹
ãæ£ç¡®çå°æ¹ãå å«ä¸¤ä¸ªå«ä¹ï¼é¦å ï¼è°è¯æ¯ä»¥è¿ç¨ä¸ºåä½è¿è¡çï¼å¦æä½ éè¦è°è¯è¿è¡å¨è¿ç¨A ä¸ç代ç ï¼å´ædebugger attachå°äºBè¿ç¨ï¼é£ä¹è¿ä¸ªæç¹åæ ¹å¿å°±æ¯ç头ä¸å¯¹é©¬å´;å¦å¤å¢ï¼æ¯å¦ä½ æ³è°è¯Androidçå¤åªä½æ¡æ¶ï¼ä½ å¾ç¥émediaç¸å ³çç±»å¨åªå§ï¼ä¹å°±æ¯è¯´éè¦å¨æ£ç¡®çå½æ°éé¢ä¸æç¹ã
å¦ä½å¨åéçè¿ç¨ä¸æç¹?
å¦ææ¯è°è¯æ们èªå·±åçAppï¼å¨Android Studioéé¢é常ç®åï¼å¨Runèådeæåé¢æä¸ä¸ªattach debugger to android process çé项ï¼ç¹å»ä¹åä¼åºç°ä¸ä¸ªèåï¼éæ©èªå·±éè¦è°è¯çè¿ç¨å³å¯;ä½æ¯ï¼å¦æéè¦è°è¯Android Frameworkå±ç代ç ï¼è¿æ ·åæ¯è¾¾ä¸å°ç®ççââFrameworkå±ç代ç é常è¿è¡å¨å«çè¿ç¨(æ¯å¦ActivityManagerServiceè¿è¡å¨system_serverè¿ç¨)ï¼èè¿äºè¿ç¨é常æ åµä¸æ¯ä¸å¯è°è¯çï¼ä¹å°±æ¯è¯´å¨attach debugger to android process çé£ä¸ªèåéé¢ä¸ä¼æç³»ç»çè¿ç¨ï¼å¦ä¸å¾ï¼
æ®éçæ æ³è°è¯çAndroid设å¤
为ä»ä¹ä¸å¯è°è¯å¢?ä¸ææ们ç®è¦è®²è¿°äºè°è¯å¨çå·¥ä½åçï¼æ们ç¥éæ¯ä¸ä¸ªèææºæä¸ä¸ªjdwp线ç¨ï¼å¦æè¿ä¸ªçº¿ç¨æç»è¿æ¥å°è°è¯å¨ï¼ä½ ä¹å°±æ²¡åæ³å¯¹è¿ä¸ªè¿ç¨è¿è¡è°è¯äºãAndroidçææAppè¿ç¨é½æ¯éè¿Zygoteè¿ç¨forkåºæ¥çï¼æ们å¨android.os.Processè¿ä¸ªç±»éé¢å¯ä»¥çå°androidè¿ç¨çå¯å¨è¿ç¨æè¿ä¹ä¸å¥ï¼
if ((debugFlags & Zygote.DEBUG_ENABLE_DEBUGGER) != 0) {
argsForZygote.add("--enable-debugger");
}
ä¹å°±æ¯è¯´ï¼ä¸ä¸ªè¿ç¨æ¯å¦å¯ä»¥è°è¯æ¯ç±è¿ç¨å¯å¨æ¶åçåæ°å³å®ç;æ®éçAppè¿ç¨å¦ææ¯debug keystoreé»è®¤æ¯å¯ä»¥è°è¯çï¼ææè ä½ å¨AndroidManifestéé¢æå®debuggable为trueä¹æ¯å¯ä»¥è°è¯çã对系ç»è¿ç¨ï¼æ们åªæéåç³»ç»çº§å«çæ段ï¼è®©æ´ä¸ªç³»ç»å¯ä»¥è°è¯ââdebugçæè ç¼è¯åæ°debuggable为1çç³»ç»ã
解å³è¿ä¸ªåæ³å¾ç®åï¼ä½¿ç¨æ¨¡æå¨(çæºä¹è¡ï¼éNexusç³»åå·åçAndroidç³»ç»ï¼æç³»ç»å¯å¨çdebuggableåæ°ä¿®æ¹ä¸º1)ï¼æçNexus 5 å¯ä»¥è°è¯çè¿ç¨å¦ä¸ï¼
å¯è°è¯ä»»æè¿ç¨ç设å¤
è¿æ ·ï¼ç³»ç»ä¸ææçAndroidè¿ç¨é½å¯ä»¥è°è¯äº;è¿ä¸ç¹å¾éè¦ï¼æ¯å¦ä½ è¦åæActivityçå¯å¨æµç¨ï¼ç¸å½å¤ä¸é¨å代ç æ¯å¨ActivityManagerServiceæå¨çè¿ç¨system_serveræ§è¡çï¼å¦æä½ ææç¹æå¨å«çè¿ç¨ï¼å°±ä¼äº§çè·ä¸¢äºçæ åµãå¨æ¯å¦ï¼ä½ è¦è°è¯ActivityThreadçmainå½æ°ï¼å¨mainå½æ°éé¢æ§è¡äºä¸å¥attachï¼æç»è°ç¨AMSçattachApplicationçæ¶åï¼ä»£ç å°±éè¿Binder IPCè°ç¨å°äºAMSçsystem_serverè¿ç¨ã
æç½ä½ è¦æ§è¡ç代ç è¿è¡å¨åªä¸ä¸ªè¿ç¨ç¸å½éè¦ï¼å¨Androidä¸ï¼ç±äºBinderéä¿¡æºå¶çåå¨ï¼ãè¿ç¨è¿ç§»ã使ç¨çé常é常é¢ç¹ï¼å æ¤éè¦å¯¹binderæºå¶æä¸å®çäºè§£;详ç»çè¯å¯ä»¥åèæçå客ï¼Binderå¦ä¹ æå
å¦ä½å¨å¯¹åºç代ç å¤ä¸æç¹?
å设æ们ç°å¨ædebugger attachå°äºæ£ç¡®çè¿ç¨ï¼é£ä¹æç¹åºè¯¥ä¸å¨åªéå¢?ç´è§æ¥è®²ï¼å°±æ¯è¯´æéè¦å¯¼å ¥ææçAndroidæºç å?å¦æä¸æ¯åºè¯¥å¯¼å ¥åªäºä»£ç ï¼æä¹å¯¼å ¥?
é¦å ï¼å¦æä½ éè¦è°è¯çç±»å¨sdkéé¢å¯¼åºäºï¼ä½ åæ ¹å¿å°±ä¸éè¦åå¯¼å ¥æºç ï¼Android Studioèªå¨å¸®ä½ å ³èäºè¿é¨å代ç (åææ¯ä½ ç¨SDK Managerä¸è½½äºsdkçæºç ï¼å¦ä¸å¾ï¼
SDK managerä¸è½½æºç
æ¯å¦ä½ è¦è°è¯ActivityManagerServceç±»çattachApplicationæ¹æ³ï¼é£ä¹å¾ç®å;å建ä¸ä¸ªç©ºçAndroid项ç®ï¼SDKçæ¬éæ©ä¸ä½ è¦è°è¯ç模æå¨/çæº çandroidç¸å(è¿å¾éè¦ï¼ä¸æä¼è®²è¿°);ç¶åattrach å°system_serverè¿ç¨ï¼ç´æ¥å¨attach_applicationä¸é¢æä¸æç¹;é便å¯å¨ä¸ä¸ªappï¼å¯ä»¥çå°æ们çæçè°è¯çé¢ï¼
è°è¯attachApplication
å¦æè¿é¨åç±»å¨sdkä¸æ²¡æå¯¼å ¥(æ¯å¦@hide)çï¼åæè åæ ¹å¿ä¸æ¯SDKçç±»ï¼(æ¯å¦ç³»ç»appçæºç )é£åºè¯¥æä¹åå¢?ç´æ¥å¯¼å ¥è¿é¨å代ç å³å¯ãä¸éè¦æ¯Android项ç®ï¼æ®éçJava项ç®å³å¯;举个ä¾åï¼åè®¾ä½ æ³è°è¯åçAndroidç³»ç»çãç³»ç»è®¾ç½®ãè¿ä¸ªç¨åºï¼è¯¥å¦ä½åå¢?
æ ¹æ®ä¸é¢çåæï¼æ们é¦å å¾ç¥éãç³»ç»è®¾ç½®˜ãè¿è¡å¨åªä¸ä¸ªè¿ç¨ï¼é常æ åµä¸è¿ç¨ååå°±æ¯å å;æ们æ¥åºè®¾ç½®çå åå³å¯ï¼èå åæ¯å¨æºç çAndroidManifeistä¸å£°æçï¼å æ¤ï¼æ们æ¾å°ãç³»ç»è®¾ç½®ãè¿ä¸ªç¨åºçæºç å³å¯;æºç å¨ .uc.test
ç»ç«¯ä¸çæ§è¡ç»æ为:
é¤äºä¸é¢è¿ç§æ¹æ³ï¼æ们è¿æå¦å¤ä¸ä¸ªå½ä»¤ï¼
adb -s uninstall [options]
è¿éçoptionsæ¯-kï¼å ä¸è¯¥åæ°è¡¨æå¸è½½è½¯ä»¶åä¾æ§ä¿çç¨æ·æ°æ®
5) å°æ°æ®ä»è®¾å¤å¤å¶å°PCä¸
adb -s pull
eg:
adb -s eba9 pull /sdcard/stericson-ls D://
ç»ç«¯çæ§è¡ç»æï¼
å¨Dï¼//çä¸æ们ä¹å¯ä»¥åç°stericson-lsæ件
6) 讲æ°æ®ä»PC端å¤å¶å°è®¾å¤ä¸
adb -s push
eg:
adb -s eba9 push d://stericson-ls /sdcard/
ç»ç«¯çæ§è¡ç»æï¼
7) è·åè¿æ¥å°çææºçåºåå·
adb get-serialno
ç»ç«¯çæ§è¡ç»æï¼
8)è·å设å¤çè¿æ¥ç¶æ
adb -s get-state
eg:
adb -s eba9 get-stat
ç»ç«¯çæ§è¡ç»æï¼
9) çå¾ è®¾å¤è¿æ¥æå
adb wait-for-device
该å½ä»¤å°ä¼é»å¡ä¸ç´å°é»è®¤è¿æ¥çé£é¨æºå¨ç¶æå为deviceï¼ä¹å°±æ¯è¿æ¥æåã
) adb-server çå¼å¯ä¸å ³é
adb kill-server
adb start-server
ç»ç«¯çæ§è¡ç»æï¼
ææ¶åæ们å¼å¯serverä¼å¤±è´¥ï¼è¿æ¯å 为æä»¬è£ äºçææºå©æï¼è±è±èæè å ¶ä»è½¯ä»¶èªå¸¦æèªå·±çadbï¼å¯¼è´ç«¯å£å²çªå¼å¯å¤±è´¥ã主è¦å ³æé£äºè½¯ä»¶å¹¶ä¸ææé£äºè½¯ä»¶èªå¸¦çadbè¿ç¨éæ¥å³å¯ã
1.2 ææºæ§è¡Shellå½ä»¤
ä¼æå¨ç¥ï¼Androidçå æ ¸æ¬èº«å°±æ¯Linuxï¼æ以Androidæ¬èº«ä¹æ¯æLinuxå½ä»¤ï¼ä½æ¯å 为æ¯ææºç³»ç»ï¼æ以è¿è¡äºä¸å®çå åï¼é¨åå½ä»¤ä¸æ¯æï¼èä¸æ¯æçé¨åï¼æ们å¯ä»¥éè¿å®è£ busyboxè¿ä¸ªè½¯ä»¶è¿è¡
å¡«è¡¥ã
ä¸é¢æ们讲解ä¸å¦ä½å¨ææºä¸æ§è¡Shellå½ä»¤ï¼
1) æ¯æ¬¡é½å ä¸adb shellæ¥è¿è¡å½ä»¤çåéä¸æ§è¡
adb shell
2) å éè¿adb shellè¿å ¥ææºShellæ§è¡ç¶æï¼ç¶åç´æ¥è¾å ¥Linuxå½ä»¤ï¼å¦å¾ï¼
ãã
1.3 Activity Manager 常ç¨å½ä»¤ä¸åæ°è¯´æ
ä¸è¬æ åµä¸ï¼æ们æ常ç¨å®æ¥è¿è¡appçå¼å¯ï¼å¹¶ä¸ä¼ éä¸å®çåæ°è¿å»,æ¯å¦ï¼
adb shell am start -a android.intent.action.VIEW -n cn.uc.test/.MainActivity -d
å¨è¿éå°±ä¸å太è¿è¯¦ç»åéå¤ç说æäº
1.4 Package Manager 常ç¨å½ä»¤ä¸åæ°è¯´æ
1) 使ä¸ä¸ªapkå¤äºç¦ç¨ç¶æï¼ç¸å½äºå¸è½½äºï¼
disable
å ¶ä¸ PACKAGE_OR_COMPONENTçæ ¼å¼æ¯ package/classï¼ å¦ com.UCMobile/.main.UCMobile
eg:
adb shell su disable com.UCMobile/.main.UCMobile
ç»ç«¯æ§è¡ç»æï¼
åæ¶æ们å¨ææºä¸åç°ï¼UCæµè§å¨çå¾æ ä¸è§äº
2) 让ä¸ä¸ªapkä»ç¦ç¨ç¶ææ¢å¤è¿æ¥
enable
å ¶ä¸ PACKAGE_OR_COMPONENTçæ ¼å¼æ¯ package/classï¼ å¦ com.UCMobile/.main.UCMobile
eg:
adb shell su enable com.UCMobile/.main.UCMobile
ç»ç«¯æ§è¡ç»æï¼
åæ¶æ们ä»ææºä¸åç°ï¼UCæµè§å¨çå¾æ ååæ¥å¦ã
3) æ¥çä¸ä¸ªapkæå¨çè·¯å¾
pm path
eg:
adb shell pm path com.UCMobile
ç»ç«¯æ§è¡ç»æï¼
4) æ¥çææºä¸è£ çææçå
pm list packages
å次ä¸åè¿å¤ç说æ
1.5å ¶ä»å¸¸ç¨çadbå½ä»¤
1) å±å¹å½å
ä¾å¦ï¼å±å¹å¼å§å½å并ä¸å¨åå°/sdcardä¸ï¼åæ¶åå为demo.mp4
adb shell screenrecord /sdcard/demo.mp4
2) å ³é设å¤è¯·æ±ï¼å¼å¯è®¾å¤
adb shell stop
adb shell start
3)设å¤å ³æºä»¥åéå¯
adb reboot
adb shutdown