引用第三方项目
①首先将第三方项目作为Module导入到我们的项目中,具体就是:
②导入之后,需要我们在项目的Gradle的dependencies{}下添加:
compile project(':这里为第三方项目名称')
关于jar包
使用android studio打jar包
如果想使用android studio将我们的项目打成jar包,首先要明确的是只能将java文件打包,而不能打包res等资源文件。
①首先项目只能是library,而不能是application,也就是说我们要在gradle中将app plugin改为:apply plugin: 'com.android.library'
②然后在根节点,而不是在任何标签下,添加代码:
task makeJar(type: Copy) {
delete 'build/libs/XXXXX.jar'
from('build/intermediates/bundles/release/')
into('build/libs/')
include('classes.jar')
rename ('classes.jar', 'XXXXX.jar')
}
makeJar.dependsOn(build)
//在终端执行生成JAR包
// gradlew makeJar
③之后在Terminal终端中执行:gradlew makeJar
,稍等之后,就可以在项目/app/build/libs目录下找到我们打包好之后的jar包
引用jar包
①首先将需要引用的jar包拷贝到项目app/libs目录下
②之后在gradle的dependencies{}标签中添加如下代码:
compile files('libs/XXXXX.jar')
如果不想自己在gradle中手动添加代码去关联,我们也可以使用下面的方法:
①菜单栏选择 File —>Project Structure。或者直接点击,一样的效果!
②在弹出的Project Structure 对话框中, 选择module, 然后点击 Dependencies 选项卡.
③点击绿色的加号选择File dependency. 然后选择要添加的jar包即可完成上边的操作后在app目录下的build.gradle文件中,会自动引入类库。
so库的问题
我们在使用第三方jar的时候,常常会遇到SDK开发平台给的不同CPU架构的so文件,那么我们怎么添加这些so文件?两种方法:
方法一
①在src/main/目录下新建jniLibs目录,然后将所有的so文件拷入该目录下,工程会自动加载src目录下的so动态库
②需要注意的是:jar和so的版本号必须一致。
方法二
①在app/libs目录下放入对应不同CPU架构的so文件。但是这样工程并不会自动加载libs下的so文件
②需在gradle编译时,通过加入代码:jniLibs.srcDir 'libs'
来说明so的路径为该libs路径。
AAR包
android studio提供了可以打包包含我们项目res、assets等资源文件的一种文件格式,就是aar。
打aar包
①首先需要我们在项目gradle中将app plugin改为:apply plugin: 'com.android.library'
②之后在defaultConfig{}节点中去掉applicationId
,versionCode
,versionName
等内容
③还需要我们在manifest的application标签的主活动中去掉
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
④一般情况下,我们还需要去掉
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
等内容,防止在引用的时候发生冲突!
或者在引用aar包的项目的application标签下添加:
tools:replace="android:label,android:icon"
,解决冲突!
⑤在做了上述步骤之后,同步一下我们的项目,就能在app/build/outputs/aar目录下找到我们打包好的aar文件
引用arr包
①跟引入jar包一样,将aar文件拷贝到app/libs目录下
②在gradle根节点添加如下代码:
repositories{
flatDir{
dirs 'libs'
}
}
③最后在dependencies{}标签下进行关联:
compile (name: '你引入的aar文件的名称,不包含后缀', ext: 'aar')