继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【备战春招】第5天 AppBundle拆分注意事项

Link0
关注TA
已关注
手记 22
粉丝 0
获赞 4

程名称:移动端架构师


课程章节:新一代组件化动态化方案App Bundle


课程讲师:CrazyCodeBoy LovelyChubby


课程内容:

AppBundle拆分的注意事项

App Bundles 方案在减少APK大小方面,就有很大的优势。但是App Bundles方案依托与Google Play才能做到业务模块的按需加载。但是目前爱奇艺开源了Qigsaw框架,自己实现了一套类型Google Play的方案,同时保持API的使用与Google Play保持一致,这样就可以做到国内外场景的自由切换。

  1. dynamic-feature-moudle引用base moudle资源时,不能直接使用R.drawdble 需要使用 [base moudle packagename].R.drawdble的方式

  2. dynamic-feature-module 项目名称不能以数字开头

  3. java.io.IOException: Cannot find PROCESSED_RES output for Main{type=MAIN, fullName=flavor1Debug, filters=[], versionCode=-1, versionName=null}异常 需要注释掉build.gradle的splite {abi{}}

  4. base moudle不可以访问dynamic-feature-module中的id
    dynamic-feature-module中arssc文件中资源索引id的值为0x7e
    base moudle中arssc文件中资源索引id的值为0x7f
    因为feature与baseMoude都有各自的arsc文件,虽然属性名称一直但是id值是不一致的,所以basemoude中涉及访问feature moudle的id值都需要修改

  5. 动态模块配置模块名title 必须通过如下方式dist:title="@string/title_dynamic_feature"不能直接编写字符串,并且该字符串必须写在base moudle

  6. dynamic-feature moudlebase moudlemanifest文件最终会合并成一个manifest文件,所以要保障manifest的资源引用均在base moudle中。

  7. 当打开新建dynamic-feature moudle并启用了on-demand(按需加载)能力时,必须开启Fusing(熔断操作)才能正常的让Api21以下的设备正常使用module

  8. 一般情况下,动态模块下发之后需要重启App才能加载成功,但是如果你使用SplitCompat 加载唤起动态模块,就可以立即生效

  9. 如果下载的模块太大,需要用户确认,GP要求大于10MB需要用户确认

  10. dynamic-feature moudle中的AndroidManifest中定义的Activity不能有exported:true因为别的app不知道你何时安装好模块从而会引发问题


课程收获:

谢谢老师,老师讲解细致,通俗易懂,这一节学习的是AppBundle拆分注意事项,通过注意事项,可以避免使用AppBundle拆分时遇到的各种问题,能够更快速更好的掌握AppBundle,给以后的继续学习打下了良好的基础。

期待后边的继续学习。


http://img4.mukewang.com/63e89cb50001f0a411350883.jpg




打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP