日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android cts 编译,使用 Android studio 分析运行 CTS 用例

發(fā)布時間:2025/3/19 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android cts 编译,使用 Android studio 分析运行 CTS 用例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

CTS 的用例其實是個大寶庫,是寫單元測試的典范,研究和學習這些用例的內(nèi)容不管是對 Android 系統(tǒng)的研究還是對個人的技術提升都是很有幫助的。但是網(wǎng)絡上對于這部分的介紹卻很少,都只是講怎么運行 CTS 用例,沒有去深究這些 case 到底測了什么。這里僅拋磚迎玉,我們先從搭建環(huán)境開始。

必備材料:

1.Android 源代碼一套(沒有的同學參考我另外一篇帖子,我在百度盤共享了全套源碼)

2.此套源碼要完成編譯過程(我這里用的是 Android4.4.4 的源碼,使用 64 位 ubuntu14.04 發(fā)行版編譯,安裝了必要的依賴后直接編譯完成,全程無錯,無需修改任何源代碼文件)

下面我們以 WIFI 模塊的測試用例為例。

WIFI 模塊的測試用例在~/cts/tests/tests/net 目錄下,我們看下這個目錄的結構:

├── AndroidManifest.xml

├── Android.mk

├── jni

│ ├── Android.mk

│ └── NativeDnsJni.c

└── src

└── android

└── net

├── cts

│ ├── ConnectivityManagerTest.java

│ ├── CredentialsTest.java

│ ├── DhcpInfoTest.java

│ ├── DnsTest.java

│ ├── LocalServerSocketTest.java

│ ├── LocalSocketAddress_NamespaceTest.java

│ ├── LocalSocketAddressTest.java

│ ├── LocalSocketTest.java

│ ├── MailToTest.java

│ ├── NetworkInfo_DetailedStateTest.java

│ ├── NetworkInfo_StateTest.java

│ ├── NetworkInfoTest.java

│ ├── ProxyTest.java

│ ├── SSLCertificateSocketFactoryTest.java

│ ├── TrafficStatsTest.java

│ ├── Uri_BuilderTest.java

│ ├── UriTest.java

│ ├── UrlQuerySanitizer_IllegalCharacterValueSanitizerTest.java

│ ├── UrlQuerySanitizer_ParameterValuePairTest.java

│ ├── UrlQuerySanitizerTest.java

│ └── VpnServiceTest.java

├── http

│ └── cts

│ ├── ApacheHttpClientTest.java

│ ├── SslCertificate_DNameTest.java

│ ├── SslCertificateTest.java

│ └── SslErrorTest.java

├── ipv6

│ └── cts

│ └── PingTest.java

├── rtp

│ └── cts

│ ├── AudioCodecTest.java

│ ├── AudioGroupTest.java

│ └── AudioStreamTest.java

└── wifi

└── cts

├── ConcurrencyTest.java

├── NsdManagerTest.java

├── ScanResultTest.java

├── SupplicantStateTest.java

├── WifiConfigurationTest.java

├── WifiEnterpriseConfigTest.java

├── WifiFeature.java

├── WifiInfoTest.java

├── WifiManagerTest.java

└── WifiManager_WifiLockTest.java

把 net 目錄單獨拷貝一份,開始動手了,可以看到 net 目錄下還包含其他如 http、ipv6 等模塊的用例,我們只想分析 wifi 模塊的,其它不需要,刪掉,目錄結構變成這樣:

├── AndroidManifest.xml

├── Android.mk

└── src

└── android

└── net

└── wifi

└── cts

├── ConcurrencyTest.java

├── NsdManagerTest.java

├── ScanResultTest.java

├── SupplicantStateTest.java

├── WifiConfigurationTest.java

├── WifiEnterpriseConfigTest.java

├── WifiFeature.java

├── WifiInfoTest.java

├── WifiManagerTest.java

└── WifiManager_WifiLockTest.java

我們要導入 Android studio 進行分析,所以要稍微改造下使它像一個 Android 項目,我們在 src 下添加 bin、gen、libs 三個文件夾,最后變成這樣:

├── AndroidManifest.xml

├── Android.mk

├── bin

├── gen

├── libs

└── src

└── android

└── net

└── wifi

└── cts

├── ConcurrencyTest.java

├── NsdManagerTest.java

├── ScanResultTest.java

├── SupplicantStateTest.java

├── WifiConfigurationTest.java

├── WifiEnterpriseConfigTest.java

├── WifiFeature.java

├── WifiInfoTest.java

├── WifiManagerTest.java

└── WifiManager_WifiLockTest.java

很眼熟吧,沒錯,這就是 eclipse 下面的 Android 項目結構,只不過少了幾個其他的 assert,res 之類的文件夾而已,但我們不想用 eclipse,而分析這樣的代碼用 gradle 項目結構又很麻煩,所以下面講如何把 eclipse 項目原樣導入 Android studio。

把 eclipse 項目導入 Android studio:

1.file->open 打開項目

2.打開 module setting

3.設置 project

4.添加 source 文件夾

5.把 gen 文件夾也添加進去

6.點一下 gen 最右邊的 P,在彈出的對話框中勾選 For generated sources

7.Dependencies 界面把 SDK 設置為 19

8.新建一個 Android

9.structure 界面把各個文件夾設置正確,源碼文件夾中沒有 res 和 assets 沒有關系,這里不影響

10.Generated Sources 中設置 gen 目錄

11.把 4 個依賴的 jar 包拷貝到源碼 libs 目錄下,然后在 Libraries 中添加依賴的 jar 包,WIFI 模塊一共依賴 4 個 jar 包,這里添加 3 個

說明:

3 個 classes 開頭的 jar 包都在編譯完成的 out 文件夾下,這里手動改了名字而已

classes-cts.jar 對應~/out/target/common/obj/JAVA_LIBRARIES/ctstestrunner_intermediates/classes.jar

classes-deviceutil.jar 對應~/out/target/common/obj/JAVA_LIBRARIES/ctsdeviceutil_intermediates/classes.jar

classes-framework.jar 對應~/out/target/common/obj/JAVA_LIBRARIES/framework-base_intermediates/classes.jar

junit-4.10.jar 網(wǎng)上隨便能下載到

12.在 SDKs 中修改 Build target 為 19,并且把 classes-framework.jar 添加進來,且一定要在 android.jar 的前面,這是因為 framework.jar 中有一些系統(tǒng)的隱藏方法,所以要放在公用 API android.jar 的前面被調(diào)用

13.編輯 Configurations

14.新建一個 Android Tests

15.重命名,并選擇 runner 為 CtsTestRunner

16.項目 - 右鍵 - 開始 RUN RUN RUN

17.測試結束,可以看到我的設備 fail 了一條用例

這樣,我們完成了在 Android studio 運行 CTS 用例的過程,在 Android studio 中運行測試用例好處是方便調(diào)試,比如隨便斷點,方便閱讀,方便修改,語法糾錯 blablablabla……

如果我們想新寫一些用例,也可以在外面寫好再弄到源碼里配置 mk 文件編譯。

至于不同的模塊,可能依賴的 jar 包不同,但肯定都在~/out/target/common/obj/JAVA_LIBRARIES 下被編譯出來了,所以如果有同學調(diào)試其他的模塊因為依賴報錯的時候,可以根據(jù)出錯信息到這個目錄下去找。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的android cts 编译,使用 Android studio 分析运行 CTS 用例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。