1.獲取AOSP的源碼
具體可參考這篇:
下載,編譯 AOSP
AOSP更新比較頻繁夺脾,所以可以經(jīng)常 repo sync
芙代。
如果只需要調(diào)試CTS
吊奢,不用整編project
。
不過(guò)如果不整編project
纹烹,編譯失敗页滚,可以試著先整編project
,再編譯CTS
目錄铺呵,或者再執(zhí)行一次make cts
裹驰。
編譯CTS可使用master分支,或其他較新的分支片挂。切分支之前注意先切manifest幻林。
2.使用adb查看android設(shè)備架構(gòu)
getprop ro.product.cpu.abi
例如我這里的結(jié)果是
arm64-v8a
3.編譯AOSP 中的CTS
進(jìn)入 AOSP 根目錄贞盯,加載環(huán)境變量,然后執(zhí)行 make cts TARGET_PRODUCT=xxx
沪饺。因此我這里是 TARGET_PRODUCT=aosp_arm64
躏敢。
source build/envsetup.sh
make cts -j20 TARGET_PRODUCT=aosp_arm64 2>&1 | tee build.java
編譯后的文件在out/host/linux-x86/cts
目錄下。這里大概編譯了2個(gè)小時(shí)左右整葡,拉代碼花的時(shí)間更久件余。
如果遇到編譯錯(cuò)誤,可執(zhí)行再編譯一次或者整編后make cts
掘宪。
4.簡(jiǎn)單執(zhí)行單項(xiàng)測(cè)試命令蛾扇,測(cè)試編譯后的CTS是否能正常使用
進(jìn)入 android-cts
下的tool
文件夾。
注意:請(qǐng)確保android設(shè)備和pc設(shè)備,均處于外網(wǎng)環(huán)境中魏滚。
設(shè)置 JAVA_TOOL_OPTIONS
使用代理,運(yùn)行cts-tradefed
镀首,然后 使用cts-tradefed腳本執(zhí)行Junit單元測(cè)試。
export JAVA_TOOL_OPTIONS='-Djava.net.useSystemProxies=true'
./cts-tradefed
run cts -m CtsAppSecurityHostTestCases -t android.appsecurity.cts.AdoptableHostTest#testPrimaryStorage
例如hostsidetests
文件夾下的module
鼠次。這里格式為:run cts -m module -t test
具體如下所示:
run cts -m CtsAppSecurityHostTestCases -t android.appsecurity.cts.AdoptableHostTest#testPrimaryStorage
CtsAppSecurityHostTestCases
是 bp中定義的module
名稱(chēng)更哄,android.appsecurity.cts.AdoptableHostTest#testPrimaryStorage
是AdoptableHostTest
這個(gè)類(lèi)的testPrimaryStorage
函數(shù)。這是基于Junit
框架的腥寇。
測(cè)試完成后會(huì)顯示Summary等信息成翩。
=======================================================
=============== Summary ===============
Total Run time: 7m 11s
2/2 modules completed
Total Tests : 2
PASSED : 2
FAILED : 0
============== End of Results ==============
============================================
05-22 15:13:03 D/ProtoResultReporter: process final logs: /tmp/eng.user.20230522.123834/cts/inv_8391609024161279714/inv_15769068619178369783/end_host_log_16582464473696729006.txt
05-22 15:13:03 I/CommandScheduler: Updating command 1 with elapsed time 432045 ms
05-22 15:13:03 I/CommandScheduler: Finalizing the logger and invocation.
05-22 15:13:03 D/ActiveTrace: Finalizing trace: /tmp/invocation-trace6737819560881934439.perfetto-trace
05-22 15:13:03 D/ProtoResultReporter: process final logs: /tmp/eng.user.20230522.123834/cts/inv_8391609024161279714/inv_15769068619178369783/invocation-trace_17271980551630074065.perfetto-trace.gz
05-22 15:13:03 D/ProtoResultReporter: process final logs: /tmp/eng.user.20230522.123834/cts/inv_8391609024161279714/inv_15769068619178369783/invoc_complete_host_log_15517732044405125585.txt
results 文件夾下會(huì)生成時(shí)間節(jié)點(diǎn)文件夾,并生成html文件顯示結(jié)果赦役。
也可以在latest文件夾下去查看麻敌,這個(gè)會(huì)顯示最近的一個(gè)測(cè)試結(jié)果。
參考鏈接:
Android CTS 測(cè)試---自己編譯CTS方法
運(yùn)行 CTS 測(cè)試
CTS 開(kāi)發(fā)