Android外掛程式化(使用Small架構)
Android外掛程式化(使用Small架構)架構源碼1. Create Project
File->New->New Project...
1.1 Configure your new project
假設宿主包名為com.example.mysmall
- 設定Application name為
MySmall
修改Company Domain為com.example.mysmall
這步是個技巧,在Step3建立Module時將會自動帶上該首碼
修正Package name為com.example.mysmall
1.2 Add an activity to mobile這步推薦使用Fullscreen Activity,作為啟動介面再好不過。 在配置Activity介面,建議把Activity Name改為LaunchActivity(使名符其實)。
2. Configure Small修改Project的build.gradle
2.1 加入Small編譯庫buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.3.0' classpath 'net.wequick.tools.build:gradle-small:0.1.1' }}...apply plugin: 'net.wequick.small'
2.2 配置Small DSL (可選)
目前只有一個屬性aarVersion,表示Small aar的程式碼程式庫版本。如果沒有設定,預設為gradle-small的版本。
small { aarVersion = '0.1.2'}
最新的版本號碼可以在Bintray上看到。
3. Create Module
File->New->Module來建立外掛程式模組,需要滿足:
- 模組名形如:
app.*,lib.*或者web.*
包名包含:.app.,.lib.或者.web.
為什麼要這樣?因為Small會根據包名對外掛程式進行歸類,特殊的網域名稱空間如:“.app.” 會讓這變得容易。
對lib.*模組選擇Android Library,其他模組選擇Phone & Tablet Module。
建立一個外掛程式模組,比如app.main:
- 修改Application/Library name為
App.main
修改Package name為com.example.mysmall.app.main
4. Configure UI route右鍵app模組->New->Folder->Assets Folder,建立assets目錄,
右鍵assets目錄->New->File,建立bundles.json檔案,加入:
{ "version": "1.0.0", "bundles": [ { "uri": "main", "pkg": "com.example.mysmall.app.main" } ]}5. Setup Small5.1 配置簽名切換到Project分類樹,右鍵MySmall,建立sign目錄,添加release.jks簽名檔案。
在app模組的build.gradle中增加簽名配置(密碼改成自己的):
signingConfigs { release { storeFile file('../sign/release.jks') storePassword "5mall@ndro!d" keyAlias "small" keyPassword "5mall@ndro!d" }}buildTypes { release { signingConfig signingConfigs.release }}5.2 配置基礎依賴在app模組增加共用的依賴庫,比如:
compile 'com.android.support:design:23.1.1'
5.3 載入外掛程式在app模組的LaunchActivity重載onStart方法:
@Overrideprotected void onStart() { super.onStart(); Small.setBaseUri("http://example.com/"); Small.setUp(this, new net.wequick.small.Bundle.OnLoadListener() { @Override public void onStart(int bundleCount, int upgradeBundlesCount, long upgradeBundlesSize) { } @Override public void onProgress(int bundleIndex, String bundleName, long loadedSize, long bundleSize) { } @Override public void onComplete(Boolean success) { Small.openUri("main", LaunchActivity.this); } });}6. Compile Small
Build libraries (準備基礎庫)
[./]gradlew buildLib -q (-q是安靜模式,可以讓輸出更好看,也可以不加)
Build bundles (打包所有組件)
[./]gradlew buildBundle -q (-q是安靜模式,可以讓輸出更好看,也可以不加)
這兩步,如果你喜歡,也可以在Gradle任務導航裡運行
單獨編譯一個組件可以使用 [./]gradlew -p web.about assembleRelease
或者
7. Run Small在工具列,選擇app模組,運行。
.目錄結構異常處理1、上面是給出的步驟 但是需要注意的是建立外掛程式模組的時候比如輸入的是app.main 這個時候包名需要注意修改為類似com.example.small.app.main 而不是com.example.small.appmain 這樣運行會出問題。2、如果編譯出現問題 需要先執行./gradlew cleanLib