我们可以把库模块做成一个jar,由多个项目工程引用。不过有时我们会希望以源文件源项目的方式来引用库模块,这样可以对库模块文件临时做修改调试等等。
我们首先建立两个最简项目工程,其一叫MyProj1,其二叫MyProj2Lib,假定现在我们已经建好了,每个工程里面各有一个app模块。
接下来我们在MyProj2Lib中增加了一个mylibrary库模块,方法是File-->New-->NewModule,在弹出的对话框中选择Androidlibrary类型,一路下去就生成了一个库模块,并命名为mylibrary。我们在这个库模块的存放源代码的位置添加一个类,比如MyLibFunctions,在其中添加一个公共方法,比如myLibAdd,用来对两个整数相加并返回结果。
接下来我们设法使得MyProj2Lib中app模块可以引用MyLibFunctions中的公共方法。
首先我们注意到,在刚才添加库模块mylibrary之时,Android Studio已经自动在settings.gradle文件中做了修改:
include':app',':mylibrary'
该修改指明本工程中有app和mylibrary两个模块。
在app模块下的build.gradle文件的dependencies里面增加如下编译项:
compileproject (':mylibrary')
在gradle同步之后我们打开一个java源文件,输入:
new MyLibFunctions().myLibAdd(1, 2)
可以看到我们已经可以引用mylibrary里面的公共方法了。
自此我们在MyProj2Lib中的app模块可以引用mylibrary库模块了,接下来我们要实现在MyProj1里面的app也可以引用MyProj2Lib中的这个mylibrary库模块。
打开MyProj1里面的settings.gradle文件,将内容改为:
include ':app'
include ':mylibrary'
project(':mylibrary').projectDir= new File("../MyProj2Lib", 'mylibrary')
这是最关键的一步,由此实现了跨项目工程的库模块引用。
打开MyProj1里面app模块的build.gradle,在dependencies里面增加:
compileproject(':mylibrary')
由此实现MyProj1编译MyProj2Lib中的库模块。
打开MyProj1里面app模块的一个java文件,输入
new MyLibFunctions().myLibAdd(1, 2)
可以看到我们已经可以引用MyProj2Lib里面的mylibrary里面的公共方法了,此刻完成了库模块的跨项目工程引用。
全部demo代码:https://github.com/maxyou/Android-Refer-Library-Across-Project-Demo