本地编译AndroidX源码
背景
曾經為了把玩Jetpack Compose,下載了AndroidX的源碼并在本地編譯運行。雖然現在Compose已經發布了獨立aar,無需通過編譯源碼引入工程了,但是如果想了解AndroidX其他庫的實現,或者像嘗試增加自己的修改時,本地編譯還是一個不錯的選擇,這里整理一下本地編譯AndroidX源碼的步驟。
下載源碼
AndroidX也屬于AOSP的一部分。下載AOSP源碼需要使用repo。repo是一個腳本工具,可以一次性組合下載多個Git倉庫。首先安裝repo命令如下:
$ mkdir ~/bin $ PATH=~/bin:$PATH $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repoAOSP 中我們只下載AndroidX相關的Git倉庫 ,可以通過指定 androidx-master-dev 分支進行下載
$ mkdir androidx-master-dev && cd androidx-master-dev $ repo init -u https://android.googlesource.com/platform/manifest \-b androidx-master-dev $ repo sync -c -j9打開工程
AndroidX 的開發調試需要使用Android Studio。 為了避免源碼與開發者手頭的AS版本不兼容,下載的源碼中自帶了配套的AS,可以通過cmd啟動:
$ cd androidx-master-dev/frameworks/support $ ./studiow需要注意Jetpack Compose 相對于其他組件,需要特別版本的AS才能運行,路徑如下:
$ cd androidx-master-dev/frameworks/support/ui $ ./studiow運行demo
AndroidX 項目中包含幾個Demo的APP,便于開發者和學習者進行一些參考和調試。
- support-v4-demos
- support-v7-demos
- support-transition-demos
- support-emoji-demos
- …
可以使用Android Studio編譯運行,也可以直接用gradle命令運行
提交PR
如果發現了AndroidX的bug,可以基于AndroidX主線拉一個分支,修改并經過Demo/Test驗證后,向AOSP提交PR(Pull Reauest),在AOSP中一般被稱為CL(Change List):
$ cd frameworks/support# 切分支,repo start 其實是 git checkout -b 的封裝 $ repo start my-change .# 本地修改,調試,測試# git commit $ git add . $ git commit# 提交Gerrit review $ repo upload .# review結果修正后,追加comment 重新上傳 $ git add . $ git commit --amend $ repo upload .提交的comment message有一定要求,一般會自動添加 Change-id: 行,此行不能刪除。
另外,需要在Change-Id上面追加測試情況 Test: {Test Class名等}
AOSP的bug會使用 issuetracker 進行管理,如果修復了issuetracker的bug,還需要追加Bug:{BugID}
本地Marven
除了本地基于源碼調試以外,也可以將工程打包成本地aar使用,通過以下gradle命令發布到本地maven倉庫
cd frameworks/support ./gradlew publishMavenPublicationToMavenLocal執行后,可以在以下位置看到androidx的目錄
$ ls ~/.m2/repository/androidx/ activity benchmark contentpager ....可以確認當前androidx版本:
$ ls ~/.m2/repository/androidx/work/work-runtime-ktx/ 2.3.0-rc01在項目中配置本地marven庫:
allprojects {repositories {google()jcenter()mavenLocal() // 追加本地倉庫依賴} }然后在module中的dependencies中就可以依賴本地marven中的支持的AndroidX版本了
implementation 'androidx.work:work-runtime-ktx:2.3.0-rc01'總結
以上是生活随笔為你收集整理的本地编译AndroidX源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于单片机的自动追日系统设计_电机太阳论
- 下一篇: 编程类电子书