Android Studio打包Android Library为jar方案

新建一个空的项目后,新建一个Android Library Module,然后build.gradle大概是这样的:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        minSdkVersion 17
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
}

然后打开这个文件, 在上面右键->Run 'build', Run控制台会大概输出这样

D:\MyDownloads\java\jdk1.8.0_40\bin\java -Dgradle.home=C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8 -Dtools.jar=D:\MyDownloads\java\jdk1.8.0_40\lib\tools.jar -Didea.launcher.port=7532 "-Didea.launcher.bin.path=C:\Program Files\Android\Android Studio\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\groovy-all-2.4.4.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\ant-1.9.3.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\ant-launcher-1.9.3.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\gradle-base-services-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\gradle-base-services-groovy-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\gradle-cli-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\gradle-core-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\gradle-docs-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\gradle-launcher-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\gradle-messaging-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\gradle-model-core-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\gradle-model-groovy-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\gradle-native-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\gradle-open-api-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\gradle-resources-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\gradle-tooling-api-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\gradle-ui-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\gradle-wrapper-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-announce-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-antlr-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-build-comparison-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-build-init-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-code-quality-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-dependency-management-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-diagnostics-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-ear-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-ide-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-ide-native-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-ivy-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-jacoco-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-javascript-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-jetty-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-language-groovy-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-language-java-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-language-jvm-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-language-native-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-language-scala-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-maven-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-osgi-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-platform-base-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-platform-jvm-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-platform-native-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-platform-play-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-plugin-development-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-plugin-use-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-plugins-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-publish-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-reporting-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-resources-http-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-resources-s3-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-resources-sftp-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-scala-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-signing-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-sonar-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-test-kit-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-testing-native-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\gradle-tooling-api-builders-2.8.jar;C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8\lib\plugins\ivy-2.2.0.jar;C:\Program Files\Android\Android Studio\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain org.gradle.launcher.GradleMain --build-file E:\myApp\android-exercises\ANE\FirstANE\build.gradle
:FirstANE:help

Welcome to Gradle 2.8.

To run a build, run gradle <task> ...

To see a list of available tasks, run gradle tasks

To see a list of command-line options, run gradle --help

To see more detail about a task, run gradle help --task <task>

BUILD SUCCESSFUL

Total time: 22.827 secs

Process finished with exit code 0

然后去build\intermediates\bundles目录看看, 并没有我们的release文件夹, 只有build\outputs\aar里的aar文件, 

怎么办呢, 用gradle导出jar吧

task buildJar(type: Jar) {
    extension = "jar"
    archiveName = "FirstANE.jar"
    def srcClassDir = [project.buildDir.absolutePath + "/intermediates/classes/debug"];
    def resourceDir = [projectDir.absolutePath + "/src/main"];
    from srcClassDir
    include 'org/*/FirstANEContext.class'
    include 'org/*/FirstANEExtension.class'
    include 'org/*/SayHelloFunction.class'
    from resourceDir
    include 'res/values/*.xml'
}

然后我假设你已经配置好了gradle环境变量:

新建GRADLE_HOME=C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h\gradle-2.8

PATH加上%GRADLE_HOME%\bin

你的gradle目录可能有所不同, 请不要复制粘贴

然后用cmd进入你的Android Library Module, 运行gradle buildJar回车即可

最后你的 jar 包会生成到 Module/build/libs 目录之下.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

svygh123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值