[转]AndroidStudio导出jar包
原文链接: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文件如下:
- buildscript {
- repositories {
- mavenCentral()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:0.12.+'
- }
- }
- apply plugin: 'com.andriod.library'
- android {
- compileSdkVersion 19
- buildToolsVersion = "20"
- sourceSets {
- defaultConfig {
- testPackageName 'com.android.volley.tests'
- }
- main {
- assets.srcDirs = ['assets']
- res.srcDirs = ['res']
- aidl.srcDirs = ['src']
- resources.srcDirs = ['src']
- renderscript.srcDirs = ['src']
- java.srcDirs = ['src']
- manifest.srcFile 'AndroidManifest.xml'
- }
- instrumentTest.setRoot('tests')
- instrumentTest.java.srcDirs = ['tests/src']
- }
- }
因为再导入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包,结果成功了,如下:
- buildscript {
- repositories {
- mavenCentral()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:0.12.+'
- }
- }
- //定义一个函数,target是生成jar包的文件名,classDir是class文件所在的文件夹
- def makeJar(String target,String classDir){
- exec{
- executable "jar" //调用jar
- args "cvf",target
- args "-C", classDir
- args "","."
- }
- }
- //新建一个task,名为buildLib,依赖build(build是一个自带的task)
- task buildLib(dependsOn:['build'])<< {
- makeJar("volley.jar","build/intermediates/classes/release")
- }
- apply plugin: 'android-library'
- android {
- compileSdkVersion 19
- buildToolsVersion = "20"
- sourceSets {
- defaultConfig {
- testPackageName 'com.android.volley.tests'
- }
- main {
- assets.srcDirs = ['assets']
- res.srcDirs = ['res']
- aidl.srcDirs = ['src']
- resources.srcDirs = ['src']
- renderscript.srcDirs = ['src']
- java.srcDirs = ['src']
- manifest.srcFile 'AndroidManifest.xml'
- }
- instrumentTest.setRoot('tests')
- instrumentTest.java.srcDirs = ['tests/src']
- }
- }
现在我们在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包的更多相关文章
- [Android Pro] AndroidStudio导出jar包
reference : http://blog.csdn.net/beijingshi1/article/details/38681281 不像在Eclipse,可以直接导出jar包.Android ...
- Android Studio 导出jar包
不像在Eclipse,可以直接导出jar包.AndroidStudio只可以生成aar包. 在网上看到许多朋友问怎么可以像Eclipse一样导出jar包,其实我们只要知道它的原理就可以了. 用jar命 ...
- Eclipse导出jar包Unity打包错误
前几天接SDK使用的是Android Studio昨天打开AndroidStudio后自动更新了gradler然后失败了然后AndroidStudio就挂了.就是用之前的方法Eclipse到处jar包 ...
- android studio 使用gradle 导出jar包,并打包assets目录
警告:本文年久失修. 随着android studio的升级 ,gradle的升级,严格按照本文的代码去做可能不会成功,希望依然可以作为解决问题的思路. 最近项目在做一个sdk,供别的开发者使用,所以 ...
- [转]--android studio 使用gradle 导出jar包,并打包assets目录
转自: http://www.cnblogs.com/wuya/p/android-studio-gradle-export-jar-assets.html 最近项目在做一个sdk,供别的开发者使 ...
- eclipse导出jar包
第一种:普通类导出jar包,我说的普通类就是指此类包含main方法,并且没有用到别的jar包. 1.在eclipse中选择你要导出的类或者package,右击,选择Export子选项: 2.在弹出的对 ...
- Spring Boot导出jar包发布
一:事由 现在的项目组开发项目使用的是Spring Boot的技术,开发的时候是直接通过一个入口主函数来启动项目的.如果将项目交给客户,怎样才能正确的发布运行呢?百度了一下有关的知识,大概了解到是通过 ...
- 【Java】Eclipse导出jar包与javadoc
1.导出jar包 2.导出javadoc 3.jar包添加javadoc 4.出错解决 参考资料: http://www.cnblogs.com/cyh123/p/3345889.html http: ...
- Eclipse中将项目导出jar包,以及转化成exe的方法
Eclipse中将项目导出jar包,以及转化成exe的方法 http://wenku.baidu.com/view/385597f07c1cfad6195fa7c6.html
随机推荐
- 关于精简安装office2010的步骤
首先我们安装系统都会安装一个办公套件:office当然你也可以选择使用wps但我个人比较讨厌wps的广告 然而使用office完整安装不仅消耗资源大启动速度慢,而且一些功能我都用不到,所以我这几来一个 ...
- webapp中fixed问题解决方案
主要问题: 1,头部输入框固定后,只要再滑动内容的话,输入框会随着滑动内容而滑动. 2,在低端机:2.3以下的安卓机,你会发现怎么解决都不行的,系统浏览器是不会支持的,头部底部固定的话会滑动内容而滑动 ...
- 2015年11月26日 Java基础系列(五)异常Exception
序,异常都是标准类Throwable的一些子类的对象. Throwable类的几个方法 1 getMessage() 返回描述该异常的信息 2 printStackTrace() 把消息和栈的跟踪记录 ...
- Ubuntu10.04下安装Ns2的一系列错误及解决方案
安装之前改一下nam1.11下的agent.h文件73行 Null改为0 第一个错误: xxx configuration: Syntax error: Unterminated quoted str ...
- Python 集合set添加删除、交集、并集、集合操作符号
在Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 1. ...
- Mac Pro 入门、遇到的问题、个性化设置 汇总
入门资料 入门一:Mac 基本用法 入门二:Mac 使用VMware Fusion虚拟机 入门三:Mac 使用brew安装软件 问题汇总 [问题1]如何复制文本? 一只手指头按下,另外一只手指头滑动选 ...
- Go - template 常用方法详解 及 注意事项
Go template包下面有两个函数可以创建模板实例 func New(name string) *Template func ParseFiles(filenames ...string) (*T ...
- Redis学习笔记十:独立功能之监视器
通过执行 monitor 命令可以让客户端自己变成一个监视器,实时接收并打印当前处理的命令请求的相关信息. 127.0.0.1:6379> monitor OK 1451752646.83727 ...
- 【转】php 下载保存文件保存到本地的两种实现方法
来源:http://www.jb51.net/article/40485.htm 第一种: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?php function d ...
- PHPCMS几个有用的全局函数
1.$site_setting = get_site_setting($siteid); 这个get_site_setting()函数读取的是多站点中$siteid站点的相关配置,具体位置在网站根 ...