Android插件化(使用Small框架)

wj2220 10年前發布 | 31K 次閱讀 Android開發 移動開發

來自: 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

  1. 設置Application nameMySmall
  2. 修改Company Domaincom.example.mysmall

    這步是個技巧,在Step3新建Module時將會自動帶上該前綴

  3. 修正Package namecom.example.mysmall

New small project

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來創建插件模塊,需要滿足:

  1. 模塊名形如:app.*lib.*或者web.*
  2. 包名包含:.app..lib.或者.web.

    為什么要這樣?因為Small會根據包名對插件進行歸類,特殊的域名空間如:“.app.” 會讓這變得容易。

lib.*模塊選擇Android Library,其他模塊選擇Phone & Tablet Module

創建一個插件模塊,比如app.main

  1. 修改Application/Library nameApp.main
  2. 修改Package namecom.example.mysmall.app.main

    New small module

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

  1. Build libraries (準備基礎庫)

    [./]gradlew buildLib -q (-q是安靜模式,可以讓輸出更好看,也可以不加)

    Build libraries

  2. Build bundles (打包所有組件)

    [./]gradlew buildBundle -q (-q是安靜模式,可以讓輸出更好看,也可以不加)

    Build bundles

這兩步,如果你喜歡,也可以在Gradle任務導航里運行
Small tasks

單獨編譯一個組件可以使用 [./]gradlew -p web.about assembleRelease
或者
Sub tasks

7. Run Small

在工具欄Run small,選擇app模塊,運行。

.目錄結構



異常處理

上面是給出的步驟 但是需要注意的是新建插件模塊的時候比如輸入的是app.main 這個時候包名需要注意修改為類似com.example.small.app.main  而不是com.example.small.appmain 這樣運行會出問題。
如果編譯出現問題 需要先執行./gradlew cleanLib


 本文由用戶 wj2220 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!