Android 插件框架機(jī)制之Small

Android 插件框架機(jī)制系列文章:
Android 插件框架機(jī)制之預(yù)熱篇


引言

上一篇文章提到過(guò)Small,這次就簡(jiǎn)單說(shuō)一下Small,這只是一篇入門(mén)的文章,如果想深入了解,可以下載官方demo,里面會(huì)有詳細(xì)的示例。

官方demo

我是用AS打開(kāi)的這個(gè)demo,如圖所示:

工程結(jié)構(gòu)如圖所示:

第一次運(yùn)行demo會(huì)提示如下問(wèn)題:

這是我們打開(kāi)AS自帶的終端:

輸入gradle命令,進(jìn)行編譯,這些需要注意的是的,如果使用的是windows使用./gradlew,如果使用的mac或linux,使用gradle即可:

 gradle buildLib -q
gradle buildBundle -q

最后輸入這個(gè)命令查看插件情況:

 gradle small

如果此時(shí)你的終端有如下顯示,則表明正確:


注意,如果你們有使用AS自帶的終端,請(qǐng)切到項(xiàng)目目錄下輸入這些命令
此時(shí)再運(yùn)行,就會(huì)看到如下界面了:

入門(mén)教學(xué)

新建工程

在工程下的build.gradle(注意是project的不是module的),進(jìn)行修改如下

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.2'
        classpath 'net.wequick.tools.build:gradle-small:1.1.0-alpha2'//添加依賴
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
//引用 gradle-small 插件
apply plugin: 'net.wequick.small'
small {
    buildToAssets = false
    aarVersion = '1.1.0-alpha2'
    android {
        compileSdkVersion = 23
        buildToolsVersion = "23.0.3"
        supportVersion = "23.4.0"
    }
}

可以像上面講解demo中提到過(guò)的一樣,在終端輸入:

 gradle small

看看是否編譯正常。

配置宿主

我們新建的這個(gè)工程中有一個(gè)app module,假設(shè)這就是我們的宿主應(yīng)用,即主應(yīng)用,我們?cè)谠搈odule中新建Application:

public class DeepApp extends Application{
    public DeepApp(){
        Small.preSetUp(this);//初始化Small
    }

    @Override
    public void onCreate() {
        super.onCreate();
    }
}

再在 AndroidManifest.xml 中指定這個(gè) Application。

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:name=".DeepApp"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

模塊插件

我們新建立一個(gè)module,選擇Phone & Tablet Module,設(shè)置 Application/Library name 為 App.main,此時(shí) Module name 自動(dòng)為 app.main,如圖所示:

了確認(rèn)我們確實(shí)啟動(dòng)了插件,我們修改插件的布局文件 app.main > res > layout > activity_main.xml,將 TextView 的內(nèi)容改為 Hello deep!

編譯插件

像我們上面講解demo中提到的一樣,在終端進(jìn)行編譯:

 gradle buildBundle -q

關(guān)聯(lián)插件

現(xiàn)在我們已經(jīng)生成了插件并內(nèi)置到宿主包中,要啟動(dòng)插件,我們需要配置一個(gè)路由來(lái)指向它。

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

在bundle.json文件中添加如下代碼:

{
  "version": "1.0.0",
  "bundles": [
    {
      "uri": "main",
      "pkg": "deep.appmain"
    },
   
  ]
}
  • version,是 bundle.json 文件格式版本,目前始終為 1.0.0
  • bundles,插件數(shù)組
  • uri,插件唯一ID
  • pkg,插件包名

運(yùn)行

然后回到app module中,找到MainActivity,重寫(xiě)onStart():

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

            }
        });

main就是剛才bundle.json中uri的參數(shù)。說(shuō)明我們要啟動(dòng)main這個(gè)module的MainActivity。
由于我之前做過(guò)別的設(shè)置,所以發(fā)現(xiàn)點(diǎn)擊運(yùn)行報(bào)錯(cuò)了,這時(shí)我們需要清除之前的編譯:

 gradle cleanLib -q

然后重新編譯,即可運(yùn)行。

總結(jié)

所有關(guān)于Small的講解,在官方文檔上說(shuō)的非常詳細(xì),我之前也沒(méi)有用過(guò),但是前幾天總結(jié)插件框架的時(shí)候發(fā)現(xiàn)的這個(gè),就去看了看,不算很難上手,而且Android IOS都會(huì)支持。需要的朋友,建議利用官方文檔入門(mén),然后在分析一下他的demo即可,涵蓋的功能很全面。
這里再放一下地址:
官方文檔
官方demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.框架的選擇:本次選擇的插件化框架在經(jīng)過(guò)數(shù)次比較之后選擇了國(guó)產(chǎn)大神開(kāi)發(fā)的目前在市場(chǎng)上較為流行的small插件化框...
    鳳天凌閱讀 3,670評(píng)論 8 11
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,040評(píng)論 25 709
  • 導(dǎo)讀如果你沒(méi)有耐心,這篇文章對(duì)你來(lái)說(shuō)可能是沉重的負(fù)擔(dān),你可以直接頁(yè)內(nèi)搜索“尾聲”,那里省略了階梯過(guò)程,直接是標(biāo)準(zhǔn)答...
    青藍(lán)白閱讀 1,465評(píng)論 0 5
  • 前言 Small官網(wǎng): https://github.com/wequick/Small 世界那么大,組件那么小。...
    鍵盤(pán)男閱讀 22,354評(píng)論 32 69
  • 早起,鬧鈴并沒(méi)有響,惺忪的睡眼看他微微笑笑,粉色的窗簾透的光都感到暖,感覺(jué)整個(gè)人是舒展的,他蹲廁用略稚嫩的聲音給我...
    ttdthl閱讀 133評(píng)論 0 1

友情鏈接更多精彩內(nèi)容