Android插件化(使用Small框架)


github:

https://github.com/cayden/MySmall

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.” 會讓這變得easy。

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中增加簽名配置(password改成自己的):

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模塊,執行。

.文件夾結構



異常處理

1、上面是給出的步驟 可是須要注意的是新建插件模塊的時候比方輸入的是app.main 這個時候包名須要注意改動為相似com.example.small.app.main  而不是com.example.small.appmain 這樣執行會出問題。
2、假設編譯出現故障 須要先執行./gradlew cleanLib



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM