在项目中,会遇到一些已经写好的module模块,然后打成jar包或aar包;但是如果这些三方库出现了bug,就需要把module的源代码修改修复那个bug。这个时候如果要导入module模块的话,可以按照以下步骤来。
说步骤前,先分清jar包和aar包的区别
区别:
jar包:只包含class文件和清单文件,不包含资源文件,比如图片等所有的 res下的资源文件;
aar包:aar文件包含所有资源文件,包括class及res资源文件;
打包详细步骤:
1、jar包和aar包都必须要先将module导入,可以新建一个空工程导入(如果有主工程,就直接导入到主工程),File->New->new Module/import Module,这一步简单不做详细介绍
2、修改moudle中的build.gradle文件,将其中的com.android.application修改为com.android.library,并且将applicationId "com.demo.mymoudle"这一行删掉 (必须,否则一个项目就有两个applicationId了,并且module是作为library来打的)
QQ图片20181114010632.jpg3、主工程app:build.gradle 中添加依赖,导入的时候自动加的
dependencies {
...
compile project(':testlibrary')
}
4、编译我们的module,生成release版本的aar,注意千万不要是debug版本的,
点击最右边的gradle面板,选择我们的module进行编译,CommandLine 指令为assemble(默认生成debug和release)
此处打jar为:
打开module名称->Tasks->other->makeJar
QQ图片20181114012850.png5、查看module下的build/output文件夹,即可看到生成的aar文件,我们一般选用那个release版本的aar文件即可
QQ图片20181114010905.jpg项目中添加aar步骤:
1、把aar包直接放入lib中
image2、在module 里面的build.gradle 的根目录添加
repositories{
flatDir {
dirs 'libs'
}
}
compile(name:'SDK-release', ext:'aar')
image
3、在做完了前三步以后,会看到在项目的 External Libraries 里面看到添加的aar
image高潮:
往往跑导入的module时,会有挺多问题的,说一下我踩的比较大的坑
1、重复包:如果主项目app和module有导入了重复的jar包,可以对着module点右键,选择Open Module Setting,选择Dependencies,将scope改为provided
QQ图片20181114014429.png2、混淆:module的混淆一定要关了,主项目app的也和module同步关了,不然会出现类引用没问题,但是跑起来却报错的诡异现象,巨坑;同时混淆文件 proguard.cfp 也会带来一些其他莫名奇妙的报错,需要百度一下解决
3、manifest merge:如果报错里有这个几字眼的话,肯定是module的manifest没有处理干净,譬如出现了label:name 这样的情况,这是不允许的,这个时候就可以直接点开manifest一个一个处理
QQ图片20181114015155.png4、如果module模块的项目和主工程是同一个的话,尽量导入到主工程去调试,因为module模块和主工程的gradler配置版本是要相同的。如果新建的一个工程,可能gradler和主项目的gradler版本不同而导致项目运行不起来,后续调节也很麻烦
5、其余的坑都可以通过百度去查找出答案,就不详细说了,多百度和查stack overflow
网友评论