Small插件化方案

創建工程

  • open Android Studio,點選 Start a new Android Studio project 創建一個Android工程。Application Name 本示例設置為 SmallDemo (您可以填寫為自己的項目名稱)。

集成Small

gradle.jpeg
    dependencies 
    {    
        classpath 'com.android.tools.build:gradle:2.2.3' //注意gradle版本號   
        classpath 'net.wequick.tools.build:gradle-small:1.1.0-alpha2'  
    } 
    
    //在文件末尾加上
    apply plugin: 'net.wequick.small'
    
    small 
    {
        aarVersion = '1.1.0-alpha2'
    }

驗證Small環境

在底部面板Terminal中輸入命令:./gradlew small

如果一切正常,將成功輸出:

  gradle-small plugin : 1.1.0-alpha2 (maven)
            small aar : 1.1.0-alpha2 (maven)
          gradle core : 3.3
       android plugin : 2.2.3
                   OS : Mac OS X 10.13.1 (x86_64)
type name PP sdk aapt support file(armeabi) size
host app 26 26.0.2 26.+
app app.main 0x77 26 26.0.2 26.+ *_main.so 43.7 KB

BUILD SUCCESSFUL

配置宿主

  • 新建Application,注入Small


    新建Application.jpeg
  • 添加構造方法來初始化Small

public class SmallApp extends Application
{    
        public SmallApp() 
        {        
            Small.preSetUp(this);    
        }
}
  • 在AndroidManifest.xml 中指定這個 Application

創建插件模塊

  • 右鍵 app 模塊 > New > Module

創建一個應用模塊 Phone & Tablet Module,設置 Application/Library name 為 App.main,此時 Module name 自動為 app.main,Package name 為 com.leo.smalldemo.app.main

  • 確認是否啟動插件

修改插件的布局文件 app.main > res > layout > activity_main.xml,將 TextView 的內容改為 This is Small Model!

編譯插件

  • 先編譯公共庫
./gradlew buildLib -q
  • 再編譯app.main
./gradlew buildBundle -q -Dbundle.arch=x86

在模擬器調試時,-Dbundle.arch=xx,可以使用x86架構,真機打包時,需要使用到armeabi架構

啟動插件

  • 右鍵 app 模塊,New > Folder > Assets Folder 新建 assets 目錄


    assets目錄.jpeg
  • 再右鍵生成的 assets 目錄,New > File 新建路由配置文件 bundle.json:


    bundle.json
  • 修改bundle.json,添加路由
 {
  "version": "1.0.0",//文件格式版本,目前始終為1.0.0
  "bundles": [//插件數組
    {
      "uri": "main",//插件唯一ID
      "pkg": "com.leo.smalldemo.app.main"http://插件包名
    }
  ]
}
  • 啟動app.main插件

回到宿主的 app > java > com.leo.smalldemo > MainActivity,
在 onStart 方法中我們通過上述配置的 uri 來啟動 app.main 插件:

 @Override
    protected void onStart() {
        super.onStart();
        Small.setUp(this, new Small.OnCompleteListener() {
            @Override
            public void onComplete() {
                Small.openUri("main",MainActivity.this);
            }
        });
    }

運行宿主

  • 在頂部菜單欄,我們先選擇宿主模塊 app,再點擊旁邊的運行按鈕


    run
  • 成功運行后,將啟動插件模塊:


    succeed.jpg

文中的代碼已上傳至github
SmallDemo

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容