Android App插件化(推荐)

携程开源插件化框架(推荐)

https://github.com/CtripMobile/DynamicAPK

使用方法:

$ git clone https://github.com/CtripMobile/DynamicAPK.git
$ cd DynamicAPK/
$ gradle assembleRelease bundleRelease repackAll
Release APK in /build-outputs/***-release-final.apk


若gradle build时提示: Unable to find optional library: org.apache.http.legacy
http://blog.csdn.net/liuhongwei123888/article/details/50100697


代码解读:

Framework:管理各个Bundle的启动,更新,卸载;提供框架启动Runtime

BundleCore Bundle机制外部核心类
Bundle:插件
BundleImpl:插件实现

SysHacks:
Hack:反射机制反射后包装的形式:类,方法,字段
HackedClass
HackedConstructor
HackedField
HackedMethod
HackDeclaration

Archive:存档
BundleAchive: Bundle 目录结构:version_1,version_2
BundleArchiveRevision: Bundle 存储文件:bundle.zip,bundle.dex;采用PathClassLoader 加载 dex文件,并opt释放优化后的dex

HotPatchManager 补丁管理器
HotPatchItem:补丁

AndroidHack:Android中的Resource Hack

BundlePathLoader:用PathLoader加载Bundle

DelegateResources: 挂载载系统资源中,处理框架资源加载

InstrumentationHook:

==============================================================================

插件化相关:

1、代码(打包及加载)
Jar/Dex, DexClassLoad、PathClassLoader
反射
2、资源(打包及加载)
R.string.xxx R.drawable.xxx R.layout.xxx
1、用反射AssetsManager.addAssetPath添加插件apk路径
2、生成一个和插件apk对应的Resource,到这里Resource即可获取到对应的资源
3、用反射把context里的mResources替换成插件的Resource,然后调用super.attachBaseContext(context)把context挂到Activity,即可直接使用布局

参考:http://www.2cto.com/kf/201512/455534.html

Android插件化基础(4),动态启动插件中的activity
http://www.cdsile.com/news/wangzhankaifa/05356/47382.html


如何实现携程动态加载插件中对aapt的改造
http://blog.csdn.net/lzyzsd/article/details/49768283


携程Android App插件化和动态加载实践
http://www.infoq.com/cn/articles/ctrip-android-dynamic-loading

Android程序编译时更改包名

http://niyanshi.iteye.com/blog/1921777?utm_source=tuicool&utm_medium=referral



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值