原文链接:http://blog.csdn.net/hjq842382134/article/details/38538097#

1. 不像在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
接着输入命令:

gradle clean build

就会看到Volley目录下有一个build文件夹,在 build/intermediates/classes/release下,我们可以看到Java文件生成的class文件,我们只要用jar打包这个文件夹就可以了
输入下面的命令,记得最后一个是'.',前面有空格。
jar cvf volley.jar -C  build/intermediates/classes/release .

------------------------------------------------------------------------------

如果遇到报错:'jar' 不是内部或外部命令,也不是可运行的程序

1)首先检查 jdk版本的bin里面是否有javac.exe  和jar.exe

2)若有,则检查环境变量是否配置正确

JAVA_HOME:     D:\jdk\JDK1.6
PATH        :      %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

------------------------------------------------------------------------------
不懂什么意思的话,去
http://blog.sina.com.cn/s/blog_93d133c601013hdm.html看下。
如无意外的话你会在Volley文件夹下看到volley.jar。

2. 但是这并不是我们想要的啊,我想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就行了
gradle buildLib
*_*成功了吧..具体更多的细节的话,你们可以去官网找下答案.

如果遇到错误:

* What went wrong:
Execution failed for task ':transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/NOTICE
File1: E:\demos\autobahn-android\Autobahn\libs\jackson-mapper-asl-1.9.7.jar
File2: E:\demos\autobahn-android\Autobahn\libs\jackson-core-asl-1.9.7.jar

则添加

    android{
    packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/LICENSE'
exclude 'META-INF/license.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/notice.txt'
exclude 'META-INF/ASL2.0'
}
}

[转]AndroidStudio导出jar包的更多相关文章

  1. [Android Pro] AndroidStudio导出jar包

    reference :  http://blog.csdn.net/beijingshi1/article/details/38681281 不像在Eclipse,可以直接导出jar包.Android ...

  2. Android Studio 导出jar包

    不像在Eclipse,可以直接导出jar包.AndroidStudio只可以生成aar包. 在网上看到许多朋友问怎么可以像Eclipse一样导出jar包,其实我们只要知道它的原理就可以了. 用jar命 ...

  3. Eclipse导出jar包Unity打包错误

    前几天接SDK使用的是Android Studio昨天打开AndroidStudio后自动更新了gradler然后失败了然后AndroidStudio就挂了.就是用之前的方法Eclipse到处jar包 ...

  4. android studio 使用gradle 导出jar包,并打包assets目录

    警告:本文年久失修. 随着android studio的升级 ,gradle的升级,严格按照本文的代码去做可能不会成功,希望依然可以作为解决问题的思路. 最近项目在做一个sdk,供别的开发者使用,所以 ...

  5. [转]--android studio 使用gradle 导出jar包,并打包assets目录

    转自: http://www.cnblogs.com/wuya/p/android-studio-gradle-export-jar-assets.html   最近项目在做一个sdk,供别的开发者使 ...

  6. eclipse导出jar包

    第一种:普通类导出jar包,我说的普通类就是指此类包含main方法,并且没有用到别的jar包. 1.在eclipse中选择你要导出的类或者package,右击,选择Export子选项: 2.在弹出的对 ...

  7. Spring Boot导出jar包发布

    一:事由 现在的项目组开发项目使用的是Spring Boot的技术,开发的时候是直接通过一个入口主函数来启动项目的.如果将项目交给客户,怎样才能正确的发布运行呢?百度了一下有关的知识,大概了解到是通过 ...

  8. 【Java】Eclipse导出jar包与javadoc

    1.导出jar包 2.导出javadoc 3.jar包添加javadoc 4.出错解决 参考资料: http://www.cnblogs.com/cyh123/p/3345889.html http: ...

  9. Eclipse中将项目导出jar包,以及转化成exe的方法

    Eclipse中将项目导出jar包,以及转化成exe的方法 http://wenku.baidu.com/view/385597f07c1cfad6195fa7c6.html

随机推荐

  1. Spotlight on oracle

    Spotlight on Oracle 能让你迅速发现任何性能瓶颈,无论是实时还是历史查询.Spotlight 能鉴别和诊断几千种性能问题,无论是特定用户问题.集中资源SQL事务. I/O瓶颈.锁定等 ...

  2. servlet和http请求

    1.servlet servlet是和平台无关的服务器组件,可以交互式的来浏览和修改数据,生成动态的web内容.它运行于 servlet容器中2.servlet容器 servlet容器负责servle ...

  3. 元素间距属性(scrollLeft,scrollWidth,clientWidth,offsetWidth,padding,margin)

    scrollHeight: 获取对象的滚动高度.scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端 ...

  4. 一次失败的动态转换bean的尝试与思考

    前因 公司规范确定不允许使用反射类的进行属性bean的拷贝了,只允许手动的get/set,可以猜到这样定义的原因是制定规范的同事认为反射性能低,虽然写get/set慢点好在性能高.平时开发的时候也是迫 ...

  5. MongoDB的学习和使用(查询find)

    语法 MongoDB 查询数据的语法格式如下: >db.COLLECTION_NAME.find() find() 方法以非结构化的方式来显示所有文档. 如果你需要以易读的方式来读取数据,可以使 ...

  6. Android开发学习笔记--给一个按钮定义事件

    学习Android的第一天,了解了各种布局,然后自己动手画出了一个按钮,然后给按钮定义了一个事件是弹出一条消息显示“我成功了!”字样,具体过程如下: 1.修改布局文件activity_main.xml ...

  7. PC-BSD 换名 TrueOS

    导读 PC-BSD 重大更新:面向私人电脑的PC-BSD操作系统开发者.Lumina桌面环境创造者Ken Moore今天宣布系统迎来重大改变. 首先,PC-BSD更名为TrueOS,用户依然能够在PC ...

  8. python 数据结构 初学时没太注意却发现很有用的点点滴滴

    1. list.extend(L) 将指定列表中的所有元素附加到另一个列表的末尾:相当于a[len(a):] = L. 2. list.pop([i]) 删除列表中指定位置的元素并返回它.如果未指定索 ...

  9. 从Objective-C转战C++ Android平台开发实践(C++/Java)

    是否使用虚拟方法 最好在不用“virtual”关键字的情况下声明所有cpp成员方法 但是在写CPP头文件时,请检查有没有父类的方法被当前的工作覆盖.如果有,请确保将这些方法改为虚拟方法. 如果从父类继 ...

  10. HDNOIP普及+提高整合

    好久没有更新博客了...这几天一直在切 HDNOIP... 正式时跪惨了...所以考完后回来奋力切出了所有题. [COJ3351]HDNOIP201601回文质数 试题描述 回文数是具有对称性的自然数 ...