文章目录
1 整理Android Studio 2.3.3将module打jar包打包过程
1 new 一个 module,如果之前有则用之前的,但是要确保module是library状态,并且主工程已添加依赖
2 android studio 会在library所依赖的 app运行 或 build 之后自动生成 jar 包,路径为 Module根目录/build/intermediates/bundles/debug or release/classes.jar,如果没有则可以在Terminal 里运行 gradlew build或 ./gradlew build
3 如果运行gradlew build报错:Execution failed for task ‘:app:lint’
Wrote HTML report to file:///E:/AndroidStudioProjects/xxx/app/build/reports/lint-results.html
Wrote XML report to file:///E:/AndroidStudioProjects/xxx/app/build/reports/lint-results.xml
* What went wrong:
Execution failed for task ':app:lint'.
Lint found errors in the project; aborting build.
Fix the issues identified by lint, or add the following to your build script to proceed with errors:
...
android {
lintOptions {
abortOnError false
}
}
...
解决方法:
在主项目的build.gradle 里添加:
android {
lintOptions {
abortOnError false//忽略lint警告,否则会打包失败
}
}
4 在module的build.gradle的添加
android {
task makeJar(type: Copy) {
delete 'build/meSDK.jar' //删除之前的旧jar包
from('build/intermediates/bundles/default/') //从这个目录下取出默认jar包
into('build/libs/') //将jar包输出到指定目录下
include('classes.jar')
rename('classes.jar', 'meSDK.jar') //自定义jar包的名字
}
makeJar.dependsOn(build)
}
5 在 Android Studio 终端窗口Terminal 中输入 gradlew makeJar 命令,回车执行
执行完成后,jar包会输出到指定目录下。
2 使用生成的Jar包
1 将生成的Jar包(例如上面生成的meSDK.jar),拷贝到项目libs包下,右击然后选择Add AS Library,则可以使用meSDK内部的方法啦
(回顾下之前生成meSDK.jar之前的Library里定义的类的方法):
3 Android Studio 3.1.2打Jar包
1 android studio3.1.2的时候bundles目录不存在了,改为packaged-classes。
则配置如下
task makeJar(type: Copy) {
delete 'build/meSDK.jar' //删除之前的旧jar包
from('build/intermediates/packaged-classes/release') //从这个目录下取出默认jar包
into('build/libs/') //将jar包输出到指定目录下
include('classes.jar')
rename('classes.jar', 'meSDK.jar') //自定义jar包的名字
}
makeJar.dependsOn(build)
2 然后,选中library的Module,点击Make Module library,此时packaged-classes目录即可生成。
3 在 Android Studio 终端窗口Terminal 中输入 gradlew makeJar 命令,回车执行,执行完成后,jar包会输出到指定目录下。
4 配置Jar包方法
方法1:
def _BASENAME = "TestJar";
def _VERSION = "_V1.0";
def _DestinationPath = "build"; //生成jar包的位置
def zipFile = file('build/intermediates/bundles/default/classes.jar'); //待打包文件位置
task deleteBuild(type:Delete){
delete _DestinationPath + _BASENAME + _VERSION + ".jar"
}
task makeJar(type:Jar){
from zipTree(zipFile)
from fileTree(dir:'src/main',includes:['assets/**']) //将assets目录打入jar包
baseName = _BASENAME + _VERSION
destinationDir = file(_DestinationPath)
}
makeJar.dependsOn(deleteBuild, build)
方法2:
task makeJar(type: Copy) {
delete 'build/TestJar_V1.0.jar' //删除之前的旧jar包
from('build/intermediates/bundles/default/') //从这个目录下取出默认jar包
into('build/') //将jar包输出到指定目录下
include('classes.jar')
rename('classes.jar', 'TestJar_V1.0.jar') //自定义jar包的名字
}
makeJar.dependsOn(build)
方法3:
task clearJar(type: Delete) {
delete 'build/TestJar_V1.0.jar' //jar包的名字,随便命名
}
task makeJar(type:org.gradle.api.tasks.bundling.Jar) {
//指定生成的jar名
baseName 'TestJar_V1.0'
//从哪里打包class文件
from('build/intermediates/bundles/default/')
//打包到jar后的目录结构
into('build/')
//去掉不需要打包的目录和文件
exclude('test/', 'BuildConfig.class', 'R.class')
//去掉R开头的文件
exclude{it.name.startsWith('R');}
}
makeJar.dependsOn(clearJar, build)
5 打Jar包方式
方式1:在 Android Studio 终端窗口Terminal 中输入 gradlew makeJar 命令
方式2:通过Gradle -->Library —> Tasks —> other — > makeJar方法
参考了Now,DayBreak的博客