Tcp/IP通信也是不安全的,在傳輸?shù)臅r(shí)候也可能出現(xiàn)漏洞
查看正在運(yùn)行的進(jìn)程
adb shell ps -A
|grep "messaging"
adb shell logcat -b
events |grep proc_died
(random accessmemory) RAM=運(yùn)行內(nèi)存,(Read-Only Memory) ROM=儲(chǔ)存內(nèi)存=EMMC(閃存)
手機(jī)的運(yùn)行內(nèi)存是指運(yùn)行程序時(shí)存儲(chǔ)或者暫時(shí)存儲(chǔ)的地方,而CPU是用來(lái)計(jì)算的支救。
RAM:運(yùn)行內(nèi)存乍楚。RAM越大,手機(jī)可運(yùn)行的APP應(yīng)用程序越多,RAM越大手機(jī)運(yùn)行速度越流暢(目前基本是2GB夠用菩咨、3GB流暢捌显、4GB用的更爽)茁彭。
ROM:儲(chǔ)存空間。ROM越大扶歪,手機(jī)儲(chǔ)存的文件數(shù)量越多理肺,ROM的大小(16GB击罪、32GB哲嘲、64GB等)不影響手機(jī)運(yùn)行速度。
ROM一般包括:系統(tǒng)空間+用戶(hù)安裝程序空間+用戶(hù)儲(chǔ)存空間三個(gè)部分媳禁。
cpu當(dāng)前頻率節(jié)點(diǎn)
adb shell cat
proc/cpufreq/MT_CPU_DVFS_LL/cpufreq_freq
adb logcat |grep -iE"gcm|gms" --color? //過(guò)濾關(guān)鍵字眠副,并且顏色標(biāo)記顯示
——修改前[pm.dexopt.boot]: [verify] [pm.dexopt.ab-ota]:[speed-profile] [pm.dexopt.shared]: [speed] [pm.dexopt.install]:[quicken] [pm.dexopt.inactive]: [verify] [pm.dexopt.bg-dexopt]:[speed-profile] [pm.dexopt.first-boot]: [quicken] ——修改后[pm.dexopt.boot]: [speed] [pm.dexopt.ab-ota]:[speed-profile] [pm.dexopt.shared]: [speed] [pm.dexopt.install]:[speed] [pm.dexopt.inactive]: [verify] [pm.dexopt.bg-dexopt]:[speed-profile] [pm.dexopt.first-boot]: [speed]
淺談Android內(nèi)存管理https://www.cnblogs.com/lianghe01/p/6617275.html
adb shell getprop |grepdalvik.vm.heapsize當(dāng)java進(jìn)程申請(qǐng)的java空間超過(guò)閾值時(shí),就會(huì)拋出OOM異常(這個(gè)閾值可以是48M竣稽、24M囱怕、16M等,視機(jī)型而定)
應(yīng)用程序如何繞過(guò)dalvikvmheapsize的限制?
對(duì)于一些大型的應(yīng)用程序(比如游戲)毫别,內(nèi)存使用會(huì)比較多娃弓,很容易超超出vmheapsize的限制,這時(shí)怎么保證程序不會(huì)因?yàn)镺OM而崩潰呢岛宦?
(1)台丛、創(chuàng)建子進(jìn)程
創(chuàng)建一個(gè)新的進(jìn)程,那么我們就可以把一些對(duì)象分配到新進(jìn)程的heap上了,從而達(dá)到一個(gè)應(yīng)用程序使用更多的內(nèi)存的目的挽霉,當(dāng)然防嗡,創(chuàng)建子進(jìn)程會(huì)增加系統(tǒng)開(kāi)銷(xiāo),而且并不是所有應(yīng)用程序都適合這樣做侠坎,視需求而定蚁趁。創(chuàng)建子進(jìn)程的方法:使用android:process標(biāo)簽
(2)、使用jni在nativeheap上申請(qǐng)空間(推薦使用)
nativeheap的增長(zhǎng)并不受dalvikvm heapsize的限制实胸,從圖6可以看出這一點(diǎn)他嫡,它的nativeheap size已經(jīng)遠(yuǎn)遠(yuǎn)超過(guò)了dalvikheap size的限制。
只要RAM有剩余空間庐完,程序員可以一直在nativeheap上申請(qǐng)空間钢属,當(dāng)然如果RAM快耗盡,memorykiller會(huì)殺進(jìn)程釋放RAM假褪。大家使用一些軟件時(shí)署咽,有時(shí)候會(huì)閃退,就可能是軟件在native層申請(qǐng)了比較多的內(nèi)存導(dǎo)致的生音。比如宁否,我就碰到過(guò)UCweb在瀏覽內(nèi)容比較多的網(wǎng)頁(yè)時(shí)閃退,原因就是其nativeheap增長(zhǎng)到比較大的值缀遍,占用了大量的RAM慕匠,被memorykiller殺掉了。
(3)域醇、使用顯存(操作系統(tǒng)預(yù)留RAM的一部分作為顯存)
使用OpenGL textures等API台谊,texture memory不受dalvik vm heapsize限制,這個(gè)我沒(méi)有實(shí)踐過(guò)譬挚。再比如Android中的GraphicBufferAllocator申請(qǐng)的內(nèi)存就是顯存锅铅。
adb shell
screenrecord /sdcard/test.mp4
提MTKcase時(shí)務(wù)必提供log,如果log太大不能在A(yíng)LM系統(tǒng)中放入减宣,需通過(guò)如下的MTK網(wǎng)址上傳log盐须,注意下面紅框的部分
https://transfer.mediatek.com/Default/ShareFile
郵件:mtkeservice@mediatek.com
adb logcat |grep"proposedRotation \| Screen"過(guò)濾多個(gè)關(guān)鍵字,要加轉(zhuǎn)義字符
adb logcat |grep -iE"gcm|gms" --color? //過(guò)濾關(guān)鍵字漆腌,并且顏色標(biāo)記顯示
SystemProperties.getBoolean("ro.config.remove.focusmode",false);如果取不到ro.config.remove.focusmode擇默認(rèn)值就為false.反之為ro.config.remove.focusmode的值
systrace抓取方法:
external/chromium-trace
python systrace.py
-l
python systrace.py
-t 10 -o chrome.taobao.html gfx input view webview wm am sm hal app
res dalvik rs hwui perf bionic power pm ss database network adb pdx
sched freq idle load memreclaim binder_driver binder_lock
參考范例:https://www.cnblogs.com/yezhennan/p/5442031.html
adb shell dumpsyswindow ->尋找focus關(guān)鍵詞贼邓,看當(dāng)前在那個(gè)進(jìn)程上面
mtk項(xiàng)目
“應(yīng)用/系統(tǒng)”crash/anr導(dǎo)log方法:
1.獲取dropbox.txt查看crash/anr
? ? adb shell
dumpsys dropbox --print > dropbox.txt
2.獲取bugreport.zip查看
? ? adb bugreport
3.pull aee_exp文件
? ? adb shell
? ? cd
/data/aee_exp
? ? ls -al
? ? check db.xx.xx
退出adb
? ? adb pull
/data/aee_exp/db.xx.xx .
通過(guò)adbshell am force-stop包名 來(lái)殺掉這個(gè)程序
測(cè)量腳本:http://developer.tclcom.com/knowledgeshare/KMS/cd_swd2/performance/common_tool_set/android_go_check_req_tool/
測(cè)試需求:http://developer.tclcom.com/knowledgeshare/KMS/cd_swd2/performance/GOOGLE_Document/android_go/GMS-Go-Requirements-draft-20171215.pdf
由于A(yíng)OSPphone在這個(gè)版本上移除了,所有MMIcode更新如下:
版本查詢(xún):*#7223#->*#*#7223#*#*
MMI測(cè)試:*#2886#->*#*#2886#*#*
disable GMS:
###666#->*#*#666#*#*
HW查詢(xún):*#28#->*#*#28#*#*
Regulatory&Saftely:*#07#->*#*#07#*#*
SVN查詢(xún)保持不變: *#06#
MTKLOG:*#*#3646633#*#*
一般來(lái)說(shuō)一個(gè)APK中的各個(gè)組件(Activity闷尿,Service塑径,Provider,Receiver)都是運(yùn)行在同一個(gè)進(jìn)程中填具,進(jìn)程名通過(guò)一下兩種方式確定:
(1)通過(guò)AndroidManifest.xml中的application標(biāo)簽中android:process指定;
(2)如果(1)中沒(méi)有指定统舀,那么進(jìn)程名就是APK的包名
另一種方式:?jiǎn)?dòng)apk,然后打logcat,在log日志中搜索"pkg="绑咱,即可定位
WindowManager: in
isMMITestTop, pkg=com.android.chrome
也可以用adbshell dumpsys window绰筛,然后搜focus,即可定位
1:給MTK提case時(shí)在summary里務(wù)必按照如下格式填寫(xiě)描融,這樣可以讓MTK更容易甄別公司名和項(xiàng)目名,模塊也更清晰衡蚂。
[Company][Porject][Test]
·? ? ? ? [TCL]A3A
VF][CTS]…
·? ? ? ? [TCL][U5A
PLUS VF][Performance]…
·? ? ? ?
[TCL][U50A PLUS TF][WIFI]…
2:提MTKcase時(shí)務(wù)必提供log窿克,如果log太大不能在A(yíng)LM系統(tǒng)中放入,需通過(guò)如下的MTK網(wǎng)址上傳log毛甲,注意下面紅框的部分
https://transfer.mediatek.com/Default/ShareFile
常用的內(nèi)存調(diào)優(yōu)分析命令:
dumpsys meminfo
procrank
cat /proc/meminfo
free
showmap
vmstat
top命令是看cpu占用率的
Proportional SetSize——實(shí)際物理內(nèi)存(PSS)
//
dumpsys meminfo--package? //輸出指定包名的進(jìn)程年叮,可能包含多個(gè)進(jìn)程
例如
要查看 com.android.systemui的內(nèi)存使用情況
adb shell dumpsys -t
20 meminfo com.android.systemui?
adb shell dumpsysprocstats --hours 3輸出最后3小時(shí)收集的內(nèi)存信息
//
? *
com.google.android.apps.magazines / u0a59:?
TOTAL:3.6% (10MB-10MB-10MB/8.7MB-9.0MB-9.0MB over 6)? ? //注釋 minPss-avgPss-maxPss/ minUss-avgUss-maxUss
? ? ? ? ? Imp Bg:
0.03%?
? ? ? ? Service:
3.6% (10MB-10MB-10MB/8.7MB-9.0MB-9.0MB over 6)?
? ? ? ? (Cached):
17% (9.9MB-10MB-10MB/8.7MB-8.9MB-9.0MB over 5)
查看手機(jī)的進(jìn)程等信息
ps -A/-a/..
-A All processes
-a Processes with
terminals that aren't session leaders
-d All processes
that aren't session leaders
-e Same as -A
-g Belonging to
GROUPs
-G Belonging to real
GROUPs (before sgid)
-p PIDs (--pid)
-P Parent PIDs
(--ppid)
-s In session IDs
-t Attached to
selected TTYs
-T Show threads
-u Owned by USERs
-U Owned by real
USERs (before suid)
[Root Cause]:產(chǎn)生該問(wèn)題的根本原因是什么
[Solution]:對(duì)所提交的方案進(jìn)行描述
[SelftestAction]:針對(duì)提交的方案,方案提交者做過(guò)哪些測(cè)試進(jìn)行驗(yàn)證玻募,驗(yàn)證結(jié)果如何
[Testsuggestion]:針對(duì)這個(gè)問(wèn)題本身只损,從開(kāi)發(fā)的角度給出測(cè)試建議,并給出所提交的修改方案可能會(huì)產(chǎn)生的影響的測(cè)試建議。
.
查詢(xún)手機(jī)里的屬性
adb shell getprop
|grep "api"
CTS/GTS FingerPrint信息不一致解決方案:
[DESCRIPTION]
Settings中AboutPhone的Modelnumber等信息的修改
[SOLUTION]
修改alps\build\tools\buildinfo.sh
-修改echo"ro.build.display.id=$BUILD_DISPLAY_ID",把$BUILD_DISPLAY_ID修改成其他的名稱(chēng)可改變Build Nubmer.注意此時(shí)要去除$.
-修改echo"ro.product.model=$PRODUCT_MODEL",把
$PRODUCT_MODEL修改成其他的名稱(chēng)可改變Model Nubmer.注意此時(shí)要去除$
-修改echo "ro.build.version.release=2.1" ,中的2.1,可改變顯示的Firmwareversion
-但是做上述修改時(shí)需要注意七咧,某些屬性是跟fingerprint相關(guān)的跃惫,如果修改了跟fingerprint相關(guān)的屬性,那么ro.build.fingerprint也要做出相應(yīng)修改
原始狀態(tài)下ro.product.fingerprint屬性設(shè)置如下:echo“ro.build.fingerprint=$BUILD_FINGERPRINT”
其中$BUILD_FINGERPRINT=$(PRODUCT_BRAND)/$(PRODUCT_NAME)/$( TARGET_DEVICE):$(PLATFORM_VERSION)/$(BUILD_ID)/$(BUILD_NUMBER):$(TARGET_BUILD_TYPE)/$( BUILD_VERSION_TAGS)
=>[ro.build.brand]/[ro.product.name]/[ro.product.device]:[ro.build.version.release]/[ro.build.id]/[ro.build.version.incremental]:[ro.build.type]/[ro.build.tags]
所以艾栋,如果修改了ro.build.brand爆存、ro.product.name、ro.product.device蝗砾、ro.build.version.release先较、ro.build.id、ro.build.version.incremental悼粮、ro.build.type闲勺、ro.build.tags這些屬性
那么,ro.product.fingerprint的屬性設(shè)置需要做出修改
假如貴司修改了”echoro.product.name=test_name”扣猫,那么ro.product.fingerprint的屬性設(shè)置需要修改為:
echo
"ro.build.fingerprint=${PRODUCT_BRAND}/test_name/${TARGET_DEVICE}:${PLATFORM_VERSION}/${BUILD_ID}/
${BUILD_NUMBER}:${TARGET_BUILD_TYPE}/${BUILD_VERSION_TAGS}"
grep -nri A ./
meld A路徑B路徑
(對(duì)比兩個(gè)文件)
Git鼓勵(lì)大量使用分支:
查看分支:gitbranch
創(chuàng)建分支:gitbranch
切換分支:gitcheckout
創(chuàng)建+切換分支:gitcheckout -b
合并某分支到當(dāng)前分支:gitmerge
刪除分支:gitbranch -d
也可以在命令后面跟程序的包名或進(jìn)程id來(lái)查看某個(gè)程序的內(nèi)存使用情況:
$adb shell dumpsys
meminfo $package_name or $pid
ACTIVITY MANAGERRECENT TASKS列出了最近打開(kāi)的Task的信息菜循,最上面的一行是最新打開(kāi)的Task信息,下面依次為更早時(shí)候打開(kāi)的Task的信息苞笨。
ACTIVITY MANAGERACTIVITIES列出了每個(gè)task的詳細(xì)信息债朵,即這個(gè)Task包含哪些Activity,他們的顯示順序是什么樣的等
子命令說(shuō)明命令格式
meminfo內(nèi)存adnshell dumpsys meminfo
cpuinfo CPU adn
shell dumpsys cpuinfo
gfxinfo幀率adnshell dumpsys gfxinfo
display顯示adnshell dumpsys display
power電源adnshell dumpsys power
batterystats電池狀態(tài)adnshell dumpsys batterystats
battery電池adnshell dumpsys battery
alarm鬧鐘adnshell dumpsys alarm
location位置adnshell dumpsys location
run cts -c
android.security.cts.StagefrightTest -m testStagefright_bug_21443020
--skip-preconditions
手機(jī)內(nèi)部搜索值:
adb shell getprop
|grep "Face"
編譯問(wèn)題:
Out of memory error
(version 1.2-rc4 'Carnac' (298900
f95d7bdecfceb327f9d201a1348397ed8a843843 by
android-jack-team@google.com)).
GC overhead limit
exceeded.
Try increasing heap
size with java option '-Xmx'.
1.import environment
variables
exportJACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8-XX:+TieredCompilation -Xmx4096m"? ---添加在你的.bashrc里
? 2.kill jack
server
./prebuilts/sdk/tools/jack-admin kill-server? ? ----編譯前執(zhí)行
? 3.start jack
server
./prebuilts/sdk/tools/jack-admin start-server? ---編譯前執(zhí)行
? 4.Turn off unused
programs as much as possible in order to make more memory available
參考:http://172.26.35.213/wiki/index.php/SIMBA6_CRICKET
沖突解決:
本地新開(kāi)終端:
repo init -u
git@cd.gitweb.com:MSM8909/manifests_cd.git -m
MSM8909.LA.2.0.1-cert.xml
repo sync沖突路徑
git checkout -t
origin/buzz6t4gtfumts_dint_upgrade_branch
git grep "<<<<<
HEAD"
使用vi修改瀑凝,
如遇二進(jìn)制沖突序芦,請(qǐng)郵件說(shuō)明
git commit -m "clone
coding for A502DL"
git add . &&
git commit -m "int merge code:Post-CS 0.0.036.1"
git push ssh://
name>@172.26.32.15:29418/MSM8909/
HEAD:refs/for/buzz6t4gtfumts_dint_upgrade_branch
git push
ssh://liqing.yuan@172.26.32.15:29418/mtk6763/kernel-4.4.git
HEAD:refs/for/mtk6763-o1-v1.0-dint_1A6A-5
git pull同步代碼
切換分支
NOTE :
? ? 1. Must use
command "git cherry-pick " to get modified
files firstly, you can get the commit id from every patch link.
? ? 2. If no
conflict, MUST use command "git reset HEAD^" to roll back
commit info and use patch delivery tool to submit modifications.
? ? 3. If have
conflicts, MUST use command "git reset HEAD" to roll back
commit info and use patch delivery tool to submit modifications.
查看項(xiàng)目git信息
git remote -v
01-08 13:22:23.509
2373? 2373 D stl? ? : ViewRootImpl 2373 Thread: 2373
01-08 13:22:25.929
4027? 4027 D stl? ? : ViewRootImpl 4027 Thread: 4027
01-08 13:22:26.979
4168? 4168 D stl? ? : ViewRootImpl 4168 Thread: 4168
01-08 13:22:27.949
3825? 3825 D stl? ? : ViewRootImpl 3825 Thread: 3825
01-08 13:22:28.069
3825? 3825 D stl? ? : ViewRootImpl 3825 Thread: 3825
前面一個(gè)號(hào)是進(jìn)程id,后面一個(gè)號(hào)是線(xiàn)程id
打開(kāi)當(dāng)前文件 nautilus+路徑 比如:nautilus./
打patch粤咪,談bug號(hào)框谚中,需要手動(dòng)刪除文件
/local/Projects/ELSA6_NA/.repo/repo/hooks$
rm patch-delivery-gui
repo forall -c
"pwd;git status;echo '~~~~~~~~~~~~~~~~~~~~~~~~~~~~'"
查找修改的路徑
搜索路徑的方式
find -name
*package.mk*
通過(guò)locate查找類(lèi)
lqyuan@SW2-YUANLIQI-D1:~/local/Tools/apktool$
locate ResizeableActivity
/data/home/lqyuan/local/Projects/Buzz6t-4g-tf-umts/cts/hostsidetests/services/activitymanager/app/src/android/server/app/NonResizeableActivity.java
/data/home/lqyuan/local/Projects/Buzz6t-4g-tf-umts/cts/hostsidetests/services/activitymanager/app/src/android/server/app/ResizeableActivity.java
/data/home/lqyuan/local/Projects/Buzz6t-4g-tf-umts/cts/tests/app/app/src/android/app/stubs/PipNotResizeableActivity.java
/data/home/lqyuan/local/Projects/Buzz6t-4g-tf-umts/cts/tests/app/src/android/app/cts/PipNotResizeableActivityTest.java
Android開(kāi)發(fā)--在Eclipse中使用android.support.v7
1、項(xiàng)目右鍵--> import --> Android --> ExistingAndroid Code Into workspace
-->選擇..\sdk\extras\android\support\v7\appcompat(根據(jù)自己的文件存放路徑先擇)
-->勾選copyprojects into workspace --> finish
(若出現(xiàn)unableto resolve target 'android-16',修改project.properties)
2、在項(xiàng)目中引用android.support.v7
項(xiàng)目右鍵--> properties --> Android --> Library--> Add --> OK
assertEquals([Stringmessage],Object target,Object result) target與result不相等宪塔,中斷測(cè)試方法磁奖,輸出message
獲取手機(jī)是什么版本useruserdebug daily
getprop
ro.build.type
查看三方應(yīng)用或是系統(tǒng)應(yīng)用簽名
用winrar打開(kāi)待查看的apk,將其中META-INF文件夾解壓出來(lái)某筐,得到其中的CERT.RSA文件比搭,通過(guò)keytool-printcert -file META-INF/CERT.RSA命令打印證書(shū)
信息
---------------------------------------------------------------------------------------------------------------
我們來(lái)分析Android的PackageManagerService,后面簡(jiǎn)稱(chēng)PMS南誊。PMS用來(lái)管理所有的package信息身诺,包括安裝、卸載抄囚、更新以及解析AndroidManifest.xml以組織相應(yīng)的數(shù)據(jù)結(jié)構(gòu)霉赡,這些數(shù)據(jù)結(jié)構(gòu)將會(huì)被PMS、ActivityMangerService等等service和application使用到幔托。PMS有幾個(gè)比較重要的命令可以用于我們debug中:
adb shell dumpsyspackage? (dump出系統(tǒng)中所有的application信息)
adb shell dumpsyspackage “com.android.contacts" p (dump出系統(tǒng)中特定包名的application信息)
---------------------------------------------------------------------------------------------------------------
boot log分析
adb shell cat
/proc/bootprof
從mainlog里面看一下穴亏,搜索dex2oat,會(huì)發(fā)現(xiàn),其實(shí)這個(gè)時(shí)候重挑,大部分的時(shí)間是在做編譯apk的動(dòng)作
lqyuan@SW2-YUANLIQI-D1:~/Desktop/4DB2/CTS/android-cts-6.0_r13/android-cts/tools$
adb shell cat /proc/bootprof
-------------start---------------------------
0 ? ? BOOT PROF
(unit:msec)
---------------------------------------------
? ? 13336.654571 :
BOOT_Animation:START
? ? 19606.061309 :
Zygote:Preload Start
? ? 23074.968351 :
Zygote:Preload 4158 classes in 3214ms
? ? 23522.002883 :
Zygote:Preload 114 obtain resources in 444ms
? ? 23541.512206 :
Zygote:Preload 41 resources in 18ms
? ? 23846.541843 :
Zygote:Preload End
25165.138201 :Android:PackageManagerService_Start? //此階段為pms對(duì)各種路徑下的apk包進(jìn)行掃描
? ? 26464.511174 :
Android:PMS_scan_START
? ? 35536.057816 :
Android:PMS_scan_done:/system/framework
? ? 38521.889231 :
Android:PMS_scan_done:/system/app
? ? 38640.165273 :
Android:PMS_scan_done:/system/vendor/app
? ? 38644.640377 :
Android:PMS_scan_data_start
? ? 42646.532317 :
Android:PMS_scan_data_done:/data/app
? ? 42648.217942 :
Android:PMS_scan_data_done:/data/app-private
? ? 42650.476796 :
Android:PMS_scan_data_done:/data/app-ephemeral
? ? 42721.348411 :
Android:PMS_scan_END
? ? 45559.652742 :
Android:PMS_READY
? ? 48898.794002 :
AP_Init:[service]:[com.google.android.inputmethod.latin]:[com.google.android.inputmethod.latin/com.android.inputmethod.latin.La
? ? 48952.401242 :
AP_Init:[service]:[com.android.systemui]:[com.android.systemui/.ImageWallpaper]:pid:3575:(PersistAP)
? ? 49172.442962 :
AP_Init:[]:[WebViewLoader-armeabi-v7a]:pid:3609
? ? 50618.419476 :
AP_Init:[added
application]:[com.jrdcom.jrdwfcmanager]:[com.jrdcom.jrdwfcmanager]:pid:3807:(PersistAP)
? ? 50652.964477 :
AP_Init:[added
application]:[com.tcl.dmvzwclient]:[com.tcl.dmvzwclient]:pid:3821:(PersistAP)
? ? 50697.041404 :
AP_Init:[added
application]:[com.android.phone]:[com.android.phone]:pid:3845:(PersistAP)
? ? 50770.493175 :
AP_Init:[activity]:[com.android.settings]:[com.android.settings/.FallbackHome]:pid:3866
? ? 52518.083441 :
AP_Init:[service]:[com.qualcomm.qcrilmsgtunnel]:[com.qualcomm.qcrilmsgtunnel/.QcrilMsgTunnelService]:pid:3971
? ? 52964.551046 :
AP_Init:[broadcast]:[org.codeaurora.ims]:[org.codeaurora.ims/.ImsServiceAutoboot]:pid:4062
? ? 55030.651105 :
BOOT_Animation:END
--------------end--------------------------
獲取手機(jī)項(xiàng)目名:
adb shell cat
/system/build.prop
ro.product.brand=TCL
ro.product.name=A576CC
ro.product.device=Mickey6CC
抓取更多l(xiāng)og
adb shell dumpsys
activity log a on?
adb logcat -v time
-b all > log.tx
adb shell dumpsys >
dumpsys.txt
adb shell bugreport
> bugreport.txt
python正則表達(dá)式
http://blog.csdn.net/smilelance/article/details/6529950
cat /proc/zoneinfo
編譯boot_image的命令
./makeTcl -t
Mickey6TFUMTS kernel
實(shí)踐中發(fā)現(xiàn)還有某些同學(xué)不清楚如何檢查字符串問(wèn)題.再補(bǔ)充一下:
1.處理翻譯bug嗓化,先根據(jù)測(cè)試提供的字符串找出stringid
2.根據(jù)stirngid到 wimdata_ng/wlanguage/src/string.xls 搜索,看string.xls中的內(nèi)容是否符合預(yù)期.如果符合預(yù)期就說(shuō)明
現(xiàn)在翻譯是對(duì)的攒驰,不用再轉(zhuǎn)到chengqiang處理.
3.string.xls中是對(duì)的蟆湖,有可能是測(cè)試報(bào)bug的時(shí)候string.xls是KO的,現(xiàn)在string.xls更新后已經(jīng)好了.那么在
最新版本上驗(yàn)證是否OK.如果還是有問(wèn)題則按照xinxin方法檢查模塊是否加入翻譯.
4.string.xls中沒(méi)有搜索到相應(yīng)字串或相應(yīng)字串有問(wèn)題玻粪,則說(shuō)明是翻譯有問(wèn)題隅津,根據(jù)實(shí)際情況到MSGM網(wǎng)站進(jìn)行相應(yīng)處理后將stringid加到bugcomment轉(zhuǎn)到chengqiang處理.
注:因?yàn)镸SGM網(wǎng)站是與很多項(xiàng)目共用,如某個(gè)字符串是需要更改原始英文的劲室,更改后會(huì)影響到其他項(xiàng)目.請(qǐng)加強(qiáng)注意伦仍,與測(cè)試確認(rèn)清楚是否必須更改,
把握不準(zhǔn)的郵件抄上我.
cat .git/config
查看url= ssh://git@172.26.32.15/MSM8909/platform/frameworks/base.git
ifneq
($(TARGET_BUILD_VARIANT), user)
如何將android程序的權(quán)限提升到system權(quán)限很洋?方法是這樣的:
1充蓝、在A(yíng)ndroidManifest.xml中,在manifest加入android:sharedUserId="android.uid.system"喉磁。
2谓苟、在A(yíng)ndroid.mk中,將LOCAL_CERTIFICATE:= XXX修改成LOCAL_CERTIFICATE:= platform协怒。
經(jīng)過(guò)以上兩步就可以把a(bǔ)p的權(quán)限提升到system權(quán)限了涝焙。
但是用這種方法提升權(quán)限有兩個(gè)弊端,
如下:1孕暇、程序的擁有都必須有程序的源碼仑撞;2赤兴、程序的擁有都還必須有android開(kāi)發(fā)環(huán)境,就是說(shuō)自己能make整個(gè)android系統(tǒng)隧哮。
adb logcat *:E打印出錯(cuò)log
df -h查硬盤(pán)空間
free -m查內(nèi)存桶良,按兆為單位輸出內(nèi)存的已用,未用沮翔,總共等結(jié)果
cat /proc/cpuinfo輸出各處理器的詳細(xì)信息
CLID網(wǎng)站用來(lái)查詢(xún)plf中sdmid配的perso值
http://172.26.32.35/clid/software/clid/php/main.html賬號(hào)密碼都是read
git commit -m
"Initial commit of gittutor reposistory"
Git log
查看歷史日志陨帆,包含每次的版本變化。每次版本變化對(duì)應(yīng)一個(gè)commitid鉴竭。
? ? ? Git log -1
-1的意思是只顯示一個(gè)commit歧譬,如果想顯示5個(gè),就-5搏存。不指定的話(huà),gitlog會(huì)從該commit一直往后顯示矢洲。
Git log--stat –summary(顯示每次版本的詳細(xì)變化)
adb shell setenforce0關(guān)閉selinux
adb shell setenforce1開(kāi)啟selinux
getenforce獲取當(dāng)前selinux狀態(tài),permissive是關(guān)閉狀態(tài)
同步代碼出現(xiàn)錯(cuò)誤時(shí)的操作:
git reset
88511c49765d947385c0dee06969d89bdd32abaa
git checkout -f &&
git clean -fd
repo sync -j8
查詢(xún)對(duì)應(yīng)的POP455C璧眠,
如:ifneq ($(filter POP455C POP455CTMOPixi445Cricket Pixi445CAN Pixi464GCricket,$(TARGET_PRODUCT)),)
需要在當(dāng)前項(xiàng)目執(zhí)行sourcebuild/envsetup.sh再執(zhí)行choosecombo即可看到可選擇的項(xiàng)目
MAC Address:
F4:8E:92:18:B4:25
password: quidway!@
將編譯好的img燒入手機(jī)out/target/product/Mickey6TFUMTS
adb reboot
bootloader
fastboot devices
fastboot flash aboot
emmc_appsboot.mbn
fastboot flash boot
boot.img
fastboot flash
system system.img
fastboot flash
persist persist.img
fastboot flash
recovery recovery.img
fastboot flash cache
cache.img
fastboot flash
userdata userdata.img
fastboot flash
custpack custpack.img
fastboot flash
usbmsc usbdisk.img
fastboot reboot
frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
out/target/product/A3A_VF/system/framework
本地拷貝cp? -rf? A? B
創(chuàng)建txt文件:touch A.txt
更改文件名:mvfull_k39tv1_bsp.mk A502DL.mk
scp -rp services.jar
lqyuan@172.26.35.22:/home/lqyuan/Desktop/fc/false
scp -rp
services.jar.prof lqyuan@172.26.35.22:/home/lqyuan/Desktop/fc/false
從服務(wù)器拷貝命令:scpbuild.log lqyuan@172.26.35.22:/home/lqyuan/Desktop/log
scp -rp A3A_VF
lqyuan@172.26.35.22:/home/lqyuan/Desktop/liqing_A3A
沖突解決步驟:
1.在終端執(zhí)行命令sshjenkins@172.26.35.82,密碼為testonly,在/data/Idole4-bell目錄下找到待合并沖突的git庫(kù);
2.執(zhí)行命令:git grep '<<<<<<< HEAD' ,查找有沖突的文件读虏;
3.用vi編譯有沖突的文件,解決沖突责静,直至所有沖突解決完;
4.執(zhí)行exit退出
查詢(xún)服務(wù)器編譯問(wèn)題
在jenkins網(wǎng)站http://172.26.35.81:8080/上查詢(xún)對(duì)應(yīng)編譯失敗的版本
查找該版本填寫(xiě)的Parameters盖桥,找到對(duì)應(yīng)的ip灾螃,然后在終端輸入sshjenkins@172.26.35.82(對(duì)應(yīng)IP),密碼是:testonly揩徊,然后在cd進(jìn)入/local/src然后尋找
編譯的項(xiàng)目
查詢(xún)apk是否安裝成功:adbshell dumpsys package com.tct.camera
adb shell dumpsyspackage包名
查詢(xún)apk安裝的路徑:adbshell pm path包名
lqyuan@SW2-YUANLIQI-D1:~$
adb shell pm path com.tct.camera
package:/system/priv-app/Camera_GApp/Camera_GApp.apk
查詢(xún)?cè)创a所在分支:在根目錄下cd.repo即在.repo下面
打開(kāi) manifest.xml文件即可查看分支
終端輸入:$xdg-open strings.xls會(huì)選擇默認(rèn)的程序打開(kāi)指定文件腰鬼,跟雙擊打開(kāi)效果一樣。
終端啟動(dòng)Activity:adb shell am start -ncom.android.settings(package包名)/com.android.settings.Settings(待啟動(dòng)activity)&
adb shell am start
-n xxx/xxx &
反編譯:
java -jar
/data/TOOLS/apktools/apktool_2.0.0rc3.jar d -s Elabel-overlay.apk
本機(jī)路徑:
java -jar
/home/lqyuan/local/Tools/apktool_2.0.0rc3/apktool_2.0.0rc3.jar d -s
/home/lqyuan/Desktop/findapk/appcloud_oobe_telus-release_V2.11_with_logs.apk
在Linux終端執(zhí)行命令:
ps x顯示沒(méi)有控制終端地進(jìn)程(無(wú)響應(yīng)的進(jìn)程)
ps -e顯示所有進(jìn)程,環(huán)境變量
kill -9 [pid] -9表示強(qiáng)迫進(jìn)程立即停止塑荒,通常用ps查看進(jìn)程PID熄赡,用kill命令終止進(jìn)程
git命令
回退:
git reset --hard HEAD^(回退到修改前的版本)
禁止apk運(yùn)行
adb shell pm disablecom.mediatek.camera(包名)
啟動(dòng)apk運(yùn)行
adb shell pm enable
com.mediatek.camera
跑MonkeyTest:
adb shell monkey -p
com.mediatek.camera --throttle 500 -s 10 -v -v -v 15000
搜索apk或者壓縮包是否包含
zipinfo
Gallery_Global_v7.1.3.0.0494.0_signed_platformkey_alldpi.apk |grep
dcs_ver
全局搜:find/grep
grep? "extends
IBluetooth"? *? -R
引號(hào)里是待搜索的字段,前提是進(jìn)入該項(xiàng)目中
adb logcat -v time*:e抓錯(cuò)誤日志
定向抓LOG齿税,保存在文件夾中
adb logcat -v
threadtime >/local2/log/log.txt
修改數(shù)據(jù)庫(kù)
cd
/data/data/com.android.providers.settings/databases/
sqlite3 settings.db
.help
select * from global
;
update global set
value="wifi" where name="airplane_mode_toggleable_radios";
MTK? online
http://online.mediatek.com
網(wǎng)站用戶(hù)名和密碼:
daniel.sun@tcl.com
1qaz2wsx
查看項(xiàng)目資訊是否正確:
/local2/projects/mtk82_92-kk-v1.0/mediatek/config/diabloxplus_kk/ProjectConfig.mk文本最后MTK_BUILD_VERNO= ALPS.KK1.MP1.V2.10
可以搜索:#CREATE_PROJECT_INFO
用adb連接上設(shè)備彼硫。如果是連接真實(shí)設(shè)備,需要有設(shè)備的root權(quán)限凌箕。
cd data/data
在這個(gè)目錄下拧篮,可以看到每個(gè)應(yīng)用程序都有自己的目錄,目錄名就是應(yīng)用程序在A(yíng)ndroidManifest.xml文件中定義的包牵舱。
在每個(gè)目錄下串绩,一般有這么幾個(gè)子目錄:
databases :存放數(shù)據(jù)庫(kù)
cache :存放緩存數(shù)據(jù)
files :存放應(yīng)用程序自己控制的文件
lib :存放使用的包
對(duì)于Bluetooth而言主要關(guān)注如下兩個(gè)路徑:
/data/data/com.android.bluetooth,當(dāng)要看里面的文檔時(shí)
使用cat文檔名
進(jìn)行查看
/data/@btmtk? dev_cache已配對(duì)列表中的藍(lán)牙名
host_cache本地主機(jī)的藍(lán)牙名
adbshell過(guò)后,可以通過(guò)輸入cat/proc/cpuinfo查看CPU的信息
frameworks層的都是API仆葡,被package層的函數(shù)調(diào)用!
以Handler赏参、Callback志笼、Listener這三個(gè)詞結(jié)尾的,都是利用callback機(jī)制來(lái)實(shí)現(xiàn)的
什么是aidl:aidl是Android Interface definition language的縮寫(xiě)把篓,
一看就明白纫溃,它是一種android內(nèi)部進(jìn)程通信接口的描述語(yǔ)言,通過(guò)它我們可以定義進(jìn)程間的通信接口
應(yīng)用程序使用AIDL的地方韧掩,幾乎都和Service有關(guān)
find命令可以查看代碼片段的位置(進(jìn)入項(xiàng)目中去使用):
1紊浩、find.|xargs grep -i "mDeviceName"
2、sgrep-Inr "mDeviceName"
3疗锐、在命令中用“!”表示坊谁。該運(yùn)算符表示查找不滿(mǎn)足所給條件的文件
。例如: find ! –name ’tmp’
4滑臊、查找n天以前被訪(fǎng)問(wèn)過(guò)的所有文件:find-atime n(-aminn查找n分鐘以前被訪(fǎng)問(wèn)過(guò)的所有文件口芍。-atimen查找n天以前被訪(fǎng)問(wèn)過(guò)的所有文件。-cminn查找n分鐘以前文件狀
態(tài)被修改過(guò)的所有文件雇卷。-ctime n查找n天以前文件狀態(tài)被修改過(guò)的所有文件鬓椭。-mminn查找n分鐘以前文件內(nèi)容被修改過(guò)的所有文件。-mtimen查找n天以前文件內(nèi)容被修改過(guò)的所有文件关划。)
5小染、在以下命令中,find將開(kāi)始在當(dāng)前目錄(用“.”表示)中查找任何擴(kuò)展名為“java”的文件:find. -name? "*.java"
adb shell getprop
""
獲取系統(tǒng)屬性
將/local2/projects/predev-mt6582ll-dint/out/target/product/pop3_55中的所有的文件拷貝到公共機(jī)贮折,就可以燒機(jī)了
(選擇scatter)
66:c3:2c:a7:1a:b9
66:c3:3d:21:8b:73
66:24:2d:3d:35:62
66:c1:3d:7c:e2:6b
eclipse:
高亮度顯示:shift+alt+o
pm命令
在system/bin目錄下裤翩,是對(duì)于包名的顯示及其他操作
pm path
com.zhaopin.social
pm list package
提Log給MTK的網(wǎng)站
https://fex.mediatek.com/LoginWebUser.aspx?ReturnUrl=%2fDownloadList.aspx
帳
號(hào):Jrdcom-58
密
碼:19991474lv
查看Linux系統(tǒng)版本:lsb_release-a或者cat/proc/version
截圖命令:gnome-screenshot-a
全邊:
Global? ./makeMtk -t
-o=TARGET_BUILD_MDTYPE=fdd,TARGET_BUILD_VARIANT=eng hero2 new
CMCC? ? ./makeMtk -t
-o=TARGET_BUILD_MDTYPE=cmcc,TARGET_BUILD_VARIANT=eng hero2 new
單邊后Push到手機(jī)中:
1.AndroidL以前的操作
684? ./makeMtk -t
mm packages/apps/Bluetooth
685? adb remount
686? adb push
./out/target/product/hero8/custpack/JRD_custres/app/Bluetooth-res.apk
custpack/JRD_custres/app/
687? adb push
out/target/product/hero8/system/app/Bluetooth.apk system/app
2.AndroidL的操作
source
build/envsetup.sh
lunch選擇分支
mmmpackages/apps/Bluetooth(路徑)單邊后再push到手機(jī)中
AndroidL全邊的操作:
6582L軟件分支的代碼下載和編譯如下:
1 . code download :
? ? ? repo init -u
git@172.24.61.94:alps/manifest -m predev-mt6582ll-dint.xml
2編譯:
a).編譯modem:
? ? ? ? cd modem/
./jrd_modem_build
b) .編譯android,參
考附件的aosp
? ? ? – Eng
version
? ? ? ? source
build/envsetup.sh
? ? ? ? lunch
full_pop3_55-eng
? ? ? ? ? – Or you
could use lunch to choose combo
? ? ? ? make -j36
2>&1 | tee build.log
? ? ? – User
version
? ? ? ? source
build/envsetup.sh
? ? ? ? lunch
full_pop3_55-user
? ? ? ? ? – Or you
could use lunch to choose combo
? ? ? ? make -j36
2>&1 | tee build.log
? ? ? – Userdebug
version
? ? ? ? source
build/envsetup.sh
? ? ? ? lunch
full_pop3_55-userdebug
? ? ? ? ? – Or you
could use lunch to choose combo
? ? ? ? make -j36
2>&1 | tee build.log
jdk版本配置(開(kāi)一個(gè)控制臺(tái)輸入一次僅對(duì)當(dāng)次開(kāi)的控制臺(tái)有效)
export
PATH=/opt/jdk1.6.0_37/bin:$PATH
./makeMtk -t mm
frameworks/base/packages/SettingsProvider
1.KOA:請(qǐng)假等。http://koa.jrdcom.com/
2.Gerrit:http://gitweb.tcl-ta.com:8081/
3.Gitweb:http://gitweb.tcl-ta.com/
4.Bugzilla:http://bugzilla.tcl-ta.com/
5.epas:http://skillmatrixsh.cn.ta-mp.com/
6.Manpower:http://scmweb.tcl-ta.com/mpwt/
7.staffsearch:http://itcenter.cn.ta-mp.com/StaffInfo_Index.asp/
8.doc
tree:http://172.24.61.76/dx3/swd/
文件查找命令:
find .|xargs grep加字符串
拉代碼命令:
repo init -u
git@172.24.61.94:alps/manifest.git -m .xml
單拉某個(gè)版本的代碼repo init -u? git@172.24.61.94:alps/manifest -mint/名字(項(xiàng)目名字)/版本.xml
repo init -u
git@172.24.61.94:alps/manifest -m int/yarisxl/vAG5.xml
路經(jīng)http://gitweb.tcl-ta.com/gitweb-alps/?p=manifest.git;a=summary
-》tree
->mtk6589-mr1-global.xml
repo sync
全編譯命令:
croo
jrdm
jrdm n
單獨(dú)編譯某個(gè)模塊:在整個(gè)工程的根目錄下找到packages/apps某個(gè)模塊
單編譯前也要執(zhí)行sourcebuild/envsetup.sh
jrdmmm? **模塊名稱(chēng)
顯示細(xì)節(jié)的編譯命令:
source
build/envsetup.sh
./makeMtk -t
-o=TARGET_BUILD_VARIANT=eng,JRD_GEMINI_SUPPORT=yes,JRD_CU_SUPPORT=no,JRD_BUILD_MODEM=no
jrdsz89_we_jb2 new
./makeMtk -t
-o=TARGET_BUILD_MDTYPE=fdd,TARGET_BUILD_VARIANT=eng hero2 new
./makeMtk -t
-o=TARGET_BUILD_MDTYPE=cmcc,TARGET_BUILD_VARIANT=eng hero2 new
本地編譯后的版本:
進(jìn)行單編后调榄,各個(gè)模塊輸出都在out/target/
共享機(jī)子上把lk.bin修改為uboot.img
直接拷貝到手機(jī)上
adb remount
adb push
./out/target/product/diablox/custpack/JRD_custres/app/TCLWatchDog-res.apk
custpack/JRD_custres/app/;
adb push
out/target/product/diablox/system/app/custpack/TCLWatchDog.apk
system/app/
zip /local/abc.zip`find . -maxdepth 1 ! -type d`本地打包命令踊赠,便于本地刷機(jī)用
上傳代碼
在mediatek目錄下/local/scm_tools/tools/patch_delivery_cli.php -pmtk6589-cmcc-td-v1.0-dint -fFMRadio/src/com/mediatek/FMRadio/FMRadioActivity.java
Bug Number:
patch comments:
.
Module_Impact:
.
Test_Suggestion:
.
Solution:.
Test_Report:
.
.
.
git push
ssh://liqing.yuan@172.24.61.94:29418/mtk6592/packages/apps/Bluetooth.git
HEAD:refs/for/mt6592-android4.4-fsr-v1.0
MTK_FM_SHORT_ANTENNA_SUPPORT有的為yes有點(diǎn)為no需要查看一下
1.在根目錄下
執(zhí)行? .repo查看關(guān)于版本的和分支的信息
2.提交代碼前,想查看
修改的文件 使用 git status | grep文件關(guān)鍵字
git diff文件名
查看修改的地方
回退時(shí)
執(zhí)行 git reset HEAD^命令刪除上傳的log后再
進(jìn)行重復(fù)上傳操作
3.在mediatek目錄下patch_delivery_cli.php -p <分支名>-f <更新的文
件絕對(duì)路經(jīng)>
例如:patch_delivery_cli.php-p mtk6589-cmcc-td-v1.0-dint -fFMRadio/src/com/mediatek/FMRadio/FMRadioActivity.java
4振峻、用git上傳代碼臼疫。輸入:gitpush ssh://eagle.li@172.24.61.94:29418/<模塊名在根目錄下用.repo查看>.gitHEAD:refs/for/<分支名>。模塊
名可在.repo/manifest.xml中的name中查到扣孟,為離該模塊最近的一個(gè)路徑的name烫堤。例如在diabloXTD提交代碼git pushssh://eagle.li@172.24.61.94:29418/mtk6589/mediatek.git HEAD:refs/for/mtk6589-cmcc-td-v1.0-dint。
5凤价、上傳成功后鸽斟,Gerrit中可以看到狀態(tài)的改變,然后cc給teamleaderreview利诺。
6富蓄、review完后,點(diǎn)擊submit慢逾。
從user模式到開(kāi)發(fā)者模式
*#*#212018#*#*root一下
查看軟件的版本:
? *#3228#
提代碼(patch)詳細(xì)步驟:
liqing.yuan@aclgcl-ubnt:/local2/projects$
cd mt6592-android4.4-fsr-v1.0/
liqing.yuan@aclgcl-ubnt:/local2/projects/mt6592-android4.4-fsr-v1.0$
cd packages/apps/Bluetooth/
liqing.yuan@aclgcl-ubnt:/local2/projects/mt6592-android4.4-fsr-v1.0/packages/apps/Bluetooth$
ls
AndroidManifest_test.xml
AndroidManifest.xml? AndroidManifest.xml~? Android.mk? CleanSpec.mk
jni? res? src? test_apps? tests
liqing.yuan@aclgcl-ubnt:/local2/projects/mt6592-android4.4-fsr-v1.0/packages/apps/Bluetooth$
/local2/scm_tools/tools/patch_delivery_cli.php -p
mt6592-android4.4-fsr-v1.0 -f AndroidManifest.xml
Bug Number:877621
patchcomments:[Force close][3rd Evernote_v 5.8]Share the video file viabluetooth立倍,MSprompt forcibly closed.
.
Please chose the bug
root cause:
? ? 1-Unknown_Today
? ? 2-Architecture
? ? 3-Specification
? ? 4-Design
? ? 5-Coding
? ? 6-Regression
? ? 7-Evolution
Your choise:5
Module_Impact:bluetooth
.
Test_Suggestion:test
ok
.
Solution:add
permission
.
Test_Report:test ok
.
Please chose the Bug
category:
? ? 1-MTK platform
issue
? ? 2-Android
platform issue
? ? 3-3rd party
issue
? ? 4-JRD bug
Your choise:2
[detached HEADed1e3f6] ###%%%comment:[Force close][3rd Evernote_v 5.8]Share thevideo file via bluetooth灭红,MSprompt forcibly closed. ###%%%bug number:877621 ###%%%productname:mt6592-android4.4-fsr-v1.0 ###%%%root cause:Coding ###%%%Bugcategory:Android platform issue ###%%%Module_Impact:bluetooth###%%%Test_Suggestion:test ok ###%%%Solution:add permission###%%%Test_Report:test ok ###%%%VAL Can Test:Yes
1 file changed, 3
insertions(+)
liqing.yuan@aclgcl-ubnt:/local2/projects/mt6592-android4.4-fsr-v1.0/packages/apps/Bluetooth$
git push
ssh://liqing.yuan@172.24.61.94:29418/mtk6592/packages/apps/Bluetooth.git
HEAD:refs/for/mt6592-android4.4-fsr-v1.0
Counting objects: 5,
done.
Delta compression
using up to 8 threads.
Compressing objects:
100% (3/3), done.
Writing objects:
100% (3/3), 653 bytes, done.
Total 3 (delta 2),
reused 0 (delta 0)
remote: Resolving
deltas: 100% (2/2)
remote: Processing
changes: new: 1, refs: 1, done? ?
remote: (W) ed1e3f6:
commit subject >65 characters; use shorter first paragraph
remote:
remote: New
Changes:
remote:?
http://gerrit.tcl-ta.com:8081/203928
remote:
To
ssh://liqing.yuan@172.24.61.94:29418/mtk6592/packages/apps/Bluetooth.git
* [new branch]? ?
HEAD -> refs/for/mt6592-android4.4-fsr-v1.0
? ? How to download
the view from github :
? ? ? ? repo init -u
git@172.24.61.94:alps/manifest -m
? ? ? ? repo sync
can be one of the following list:
mt6735-android5.0-dint-v1.0.xml? ? ? ? ? ? ? ? ? ? ? ? ? // arm 64
bit dint branch, share folder : Pop3-5.5,? Pop3-5
mt6735-android5.0-dev-v1.0.xml? ? ? ? ? ? ? ? ? ? ? ? ? // arm 64
bit dev branch for custpack, share folder : Pop3-5.5,? Pop3-5
mt6735-android5.0-arm32-dint-v1.0.xml? ? ? ? ? ? ? // arm 32 bit dint
branch, share folder : Pop3-5.5,? Pop3-5
? ? ? ? Sample for
pop3-5.5 known version :
? ? ? ? ? ? repo
init -u git@172.24.61.94:alps/manifest -m int/pop3_55/vAA1.xml
? ? ? ? ? ? repo
init -u git@172.24.61.94:alps/manifest -m int/pop3_55/vAA1-W-EU.xml
? ? ? ? Sample for
pop3-5.5 known version :
? ? ? ? ? ? repo
init -u git@172.24.61.94:alps/manifest -m int/pop3_5/vCA1.xml
? ? ? ? ? ? repo
init -u git@172.24.61.94:alps/manifest -m int/pop3_5/vCA1-D-EU.xml
? ? How to build :
? ? ? ? ? i).
firstly,? build modem
? ? ? ? ? ? ? ? cd
modem/
./jrd_modem_build? -p projectname? -b bandname? -m buildmode
parameter list :
? ? -p projectname
value can be? [? pop3_55 | pop3_5]
? ? -b bandname
value can be [ EU | US ]
? ? -m buildmode
value can be [ eng | user ]
? ? ? ? ? ? ii) .
secondly, four steps to build android
? ? 1.? cd
code_path
? ? 2.? source
build/envsetup.sh
? ? 3.
jrd_choosemmitest
? ? ? ? run this cmd
if build mini version, or skip it.
? ? 4 . lunch
? ? ? ? ? ? ? select
project when lunch :
full_pop3_55-eng : for build eng version
full_pop3_55-userdebug : for build userdebug version
full_pop3_55-user : for build user version
full_pop3_5-eng : for build eng version
full_pop3_5-userdebug : for build userdebug version
full_pop3_5-user : for build user version
? ? ? ? lunch
parameter :
? ? ? ? 1) user2root
:? switch between user mode and eng mode,? only used on user
version.
? ? ? ? ? value can be [ yes | no | ignore ].
? ? ? ? ? ? yes :
support user2root switch
? ? ? ? ? ? no : not
support user2root switch
? ? ? ? ? ? ignore:
use default value in source code
? ? 5.?
? ? ? ? to build
all:? ?
? ? ? ? ? ? make
-j32 2>&1 | tee build.log
? ? ? ? to build
preloader:? ?
? ? ? ? ? ? make
-j32 pl 2>&1 | tee pl.log
? ? ? ? to build lk:
? ? ? ? ? ? make
-j32 lk 2>&1 | tee lk.log
? ? ? ? to build
kernel:? ? ? ?
? ? ? ? ? ? make
-j32 kernel 2>&1 | tee kernel.log
Git的Patch功能
UNIX世界的軟件開(kāi)發(fā)大多都是協(xié)作式的,因此口注,Patch(補(bǔ)侗淝堋)是一個(gè)相當(dāng)重要的東西,因?yàn)閹缀跛械拇笮蚒NIX項(xiàng)目的普通貢獻(xiàn)者寝志,都是通過(guò)Patch來(lái)提交代碼的娇斑。作為最重要的開(kāi)源項(xiàng)目之一,Linux材部,也是這樣的毫缆。普通開(kāi)發(fā)者從軟件倉(cāng)庫(kù)clone下代碼,然后寫(xiě)入代碼乐导,做一個(gè)Patch苦丁,
最后用E-mail發(fā)給LinuxKernel的維護(hù)者就好了。Git最初作為L(zhǎng)inux的版本控制工具物臂,提供了透明芬骄、完整、穩(wěn)定的Patch功能鹦聪。
我們先介紹一下Patch是什么。如果一個(gè)軟件有了新版本蒂秘,我們可以完整地下載新版本的代碼進(jìn)行編譯安裝泽本。然而,像LinuxKernel這樣的大型項(xiàng)目姻僧,代碼即使壓縮规丽,也超過(guò)70MB,每次全新下載是有相當(dāng)大的代價(jià)的撇贺。然而赌莺,每次更新變動(dòng)的代碼可能不超過(guò)1MB,因此松嘶,我們只
要能夠有兩個(gè)版本代碼的diff的數(shù)據(jù)艘狭,應(yīng)該就可以以極低的代價(jià)更新程序了。因此翠订,LarryWall開(kāi)發(fā)了一個(gè)工具:patch巢音。它可以根據(jù)一個(gè)diff文件進(jìn)行版本更新。
不過(guò)在git中尽超,我們沒(méi)有必要直接使用diff和patch來(lái)做補(bǔ)丁官撼,這樣做既危險(xiǎn)又麻煩。git提供了兩種簡(jiǎn)單的patch方案似谁。一是用gitdiff生成的標(biāo)準(zhǔn)patch傲绣,二是gitformat-patch生成的Git專(zhuān)用Patch掠哥。
1.gitdiff生成的標(biāo)準(zhǔn)patch
我們可以首先用gitdiff制作一個(gè)patch。本文示例的工作目錄里最初有一個(gè)文件a秃诵,內(nèi)容是“Thisis the file a.”续搀,放置在master分支中。為了修改代碼顷链,我們一般的做法是建立一個(gè)新分支:
sweetdum@sweetdum-ASUS:~/GitEx$
git branch Fix
sweetdum@sweetdum-ASUS:~/GitEx$
git checkout Fix
Switched to branch
'Fix'
接下來(lái)我們?cè)赼文件里面追加一行目代,然后執(zhí)行g(shù)itdiff。
sweetdum@sweetdum-ASUS:~/GitEx$
echo 'Fix!!!'>>a
sweetdum@sweetdum-ASUS:~/GitEx$
git diff
diff --git a/a b/a
index
4add65f..0d295ac 100644
--- a/a
+++ b/a
@@ -1 +1,2 @@
This is the file a.
+Fix!!!
我們看到了Gitdiff的輸出嗤练,這是一個(gè)非常典型的Patch式diff榛了。這樣我們可以直接把這個(gè)輸出變?yōu)橐粋€(gè)Patch:
sweetdum@sweetdum-ASUS:~/GitEx$
git commit -a -m "Fix"
[Fix b88c46b] Fix
1 files changed, 1
insertions(+), 0 deletions(-)
sweetdum@sweetdum-ASUS:~/GitEx$
git diff master > patch
sweetdum@sweetdum-ASUS:~/GitEx$
git checkout master
Switched to branch
'master'
我們現(xiàn)在有一個(gè)patch文件,并且簽出了master煞抬,接下來(lái)我們可以使用gitapply來(lái)應(yīng)用這個(gè)patch霜大。當(dāng)然了,實(shí)際應(yīng)用中革答,我們不會(huì)這樣在一個(gè)分支建patch战坤,到另一個(gè)分支去應(yīng)用,因?yàn)橹挥衜erge一下就好了残拐。我們現(xiàn)
在權(quán)當(dāng)沒(méi)有這個(gè)Fix分支途茫。一般情況下,為了保護(hù)master溪食,我們會(huì)建立一個(gè)專(zhuān)門(mén)處理新交來(lái)的patch的分支:
sweetdum@sweetdum-ASUS:~/GitEx$
git branch PATCH
sweetdum@sweetdum-ASUS:~/GitEx$
git checkout PATCH
Switched to branch
'PATCH'
sweetdum@sweetdum-ASUS:~/GitEx$
git apply patch
sweetdum@sweetdum-ASUS:~/GitEx$
git commit -a -m "Patch Apply"
[PATCH 9740af8]
Patch Apply
1 files changed, 1
insertions(+), 0 deletions(-)
看囊卜,現(xiàn)在我們?cè)赑ATCH分支中應(yīng)用了這個(gè)補(bǔ)丁,我們可以把PATCH分支和Fix比對(duì)一下错沃,結(jié)果肯定是什么也沒(méi)有栅组,說(shuō)明PATCH分支和Fix分支完全一樣。patch應(yīng)用成功枢析。即使有多個(gè)文件gitdiff也能生成一個(gè)patch玉掸。
2.gitformat-patch生成的git專(zhuān)用補(bǔ)丁。
我們同樣用上面那個(gè)例子的工作目錄醒叁,這次司浪,我們?cè)贔ix分支中的a添加了新行之后,用gitformat-patch生成一個(gè)patch辐益。
sweetdum@sweetdum-ASUS:~/GitEx$
git checkout Fix
Switched to branch
'Fix'
sweetdum@sweetdum-ASUS:~/GitEx$
echo 'Fix!!!'>>a
sweetdum@sweetdum-ASUS:~/GitEx$
git commit -a -m "Fix1"
[Fix 6991743] Fix1
1 files changed, 1
insertions(+), 0 deletions(-)
sweetdum@sweetdum-ASUS:~/GitEx$
git format-patch -M master
0001-Fix1.patch
gitformat-patch的-M選項(xiàng)表示這個(gè)patch要和那個(gè)分支比對(duì)《习粒現(xiàn)在它生成了一個(gè)patch文件,我們看看那是什么:
sweetdum@sweetdum-ASUS:~/GitEx$
cat 0001-Fix1.patch
From
6991743354857c9a6909a253e859e886165b0d90 Mon Sep 17 00:00:00 2001
From: Sweetdumplings
Date: Mon, 29 Aug
2011 14:06:12 +0800
Subject: [PATCH]
Fix1
---
a |? ? 1 +
1 files changed, 1
insertions(+), 0 deletions(-)
diff --git a/a b/a
index
4add65f..0d295ac 100644
--- a/a
+++ b/a
@@ -1 +1,2 @@
This is the file a.
+Fix!!!
--
1.7.4.1
看智政,這次多了好多東西认罩,不僅有diff的信息,還有提交者续捂,時(shí)間等等垦垂,仔細(xì)一看你會(huì)發(fā)現(xiàn)宦搬,這是個(gè)E-mail的文件,你可以直接發(fā)送它劫拗!這種patch间校,我們要用gitam來(lái)應(yīng)用。
sweetdum@sweetdum-ASUS:~/GitEx$
git checkout master
Switched to branch
'master'
sweetdum@sweetdum-ASUS:~/GitEx$
git branch PATCH
sweetdum@sweetdum-ASUS:~/GitEx$
git checkout PATCH
sweetdum@sweetdum-ASUS:~/GitEx$
git am 0001-Fix1.patch
Applying: Fix1
sweetdum@sweetdum-ASUS:~/GitEx$
git commit -a -m "PATCH apply"
在提交了補(bǔ)丁之后页慷,我們可以再看看目前文件a的情況:
sweetdum@sweetdum-ASUS:~/GitEx$
cat a
This is the file a.
Fix!!!
果然憔足,多了一個(gè)Fix!!!
不過(guò)要注意的是,如果master與Fix分支中間有多次提交酒繁,它會(huì)針對(duì)每次提交生成一個(gè)patch滓彰。
3.兩種patch的比較:
兼容性:很明顯,gitdiff生成的Patch兼容性強(qiáng)州袒。如果你在修改的代碼的官方版本庫(kù)不是Git管理的版本庫(kù)揭绑,那么你必須使用gitdiff生成的patch才能讓你的代碼被項(xiàng)目的維護(hù)人接受。
除錯(cuò)功能:對(duì)于gitdiff生成的patch郎哭,你可以用gitapply --check查看補(bǔ)丁是否能夠干凈順利地應(yīng)用到當(dāng)前分支中他匪;如果gitformat-patch生成的補(bǔ)丁不能打到當(dāng)前分支,gitam會(huì)給出提示夸研,并協(xié)助你完成打補(bǔ)丁工作邦蜜,你也可以使用gitam -3進(jìn)行三方合并,詳細(xì)的做法可以參考git手冊(cè)或者《Progit》亥至。從這一點(diǎn)上看畦徘,兩者除錯(cuò)功能都很強(qiáng)。
版本庫(kù)信息:由于gitformat-patch生成的補(bǔ)丁中含有這個(gè)補(bǔ)丁開(kāi)發(fā)者的名字抬闯,因此在應(yīng)用補(bǔ)丁時(shí),這個(gè)名字會(huì)被記錄進(jìn)版本庫(kù)关筒,顯然津畸,這樣做是恰當(dāng)?shù)幕摺R虼耍壳笆褂肎it的開(kāi)源社區(qū)往往建議大家使用format-patch生成補(bǔ)丁。