gradle模块化编译打包方法

对于需要将其单独出来作为模块库的部分,可以先在Android studio 中新建module:


 其会在build.gradle中生成如下信息:

apply plugin: 'com.android.library'

并且没有applicationId 。


这样单独编译这个module 就会生成aar文件,即这个module模块中的内容以库的形式提供使用。


然后在主APP中添加引用后会在build.gradle中生成如下信息:

implementation project(':modulelibdemo')

最后直接在主APP的gradle task 中进行编译,即可以将module中的内容打包过来,可以直接引用module模块中的Activity:

case R.id.module_lib:
    it.setClass(MainActivity.this, com.hnac.modulelibdemo.MainActivity.class);
    break;

对于类文件,通过增加包名就可以区分了,而对于资源文件就需要注意不能同名了,笔者就直接使用生成的activity_main.xml布局文件进行测试,结果导致从主APP的activity_main.xml 跳转到module的activity_main.xml中,看起来没有跳转生效,加log一看才知道已经跑到module中的Activity中,只是因为资源文件同名,两者在整合时无法区分,导致只留下主 App的资源文件。

将module中的资源文件更换名字就可以了。


顺便疑问一下,为啥编译的时候,不对module中的资源文件名称也进行增加包名前缀处理呢? 这样不就可以不用去重相同名字资源了吗。。。

猜你喜欢

转载自blog.csdn.net/yangwubolwg/article/details/80917209