不像在Eclipse,可以直接导出jar包。AndroidStudio只可以生成aar包。

在网上看到许多朋友问怎么可以像Eclipse一样导出jar包,其实我们只要知道它的原理就可以了。

用jar命令就可以打包你所需要的资源,并指定jar包名。

在网上下载Volley源代码,导出jar包为例子。

在Volley项目工程中,我修改了下他的gradle版本,改为0.12+,

因为我是最新的gradle2.0。现在它的build.gradle文件如下:

  1. buildscript {
  2. repositories {
  3. mavenCentral()
  4. }
  5. dependencies {
  6. classpath 'com.android.tools.build:gradle:0.12.+'
  7. }
  8. }
  9. apply plugin: 'com.andriod.library'
  10. android {
  11. compileSdkVersion 19
  12. buildToolsVersion = "20"
  13. sourceSets {
  14. defaultConfig {
  15. testPackageName 'com.android.volley.tests'
  16. }
  17. main {
  18. assets.srcDirs       = ['assets']
  19. res.srcDirs          = ['res']
  20. aidl.srcDirs         = ['src']
  21. resources.srcDirs    = ['src']
  22. renderscript.srcDirs = ['src']
  23. java.srcDirs         = ['src']
  24. manifest.srcFile 'AndroidManifest.xml'
  25. }
  26. instrumentTest.setRoot('tests')
  27. instrumentTest.java.srcDirs = ['tests/src']
  28. }
  29. }

因为再导入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. buildscript {
  2. repositories {
  3. mavenCentral()
  4. }
  5. dependencies {
  6. classpath 'com.android.tools.build:gradle:0.12.+'
  7. }
  8. }
  9. //定义一个函数,target是生成jar包的文件名,classDir是class文件所在的文件夹
  10. def makeJar(String target,String classDir){
  11. exec{
  12. executable "jar"   //调用jar
  13. args "cvf",target
  14. args "-C", classDir
  15. args "","."
  16. }
  17. }
  18. //新建一个task,名为buildLib,依赖build(build是一个自带的task)
  19. task buildLib(dependsOn:['build'])<< {
  20. makeJar("volley.jar","build/intermediates/classes/release")
  21. }
  22. apply plugin: 'android-library'
  23. android {
  24. compileSdkVersion 19
  25. buildToolsVersion = "20"
  26. sourceSets {
  27. defaultConfig {
  28. testPackageName 'com.android.volley.tests'
  29. }
  30. main {
  31. assets.srcDirs       = ['assets']
  32. res.srcDirs          = ['res']
  33. aidl.srcDirs         = ['src']
  34. resources.srcDirs    = ['src']
  35. renderscript.srcDirs = ['src']
  36. java.srcDirs         = ['src']
  37. manifest.srcFile 'AndroidManifest.xml'
  38. }
  39. instrumentTest.setRoot('tests')
  40. instrumentTest.java.srcDirs = ['tests/src']
  41. }
  42. }

现在我们在Volley文件夹下运行buildLib这个task就行了
gradlew buildLib
*_*成功了吧..具体更多的细节的话,你们可以去官网找下答案,或者留言问我也可以。。

