├── values
│ ├── colors.xml
│ ├── dimens.xml
│ └── styles.xml
└── values-w820dp
└── dimens.xml
這些資源定義了該應用的主題、介面邊距等樣式,在多個應用外掛程式間,這些資源應該是 可被復用 的。
這個時候,我們可以通過提取公共庫外掛程式模組來解決這些問題。
【高階】為了便於理解一些細節,我們可以先通過命令:為了確認公共庫提取成功,我們修改 lib.style/src/main/res/colors.xml,將主色調改為綠色:
name="colorprimary"
>#2fa739
dependencies
清除公共庫:
./gradlew cleanlib -q
window命令:
gradlew cleanlib -q
編譯公共庫:
./gradlew buildlib -q -dbundle.arch=x86
window命令:
gradlew buildlib -q -dbundle.arch=x86//這個命令上一小節已經介紹過了不再重複
編譯業務單元:
./gradlew buildbundle -q -dbundle.arch=x86
window命令:
gradlew buildbundle -q//如果不是安裝到模擬器不需編譯到x86
將輸出:
package groups (1)dynamicreftable entrycount=1:
type 1 configcount=1 entrycount=1
config (default):
(string8) "res/layout/activity_main.xml"
重點關注主題的部分:
a: android:theme(0x01010000)=@0x79030000
可以看到主題指向了 0x79,我們來確認下這個資源是屬於 lib.style 外掛程式的:
關注 0x79030000 這個資源專案:
config (default):
Android 外掛程式化技術窺探
在android 外掛程式化技術中 宿主app和外掛程式app設定相同的shareduserid 動態載入apk有兩種方式 一種是將資源主題包的apk安裝到手機上再讀取apk內的資源,這種方式的原理是將宿主app和外掛程式app設定相同的shareduserid,這樣兩個app將會在同乙個程序中執行...
Android動態載入技術(外掛程式化技術)
no1 外掛程式化技術的好處 1 減輕應用的記憶體和cpu占用 2 實現熱插拔,即在不發布新版本的情況下更新某些模組 no2 外掛程式化方案必須要解決三個基礎性問題 資源訪問 activity生命週期的管理和classloader的管理 no3 宿主是指普通的apk,外掛程式一般指經過處理的dex或...
外掛程式化小結
2 在編譯的時候會將子外掛程式偽裝為so,並且合併manifest。3 子外掛程式可以直接編譯為apk,他只需要負責實現自己的功能即可,盡量避免多個直外掛程式之間互相干擾。4 如果在apk發布後需要動態載入新的頁面也業務。manifest是沒有辦法改變的,如何找到這個activity呢?a 可以使用...