以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。

[Android]如何做一个崩溃率少于千分之三噶应用app--章节列表

我建立了一个关于Android架构学习的群,里面可以进一步进行组件化学习的交流。

群号是316556016,也可以扫码进群。我在这里期待你们的加入!!!


为何需要做会出现这样的需求呢?

我们当时开发的架构就是用多个module作为功能模块加载,所以就会单个项目出现多module的状态。

抽出sdk生成aar的时候,只能由一个module生成一个aar。


查看网上很多资料,最终在StackOverflow里查到只能多个module合并成单一module才能处理生成aar,不然就只能修改android编译的源码了。

但是我们工程业务是在持续开发中迭代的,我们没可能每次想更新一个sdk的时候都再做这种重复噶工作量。

那要如何处理这种多module合并的问题。

没错,我们需要写一个脚本。


然后我们选择了写一个python的脚本。

说明一下我的工程架构

1.工程有一个主的工程client入口依赖于各个功能模块

2.工程功能module模块依赖于一个base的模块

3.base的module模块依赖于core和framework的模块。

如下图:

Q����


首先我们需要了解一下我们考虑的地方

1.如何生成一个总工程的AndroidMainfest呢?因为多个module,里面肯定有可能加载了很多四大组件的,那么都需要在各自的module注册的AndroidMainfest注册的。

2.假如java文件有依赖于R.文件,而java文件分别在不同的module里面,合并module,其原来R的索引就会不存在了

3.value里面的string color等文件会同名,如何处理呢?

4.build.gradle如何配置呢?


对于上面的问题解决的方案:

1.将本来工程编译成功后,在build\intermediates\mainifests\full里面有已经生成好的AndroidMainfest.xml。

这个文件有全部已经打包好四大组件。所以其实编译器是有能力将全部的module编译成单一module的,只是没有公开这样的设置

2.对于依赖的R.文件,工程最终还是要编译成client的app的,将全部的java文件有加入import R的依赖移除,再添加成client的R依赖

3.value里面的文件可以前部加入一个module的前缀(如string.xml,改为base_string.xml),aapt生成string里面的字符最好不要重复名称

4.build.gradle 需要手动整合全部module所要依赖的修改(例如分享模块,会需要依赖分享的库,图片模块需要加入图片库),然后才能实验编译


还需要总结一下我之后踩到的一些坑

1.因为python是现学现用的,可能很多技巧也还没接触到,例如shutil.copyfile,shutil.copytree,os.system("xcopy")是有很大的区别的,请先尝试一下这些方法的区别,我一般都是用cmd运行试验的。

2.Android中请确定资源的名称一定要是唯一的,例如drawable和layout,其他java文件等,请尽量名称不要重名。

3.因为每个module建立的时候都有一个的对应的app_name,可以将其删除,这样会避免冲突

4.移植的时候不需要将各个module里面的AndroidMainfest和build.gradle文件移到文件夹里面

5.移植的时候,请先移植client的module(原生成app的module),然后再移植base,core,framework等基础module,再去移植其他功能模块的module,然后再替换AndroidMainfest和build.gradle等文件


这些都是总结出来的一些经验,希望对各位有帮助吧,如果有疑问可以在之下留言。我收到会逐一回复。

更多相关文章

  1. Android:将电脑上的文件传输到模拟器的sdcard上
  2. Android(安卓)SDK工具(谷歌提供的16个工具)简介
  3. Android采用Pull解析和生成xml文档
  4. 腾讯 Bugly热更新技术
  5. Android(安卓)Studio中manifest文件中的package包名和module中的
  6. Android(安卓)Q私有目录与公共目录文件的交互(读取,复制,保存等)——
  7. PC客户端与Android服务端的Socket同步通信(一)
  8. android studio 利用productFlavors 生成三种不同网络环境的Apk
  9. Android修炼之混淆

随机推荐

  1. Android(安卓)默认全面屏适配方案
  2. Android抽屉式按钮实现
  3. Android常用组件,太全了
  4. Android(安卓)ProgressDialog的使用
  5. Linux profilers: oprofile vs. ftrace (
  6. Android(安卓)曲线绘制Demo
  7. android中如何给button加圆角
  8. Android(安卓)Button Maker(在线生成andro
  9. Android(安卓)Activity 常用功能设置(全屏
  10. AndroidManifest.xml的Service元素 andro