标签:
AndroidStudio导出jar包 - Android - 次元立方网 - 电脑知识与技术互动交流平台
不像在Eclipse,可以直接导出jar包。AndroidStudio只可以生成aar包。
在网上看到许多朋友问怎么可以像Eclipse一样导出jar包,其实我们只要知道它的原理就可以了。
用jar命令就可以打包你所需要的资源,并指定jar包名。
在网上下载Volley源代码,导出jar包为例子。
在一个Android-Library项目工程中,我修改了下他的gradle版本,改为0.12+,
因为我是最新的gradle2.0。现在它的build.gradle文件如下:
01.
buildscript {
02.
????
repositories {
03.
????????
mavenCentral()
04.
????
}
05.
????
dependencies {
06.
????????
classpath
‘com.android.tools.build:gradle:0.12.+‘
07.
????
}
08.
}
09.
apply plugin:
‘com.andriod.library‘
10.
?11.
android {
12.
????
compileSdkVersion
19
13.
????
buildToolsVersion =
"20"
14.
?15.
????
sourceSets {
16.
????????
defaultConfig {
17.
????????????
testPackageName
‘com.android.volley.tests‘
18.
????????
}
19.
?20.
????????
main {
21.
????????????
assets.srcDirs?????? = [
‘assets‘
]
22.
????????????
res.srcDirs????????? = [
‘res‘
]
23.
????????????
aidl.srcDirs???????? = [
‘src‘
]
24.
????????????
resources.srcDirs??? = [
‘src‘
]
25.
????????????
renderscript.srcDirs = [
‘src‘
]
26.
????????????
java.srcDirs???????? = [
‘src‘
]
27.
????????????
manifest.srcFile
‘AndroidManifest.xml‘
28.
?29.
????????
}
30.
?31.
????????
instrumentTest.setRoot(
‘tests‘
)
32.
????????
instrumentTest.java.srcDirs = [
‘tests/src‘
]
33.
????
}
34.
}
因为再导入Volley工程的时候,我选择的是推荐的Gradle Wrapper,它的作用是使我们在Unix,windows平台
下实现兼容。我用的是windows,所以先到达Volley的根目录,Volley我下载到E:\下
cd e:\Volley
接着输入命令:gradlew clean build
就会看到Volley目录下有一个build文件夹,在 build/intermediates/classes/release下,我们可以看到Java文件生成的class文件,我们只要用jar打包这个文件夹就可以了
输入下面的命令,记得最后一个是‘.‘,前面有空格。
jar cvf volley.jar -C build/intermediates/classes/release .
不懂什么意思的话,去
http://blog.sina.com.cn/s/blog_93d133c601013hdm.html看下。
如无意外的话你会在Volley文件夹下看到volley.jar。
但是这并不是我们想要的啊,我想AndroidStudio自动的帮我搞好,生成jar包.
这就需要我们在build.gradle中设置了
由gradle官网可以知道,task和project是gradle最主要的东西,我当初的想法就是,
建立一个task,调用jar命令帮我生成jar包,结果成功了,如下:1.
?01.
buildscript {
02.
????
repositories {
03.
????????
mavenCentral()
04.
????
}
05.
????
dependencies {
06.
????????
classpath
‘com.android.tools.build:gradle:0.12.+‘
07.
????
}
08.
}
09.
?10.
//定义一个函数,target是生成jar包的文件名,classDir是class文件所在的文件夹
11.
def makeJar(String target,String classDir){
12.
????
exec{
13.
????????
executable
"jar"
??//调用jar
14.
????????
args
"cvf"
,target
15.
????????
args
"-C"
, classDir
16.
????????
args
""
,
"."
17.
?18.
?19.
????
}
20.
}
21.
?22.
//新建一个task,名为buildLib,依赖build(build是一个自带的task)
23.
task buildLib(dependsOn:[
‘build‘
])<< {
24.
????
makeJar(
"volley.jar"
,
"build/intermediates/classes/release"
)
25.
?26.
?27.
}
28.
?29.
?30.
apply plugin:
‘android-library‘
31.
?32.
?33.
android {
34.
????
compileSdkVersion
19
35.
????
buildToolsVersion =
"20"
36.
?37.
?38.
????
sourceSets {
39.
????????
defaultConfig {
40.
????????????
testPackageName
‘com.android.volley.tests‘
41.
????????
}
42.
?43.
?44.
????????
main {
45.
????????????
assets.srcDirs ? ? ? = [
‘assets‘
]
46.
????????????
res.srcDirs ? ? ? ? ?= [
‘res‘
]
47.
????????????
aidl.srcDirs ? ? ? ? = [
‘src‘
]
48.
????????????
resources.srcDirs ? ?= [
‘src‘
]
49.
????????????
renderscript.srcDirs = [
‘src‘
]
50.
????????????
java.srcDirs ? ? ? ? = [
‘src‘
]
51.
????????????
manifest.srcFile
‘AndroidManifest.xml‘
52.
?53.
?54.
????????
}
55.
?56.
?57.
????????
instrumentTest.setRoot(
‘tests‘
)
58.
????????
instrumentTest.java.srcDirs = [
‘tests/src‘
]
59.
????
}
60.
}
现在我们在Volley文件夹下运行buildLib这个task就行了
gradlew buildLib
*_*成功了吧..具体更多的细节的话,你们可以去官网找下答案,或者留言问我也可以。。
标签:
原文地址:http://www.cnblogs.com/seven1979/p/4250264.html