android studio转成依赖项目lib再连同资源文件一起打jar包过程

第一步:在项目中的build.gradle文件中将
apply plugin: 'com.android.application'
改为
apply plugin: 'com.android.library'
同时将applicationId删除,这样Module就成了一个lib库






第二步:在lib中的build.gradle中添加生成jar包的task任务


方式一:
def SDK_BASENAME = "Sdk";//打包后名字
def SDK_VERSION = "_V1.0";//${defaultConfig.versionName}
def sdkDestinationPath = "build";//保存目录
def zipFile = file('build/intermediates/bundles/release/classes.jar')
task deleteBuild(type: Delete) {//删除jar包
    delete sdkDestinationPath + "/" + SDK_BASENAME + SDK_VERSION + ".jar"
}
task makeJar(type: Jar) {//生成jar
    from zipTree(zipFile)
    from fileTree(dir: 'src/main', includes: ['assets/**'])
    baseName = SDK_BASENAME + SDK_VERSION
    destinationDir = file(sdkDestinationPath)//目的地
}
makeJar.dependsOn(deleteBuild, build)
//在终端执行生成JAR包
// gradlew makeJar


方式二:
def SDK_BASENAME = "Sdk";//打包后名字
def SDK_VERSION = "_V1.0";//${defaultConfig.versionName}
def SDK_NAME = SDK_BASENAME + SDK_VERSION + ".jar";
//Copy类型
task makeJar(type: Copy) {
    //删除存在的
    delete 'build/libs/' + SDK_NAME
    //设置拷贝的文件
    from('build/intermediates/bundles/release/')
    //打进jar包后的文件目录
    into('build/libs/')
    //将classes.jar放入build/libs/目录下
    //include ,exclude参数来设置过滤
    //(我们只关心classes.jar这个文件)
    include('classes.jar')
    //重命名
    rename('classes.jar', SDK_NAME)
}
makeJar.dependsOn(build)
//在终端执行生成JAR包
//gradlew makeJar


方式三:
task clearJar(type: Delete) {
    delete 'libs/sdk.jar'
}
task makeJar(type: org.gradle.api.tasks.bundling.Jar) {
    //指定生成的jar名
    baseName 'sdk'
    //从哪里打包class文件
    from('build/intermediates/classes/debug/org/cmdmac/cloud/pluginsdk/')
    //打包到jar后的目录结构
    into('build/libs/')
    //去掉不需要打包的目录和文件
    exclude('test/', 'BuildConfig.class', 'R.class')
    //去掉R$开头的文件
    exclude { it.name.startsWith('R$'); }
}
makeJar.dependsOn(clearJar, build)
//在终端执行生成JAR包
//gradlew makeJar


方式四:
def SDK_BASENAME = "Sdk";//打包后名字
def SDK_VERSION = "_V1.0";//${defaultConfig.versionName}
def SDK_NAME = SDK_BASENAME + SDK_VERSION + ".jar";
def zipFile = file('build/intermediates/bundles/release/classes.jar')
def sdkDestinationPath = "build/libs/";//保存目录
task makeJar(type: Jar) {//生成jar
    delete 'build/libs/' + SDK_NAME
    from zipTree(zipFile)
    from fileTree(dir: 'src/main', includes: ['assets/**'])
    from(project.zipTree('libs/xutils-3.3.4.jar'))
    from(project.zipTree('libs/glide-3.7.0.jar'))
    from(project.zipTree('libs/xutils-3.3.4.jar'))
    baseName = SDK_BASENAME + SDK_VERSION
    destinationDir = file(sdkDestinationPath)//目的地
}
makeJar.dependsOn(build)




第三步:在Terminal工具中执行下面命令
gradlew :test:clean :test:makeJar   //:tset表示lib库名称,这种写法是指定lib库生成jar
gradlew makeJar //这种是将项目中的lib库生成jar。(对项目中的所有有makeJar任务的lib都有效)






如果需要同时将资源文件也打进去的话,则要在以上四种方法中添加
from fileTree(dir: 'src/main', includes: ['res/**'])
即按第一种方式来说就是:


def SDK_BASENAME = "xxx_sdk";//打包后名字
def SDK_VERSION = "_V1.0";//${defaultConfig.versionName}
def sdkDestinationPath = "build";//保存目录
def zipFile = file('build/intermediates/bundles/default/classes.jar')
task deleteBuild(type: Delete) {//删除jar包
    delete sdkDestinationPath + "/" + SDK_BASENAME + SDK_VERSION + ".jar"
}
task makeJar(type: Jar) {//生成jar
    from zipTree(zipFile)
    from fileTree(dir: 'src/main', includes: ['assets/**'])
    from fileTree(dir: 'src/main', includes: ['res/**'])
    baseName = SDK_BASENAME + SDK_VERSION
    destinationDir = file(sdkDestinationPath)//目的地
}
makeJar.dependsOn(deleteBuild, build)


这样打出的jar包中就包含了资源文件,然后在依赖的lib目录build\outputs\aar下找到资源引用文件release.aar文件。






在新项目中引入jar时,将新打出的jar复制到新项目中的lib下,添加依赖即可,同时需要引用资源文件,
则把资源引用文件aar也放入新项目的lib下,
首先要在项目的build中android{}中添加如下声明,
repositories {
        flatDir {
            dirs 'libs'
        }
    }


然后在dependencies中添加相应的ompile(name:'aar文件名', ext:'aar'),
同时修改“compile fileTree”为“provided fileTree(include: ['*.jar'], dir: 'libs')


dependencies {
    provided fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:26.+'
    compile(name:'aar文件名', ext:'aar')
}


最后运行新项目,调用集成的jar包和资源文件,测试成功!
发布了395 篇原创文章 · 获赞 52 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/qq_23174861/article/details/79445180
今日推荐