Android插件化(使用Small框架)
來自: http://blog.csdn.net/cuiran/article/details/50552689
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:
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 Small
5.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方法:
@Override
protected 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是安靜模式,可以讓輸出更好看,也可以不加)
7. Run Small
.目錄結構
異常處理





