Android IOS移动开发Android知识Android开发

Android 插件框架机制之Small

2017-02-28  本文已影响82人  mymdeep

Android 插件框架机制系列文章:
Android 插件框架机制之预热篇


引言

上一篇文章提到过Small,这次就简单说一下Small,这只是一篇入门的文章,如果想深入了解,可以下载官方demo,里面会有详细的示例。

官方demo

我是用AS打开的这个demo,如图所示:

工程结构如图所示:

第一次运行demo会提示如下问题:

这是我们打开AS自带的终端:

输入gradle命令,进行编译,这些需要注意的是的,如果使用的是windows使用./gradlew,如果使用的mac或linux,使用gradle即可:

 gradle buildLib -q
gradle buildBundle -q

最后输入这个命令查看插件情况:

 gradle small

如果此时你的终端有如下显示,则表明正确:


注意,如果你们有使用AS自带的终端,请切到项目目录下输入这些命令
此时再运行,就会看到如下界面了:

入门教学

新建工程

在工程下的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"
    },
   
  ]
}

运行

然后回到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

上一篇下一篇

猜你喜欢

热点阅读