/appcan-plugin-demo-android

Android插件基础工程

Primary LanguageJava

AppCanPluginDemo-Gradle

AppCan Android 插件demo

Gradle打包的优势

  • 插件工程简洁: 插件工程引擎部分内容全部在引擎的aar文件里面,插件工程只包含插件部分的内容
  • 插件包生成简单: Gradle打包支持aar文件,可以把插件包除info.xml的部分全部打包在aar文件里面
  • 调试插件简单: 前端使用多个插件时,调试只需要把插件包的aar文件放入libs目录即可
  • 支持R.XX.XX方式调用资源:aar生成插件包时,可以直接使用R.id.xxx

目前已知的问题

  • 由于要启动的Activity在引擎的aar里面,IDE目前不能识别,直接run插件工程会不能启动应用,需要手动点击应用或者在IDE指定启动的Activity
  • aar只能在Gradle编译环境下使用.建议不支持的企业版打包服务升级.
  • 由于打包服务器暂时不能连外网,远程依赖不能用,只能把依赖包(aar,jar)下载到本地.╮(╯▽╰)╭
  • plugin.xml打包时不能自动merge,需要手动复制到插件包目录下。

插件开发的Gradle打包配置

Gradle版本配置

  1. gradle-wrapper.properties中的配置,在当前Demo中推荐使用4.1版本,即:
    distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
  1. build.gradle中的Android编译用的gradle插件,在当前Demo中推荐使用3.0.1,即:
    classpath 'com.android.tools.build:gradle:3.0.1'
  1. 注意:以上版本仅供参考,代表已经测试并适配过。升级版本也不是不可以,但是如果有报错的话,可以反馈给官方,或者提issue,或者自己解决。解决不了的,就用推荐版本。

依赖最新版AppCan引擎进行测试

由于compile关键词已经废弃,现在AppCanDemo中统一使用implementation

  1. 依赖指定版本的引擎(4.3+的引擎适配了Android9.0+)
    implementation 'org.appcan:engine:4.3.23'
  1. 依赖最新版本的引擎
    implementation 'org.appcan:engine:latest.release'
  1. 纠正一个之前文档中的错误:+号不代表最新版本,而是本地已经下载过的任意版本,不保险,不推荐使用。
    implementation 'org.appcan:engine:+' // 不推荐使用此写法

aar插件制作步骤(插件中有用到R.xx.xx)

  1. 参考Demo工程编写调试好插件
  2. build.gradle中的apply plugin: 'com.android.application'修改成apply plugin: 'com.android.library'
  3. make插件工程,拷贝build->outputs->aar->***.aar至插件包jar目录下,重命名为插件名称。
  4. 用压缩工具打开aar,删除assets/widget目录,删除AndroidManifest.xmlminSdkVersion,删除plugin.xml文件
  5. 复制plugin.xml文件到插件包目录,填写info.xml,制作插件包。
  6. build.gradle中的apply plugin: 'com.android.library'修改成apply plugin: 'com.android.application'

如果是封装第三方SDK,需要通过config.xml配置appkey,插件包下面放一份AndroidManifest.xml,里面只包含需要替换的部分,同时删掉aar里面对应的内容,可以参考融云插件

通用导出插件包方法(基于Gradle,插件中没有使用R.xx.xx)

  1. build.gradle最后一行加上:

    apply from: "https://raw.githubusercontent.com/android-plugin/gradle-plugin/master/buildPlugin.gradle"

  2. 把插件相关的资源都放到插件文件夹之后执行:

    gradle buildPlugin

    以上命令执行的操作为:

    • 生成插件工程src部分的jar
    • 生成dex之后的jar
    • 生成插件包(在插件工程根目录下)

    或者找到 Gradle(IDE右上角)—>XXX—>Tasks—>other—>buildPlugin 双击即可

以uexQQ为例:(gif 1.7M)

buildPlugin