我已经下载了一些库资源,并希望使用Android Studio将其导出为Jar文件。有没有一种方法可以使用Android Studio导出到jar文件?
编辑:
我想导出为jar的库是一个Android库。它称为“ StandOut”,可以从GitHub下载。 https://github.com/pingpongboss/StandOut
我已经下载了一些库资源,并希望使用Android Studio将其导出为Jar文件。有没有一种方法可以使用Android Studio导出到jar文件?
编辑:
我想导出为jar的库是一个Android库。它称为“ StandOut”,可以从GitHub下载。 https://github.com/pingpongboss/StandOut
Answers:
无法将Android库导出为jar文件。但是,可以将其导出为aar
文件。Aar
文件是Android库的新二进制格式。在Google I / O(新构建系统视频)中有关于它们的信息。
首先,在Android Studio中构建库,或者通过gradle build
从库根目录发出的命令行来构建库。
这将导致<yourlibroot>/libs/build/yourlib.aar
文件。
此aar文件是您的库的二进制表示形式,可以将其添加到您的项目中,而不是作为依赖项项目添加到库中。
要将aar文件添加为依赖项,您必须将其发布到maven中心或本地maven存储库中,然后在项目文件中引用aargradle.build
文件。
但是,此步骤有些复杂。我在这里找到了一个很好的解释:
http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds
我可以.jar
使用以下解决方案中的方法将库源代码构建为编译文件:https :
//stackoverflow.com/a/19037807/1002054
这是我所做的细目:
可能是排球图书馆
我使用的是Android Studio 0.3.7。在此步骤中,我遇到了一些问题,即我必须gradle
先从新的android项目中复制文件夹,然后才能导入Volley库源代码,具体取决于您使用的源代码。
build.gradle
文件// If your module is a library project, this is needed
//to properly recognize 'android-library' plugin
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.3'
}
}
apply plugin: 'android-library'
android {
compileSdkVersion 17
buildToolsVersion = 17
sourceSets {
main {
// Here is the path to your source code
java {
srcDir 'src'
}
}
}
}
// This is the actual solution, as in https://stackoverflow.com/a/19037807/1002054
task clearJar(type: Delete) {
delete 'build/libs/myCompiledLibrary.jar'
}
task makeJar(type: Copy) {
from('build/bundles/release/')
into('build/libs/')
include('classes.jar')
rename ('classes.jar', 'myCompiledLibrary.jar')
}
makeJar.dependsOn(clearJar, build)
gradlew makeJar
从项目根目录运行命令。我的情况下,我必须将新的android项目中的文件gradlew.bat
和gradle
文件复制到我的库项目根目录中。您应该myCompiledLibrary.jar
在build\libs
目录中找到已编译的库文件。
我希望有人觉得这有用。
编辑:
尽管此方法有效,但是在编译具有多个模块的项目时会遇到重复的库异常,其中多个模块(包括应用程序模块)依赖于同一jar
文件(例如,模块具有自己的库目录,该目录在build.gradle
给定模块中引用) 。
如果您需要在一个以上的模块中使用单个库,我建议您使用以下方法: Android gradle构建和支持库
res
文件夹,则AAR文件正好是-具有文件res
夹支持的JAR文件。
从Android Studio V1.0开始,jar文件可在以下项目链接中找到:
调试版本:“ your_app” \ build \ intermediates \ bundles \ debug \ classes.jar
发布版本:“您的应用” \ build \ intermediates \ bundles \ release \ classes.jar
该JAR文件是在构建过程中创建的。在Android Studio GUI中,它是从Build-> Make Project,在CMD行中是“ gradlew build”。
在build.gradle中包括以下内容:
android.libraryVariants.all { variant ->
task("generate${variant.name}Javadoc", type: Javadoc) {
description "Generates Javadoc for $variant.name."
source = variant.javaCompile.source
ext.androidJar = "${android.plugin.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar)
}
task("javadoc${variant.name}", type: Jar) {
classifier = "javadoc"
description "Bundles Javadoc into a JAR file for $variant.name."
from tasks["generate${variant.name}Javadoc"]
}
task("jar${variant.name}", type: Jar) {
description "Bundles compiled .class files into a JAR file for $variant.name."
dependsOn variant.javaCompile
from variant.javaCompile.destinationDir
exclude '**/R.class', '**/R$*.class', '**/R.html', '**/R.*.html'
}
}
然后,您可以使用以下命令执行gradle:./gradlew clean javadocRelease jarRelease
这将把您的Jar和一个Javadoc jar生成到该build/libs/
文件夹中。
编辑:使用android gradle工具1.10。+获得android SDK目录不同于以前。您必须更改以下内容(感谢Vishal!):
android.sdkDirectory
代替
android.plugin.sdkDirectory
我可以使用此教程在Android Studio中导出jar文件:https : //www.youtube.com/watch?v= 1i4I-Nph-Cw“如何从Android Studio导出Jar”
我更新了答案,以包括在Android Studio中导出JAR的所有步骤:
1)创建Android应用程序项目,转到app-> build.gradle
2)更改此文件中的以下内容:
修改应用插件:“ com.android.application”以应用插件:“ com.android.library”
删除以下内容:applicationId,versionCode和versionName
添加以下代码:
// Task to delete old jar
task deleteOldJar(type: Delete){
delete 'release/AndroidPlugin2.jar'
}
// task to export contents as jar
task exportJar(type: Copy) {
from ('build/intermediates/bundles/release/')
into ('release/')
include ('classes.jar')
rename('classes.jar', 'AndroidPlugin2.jar')
}
exportJar.dependsOn(deleteOldJar, build)
3)不要忘记单击此文件中的立即同步(右上角或使用同步按钮)。
4)单击“ Gradle”选项卡(通常在右中),然后向下滚动到exportjar
5)一旦在运行窗口中看到生成成功的消息,使用普通文件浏览器使用以下路径转到导出的jar:C:\ Users \ name \ AndroidStudioProjects \ ProjectName \ app \ release, 您应该在此目录中看到jar文件。
祝好运 :)
这是另一个略有不同的答案,但有一些增强功能。
此代码从.aar中直接删除.jar。就个人而言,这使我更有信心,通过.jar运送的钻头与通过.aar运送的钻头相同。这也意味着,如果您使用的是ProGuard,则会根据需要对输出jar进行混淆。
我还添加了一个超级“ makeJar”任务,该任务为所有构建变体制作jar。
task(makeJar) << {
// Empty. We'll add dependencies for this task below
}
// Generate jar creation tasks for all build variants
android.libraryVariants.all { variant ->
String taskName = "makeJar${variant.name.capitalize()}"
// Create a jar by extracting it from the assembled .aar
// This ensures that products distributed via .aar and .jar exactly the same bits
task (taskName, type: Copy) {
String archiveName = "${project.name}-${variant.name}"
String outputDir = "${buildDir.getPath()}/outputs"
dependsOn "assemble${variant.name.capitalize()}"
from(zipTree("${outputDir}/aar/${archiveName}.aar"))
into("${outputDir}/jar/")
include('classes.jar')
rename ('classes.jar', "${archiveName}-${variant.mergedFlavor.versionName}.jar")
}
makeJar.dependsOn tasks[taskName]
}
对于好奇的读者,我努力确定com.android.library插件用来命名.aar文件的正确变量和参数。我终于在这里的Android Open Source Project中找到了它们。
我们可以导出Android库项目的jar文件,而无需Android Studio的资源文件。这也是我最近遇到的要求。
1.配置您的build.gradle文件
// Task to delete old jar
task clearJar(type: Delete){
delete 'release/lunademo.jar'
}
// task to export contents as jar
task makeJar(type: Copy) {
from ('build/intermediates/bundles/release/')
into ('build/libs/')
include ('classes.jar')
rename('classes.jar', 'lunademo.jar')
}
makeJar.dependsOn(clearJar, build)
2.在项目根目录下运行gradlew makeJar
如果幸运的话,您会在dir下看到libs为build / libs /。
=================================================== ==========
如果您在以下命令行中遇到“套接字超时异常”的问题,
您可以按照以下步骤打开右侧的Gradle窗口,然后在Android Studio上单击“ makeJar”,如下所示:
然后转到build / libs目录,您将看到您的jar文件。
希望对您有帮助。
祝好运 @。@
露娜