Android 插件框架機制系列文章:
Android 插件框架機制之預熱篇
Android 插件框架機制之DroidPluginjavascript
上一篇文章提到過Small,此次就簡單說一下Small,這只是一篇入門的文章,若是想深刻了解,能夠下載官方demo,裏面會有詳細的示例。java
我是用AS打開的這個demo,如圖所示:linux
工程結構如圖所示:android
第一次運行demo會提示以下問題:git
這是咱們打開AS自帶的終端:github
輸入gradle命令,進行編譯,這些須要注意的是的,若是使用的是windows使用./gradlew,若是使用的mac或linux,使用gradle便可:json
gradle buildLib -q複製代碼
gradle buildBundle -q複製代碼
最後輸入這個命令查看插件狀況:windows
gradle small複製代碼
若是此時你的終端有以下顯示,則代表正確:
數組
注意,若是大家有使用AS自帶的終端,請切到項目目錄下輸入這些命令
此時再運行,就會看到以下界面了:app
在工程下的build.gradle(注意是project的不是module的),進行修改以下
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中提到過的同樣,在終端輸入:
gradle small複製代碼
看看是否編譯正常。
咱們新建的這個工程中有一個app module,假設這就是咱們的宿主應用,即主應用,咱們在該module中新建Application:
public class DeepApp extends Application{
public DeepApp(){
Small.preSetUp(this);//初始化Small
}
@Override
public void onCreate() {
super.onCreate();
}
}複製代碼
再在 AndroidManifest.xml 中指定這個 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>複製代碼
咱們新創建一個module,選擇Phone & Tablet Module
,設置 Application/Library name 爲 App.main,此時 Module name 自動爲 app.main,如圖所示:
了確認咱們確實啓動了插件,咱們修改插件的佈局文件 app.main > res > layout > activity_main.xml,將 TextView 的內容改成 Hello deep!
像咱們上面講解demo中提到的同樣,在終端進行編譯:
gradle buildBundle -q複製代碼
如今咱們已經生成了插件並內置到宿主包中,要啓動插件,咱們須要配置一個路由來指向它。
右鍵 app 模塊,New > Folder > Assets Folder 新建 assets 目錄:
在bundle.json文件中添加以下代碼:
{
"version": "1.0.0",
"bundles": [
{
"uri": "main",
"pkg": "deep.appmain"
},
]
}複製代碼
pkg,插件包名
而後回到app module中,找到MainActivity,重寫onStart():
Small.setUp(this, new Small.OnCompleteListener() {
@Override
public void onComplete() {
Small.openUri("main", MainActivity.this);
}
});複製代碼
main就是剛纔bundle.json中uri的參數。說明咱們要啓動main這個module的MainActivity。
因爲我以前作過別的設置,因此發現點擊運行報錯了,這時咱們須要清除以前的編譯:
gradle cleanLib -q複製代碼
而後從新編譯,便可運行。
全部關於Small的講解,在官方文檔上說的很是詳細,我以前也沒有用過,可是前幾天總結插件框架的時候發現的這個,就去看了看,不算很難上手,並且Android IOS都會支持。須要的朋友,建議利用官方文檔入門,而後在分析一下他的demo便可,涵蓋的功能很全面。
這裏再放一下地址:
官方文檔
官方demo