Android Studio 导出jar包的更多相关文章

  1. Android Studio导出Jar包

    这篇博客将介绍一下如何用Android Studio导出jar包,希望能给大家带来帮助. 首先需要修改build.gradle文件,在Android Studio中会显示多个build.gradle文 ...

  2. Android Studio导出Jar包并混淆

    在Android Studio中,自带反编译查看class文件,如果没有混淆的话,class文件跟java文件基本没有区别了,为了保护,还是混淆的好. 网上看了不少资料,都是直接下载proguard额 ...

  3. Android实战技巧之十九:android studio导出jar包(Module)并获得手机信息

    AS中并没有独立的Module 工程,可是能够在普通的Project中增加Module.所谓的Module就是我们通常所指的模块化的一个单元.并经常以jar包的形式存在.以下以一个获取手机信息的样例演 ...

  4. Android studio导出AAR包问题整理。

    最近因为项目需求开始整理一个SDK 以AAR的方式提供出去.在整理的过程中遇到了很多坑. 以下是一些总结希望能帮助遇到同样问题的人. 1.怎么导出AAR,这种文章太多了,我贴一个大家可以做参考. ht ...

  5. 用Android Studio导出jar给Unity3D用

    1.新建一个Android Studio工程,选择空Activity 2.创建一个Module 3.将Unity的依赖jar包拷贝到工程的libs下 4.增加Java代码 内容修改如下 package ...

  6. android studio 使用jar包,arr包和怎么使用githup开源项目中的aar包或module

    我这里的android studio的版本是2.2.3版本 一.现在大家都用android studio了,就有人问怎么使用jar包 其实使用jar包比较简单 直接吧jar放入工程的app目录下的li ...

  7. android studio导jar包找不到类的解决方法

    今天更新了universal-image-loader-1.9.5.jar文件,studio死活找不到其中相关的类,上网百度试了很多办法,总算解决了,具体方法跟一篇老外的帖子的差不多,这里分享下. 解 ...

  8. Android Studio导入jar包

    使用开源框架是,可以直接复制源代码到自己的项目(本人在Android Studio中操作报R程序包不存在),也可以使用jar包,下面记录一下今天使用SmartImageView.jar的过程,不记录S ...

  9. Android Studio 生成Jar包时遇到的gradlew下载问题

    网上介绍说使用gradlew打包jar,可是输入gradlew makeJar后就开始download  XXX.zip,但是等了很久都没有完成.解决办法如下: 原文:http://blog.csdn ...

随机推荐

  1. bash/shell编程学习(3)

    接上节继续, 1. 从键盘读取输入内容 #!/bin/bash read -p 'please input something:' input echo 'your input:' $input 运行 ...

  2. JS组件系列——Bootstrap组件福利篇:几款好用的组件推荐(二)

    前言:上篇 JS组件系列——Bootstrap组件福利篇:几款好用的组件推荐 分享了几个项目中比较常用的组件,引起了许多园友的关注.这篇还是继续,因为博主觉得还有几个非常简单.实用的组件,实在不愿自己 ...

  3. HTTPf服务器(3)

    功能完整的HTTP服务器 导语 这个一个功能完备的HTTP服务器.它可以提供一个完整的文档输,包括图像,applet,HTML文件,文本文件.它与SingleFileHttpServer非常相似,只不 ...

  4. TCP的状态 (SYN, FIN, ACK, PSH, RST, URG)

    状态说明 SYN表示建立连接, FIN表示关闭连接, ACK表示响应, PSH表示有 DATA数据传输, RST表示连接重置. 其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同 ...

  5. java为什么非静态内部类中不能有static修饰的属性,但却可以有常量?

    如:public class InnerClassDemo{int x;class A{static int a = 0;//这样写是不合法的.static final int b=0;//这样写是合 ...

  6. word中公式居中标号没有右对齐

    打开视图-标尺,调整右侧标尺就行了.

  7. Python json.dumps 特殊数据类型的自定义序列化操作

    场景描述: Python标准库中的json模块,集成了将数据序列化处理的功能:在使用json.dumps()方法序列化数据时候,如果目标数据中存在datetime数据类型,执行操作时, 会抛出异常:T ...

  8. python爬乌云dorps文章

    有时候翻看drops 无赖drops没有一个全部文章列表,所以就有了这个想法把所有文件标题链接都爬出来这样又直观又好找感兴趣的文章 #coding=utf-8 import re import url ...

  9. JS中class和id的区别

    class和id的区别 class用于css的,id用于js的. 1)class页面上可以重复.id页面上唯一,不能重复. 2)一个标签可以有多个class,用空格隔开.但是id只能有id.

  10. checkbox全选与非全选之间的切换

    <div id="congras_area"> <input type="checkbox" name="" id=&qu ...