插件开发规范 V1.0.1

由于VirtualAPK本身的特性,插件需要遵循以下规范:

1.宿主配置

Project build.gradle

 classpath 'com.didi.virtualapk:gradle:0.9.0'
`</pre>

Module build.gradle

<pre>`apply plugin: 'com.didi.virtualapk.host'
compile 'com.didi.virtualapk:core:0.9.0'
`</pre>

2.插件配置

插件 Project build.gradle 文件中,需要加入如下引用:

classpath 'com.didi.virtualapk:gradle:0.9.0'

注:版本号应与宿主版本号相同

插件 Module build.gradle 文件中,需要加入如下引用:

apply plugin: 'com.didi.virtualapk.plugin'
virtualApk     { 
    packageId = 0x6f // 插件资源id,避免资源id冲突 
    targetHost='../host/app'// 宿主工程的路径 
    applyHostMapping = true // 插件编译时是否启用应用宿主的apply mapping 默认为true
}

3.构建环境

官方构建环境建议:

框架强依赖构建环境。如果更换构建环境,可能会出现问题

Gradle                   2.14.1

com.android.tools.build  2.1.3

即:插件 Project  build.gradle 文件中

classpath 'com.android.tools.build:gradle:2.1.3'

插件gradle-wrapper.properties文件中:

distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

4.打包

插件打包时,应当用命令
./gradlew clen assemblePlugin
或者 gradle clean assemblePlugin 进行打包

输出位置为:app\build\outputs\plugin\release

由于插件 Module build.gradle 文件中设置了如下参数,
targetHost=’../host/app’// 宿主工程的路径
故,打包时的文件结构应为:

即:HOST 应与插件在同一目录下编译

插件调用宿主

将宿主中需要被插件调用的 模块、类,下沉到公共组件库。

即:以aar包的形式。分别被插件,组件依赖即可。

aar 引入模板:

compile(group:'test', name: 'app-release', version:'0.2', ext: 'aar')

插件中包含 so 包需特别注意

如果插件中包含如百度地图等 so 包,由于部分第三方库存在的包名校验机制,需要注册一份新的 secretKey 写到宿主中,这个不难理解,因为运行时包名是宿主的包名,不能通过校验。

资源链接

我的踩坑记录 https://blog.csdn.net/a31081314/article/details/82661009

我的demo 地址 https://github.com/CD3108/VirtualAPK

源码地址 https://github.com/didi/VirtualAPK

详细框架接入 https://www.jianshu.com/p/013510c19391

四大组件加载过程 https://mp.weixin.qq.com/s?__biz=MzAxMTI4MTkwNQ==&mid=2650823488&idx=1&sn=2976c8ddc0c206149b14c527260f7766&chksm=80b78fdeb7c006c8a9585db794c51e799049ec50d23c4d738c78d77454f6b0291227a00e2def&mpshare=1&scene=1&srcid=0712oTUswGWi172UK0Azpg4i&key=8652b956ca1971a47b1e263b435230c7469d30646ddbe6ce2fb781033d6eba5215c9fd7e5eaf0bd73dd5da279b32dd901261d5e55bf32997bc333ad8a059e095e2193a5baa805447fc49cd315fca4404&ascene=0&uin=MTI0NjM4NTEyMA%3D%3D&devicetype=iMac+MacBookPro11%2C4+OSX+OSX+10.11.1+build(15B42)&version=12010110&nettype=WIFI&fontScale=100&pass_ticket=mswE9bS3QeCxTOoepaUWh9VXHxeYMosdkHkAydyR09JHQkVe%2BAJHCCnPQrRpBfQN

资源加载过程 https://www.notion.so/VirtualAPK-1fce1a910c424937acde9528d2acd537

来自VirtualAPK开发群 点击链接加入群聊【VirtualAPK】: