Windows下编译最新volley jar包

本文介绍如何使用ant和gradle两种方式从源码编译Volley库,并提供详细的步骤指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

蛋疼想自己编译个最新的volley jar用用,
随便搜了下方法,如这个 http://blog.youkuaiyun.com/wangjia55/article/details/41744181 ,
试着编译了下,结果各种报错,
最后强迫症发作,捣鼓出来了,
编译方式分两种,antgradle

使用ant编译

因为最新代码已经不在用ant改用gradle来构建工程,但是依然保留ant编译脚本,这里还是介绍一下,尽管比较麻烦

下载volley

git clone https://android.googlesource.com/platform/frameworks/volley

修改项目结构

  1. 进入<volley>/src/main/目录,将java文件夹重命名为src
  2. <volley>/src/main/文件夹里面的所有内容剪切<volley>文件夹中;
  3. 进入<volley>/src/目录,删除多余的maintest文件夹;

下载配置ant

下载 http://ant.apache.org/bindownload.cgi

ant环境变量配置

setx PATH "%PATH%;%%ANT_HOME%%/bin;%%ANT_HOME%%/lib" -m setx ANT_HOME "E:/DevTools/Others/apache-ant-1.9.4" -m

P.S. setx是Windows Vista之后有的设置环境变量的工具,命令中的文件路径请按实际情况进行修改

配置Android SDK环境变量

setx PATH "%PATH%;%%ANDROID_HOME%%/tools;%%ANDROID_HOME%%/platform-tools" -m setx ANDROID_HOME "E:/DevTools/AndroidStudio/sdk" -m

更新anroid工程

相关命令的使用说明可以用android -h来查看

首先cmd切换到<volley>/目录,运行android list target命令,查看已经安装的api的target id,这是待会编译用的api版本,选择适合的,记下id号(这个id号码跟api版本关系,完全是根据你安装了多少个api而定的),
如我要用最新的api 22来编译,这里就是8
Windows下编译最新volley为jar包

然后运行>android - update lib-project -p . -t 8(-t 后面的是刚才记下的target id号,自己按实际情况修改)更新工程。
Windows下编译最新volley为jar包

之后会生成一些文件,打开其中的project.properties文件,
在文件的最后面加一句renderscript.opt.level=O0,保存。

不加那句的话,等下用ant jar命令导出jar包会出错,参考Stack Overflow

最后运行ant jar命令即可,就可以在bin目录找到jar包了。
Windows下编译最新volley为jar包

使用gradle编译

最新代码本身就是用gradle来构建的,所以简单很多

下载和配置gradle

下载 http://gradle.org/
正式版的Android Studio包含gradle,
<android-studio/>gradle/gradle-2.2.1,自行选择用现成的还是重新下载

配置环境变量

setx PATH "%PATH%;%%GRADLE_HOME%%/bin" -m setx GRADLE_HOME "E:/DevTools/Others/gradle-2.3" -m setx GRADLE_USER_HOME "E:/DevWorks/.gradle" -m

P.S. 其中前两项是配置可执行文件的PATH,第三项是更改依赖仓库的位置,
默认情况下,依赖仓库在C:/Users/<username>/.gradle文件夹中,
我认为放在C盘不是个好的选择,因为这文件夹随着开发使用依赖库,而变得越来越大,
如果重装系统忘记备份,就悲剧了,得重新下载

编译

重新用git克隆一份volley源码,
git clone https://android.googlesource.com/platform/frameworks/volley
进入到<volley>/目录,打开build.gradle文件,找到

buildscript {     repositories {         mavenCentral()     }     dependencies {         classpath 'com.android.tools.build:gradle:0.14.+'         // 当然,版本号可能跟我现在这个的不一样,     } }

将其中的'com.android.tools.build:gradle:0.14.+'
改成'com.android.tools.build:gradle:1.1.0'

这里的版本号到底怎么改,可以用Android Studio随便建一个工程,打开主module的build.gradle对照着改

改完之后打开cmd,切换到<volley>/目录,
运行gradle bundleRelease,等待编译,
成功后可以找到<volley>/build/intermediates/bundles/release/classes.jar,即为编译后的jar包,重命名为volley.jar即可。

总结

上面说了这么多,其实只是强迫症犯了,想撇开IDE,用命令编译出个jar包来玩玩。
如果只需要使用volley的话,根本不用执着导出jar,有其他更方便的方法。
比如改了项目结构后,用Eclipse导入就可以用,Androd Studio更屌,改都不用改,直接导入为module就行。
不过有一颗折腾的心总是好的,反正也学到了新东西。

Volley是一个优秀的安卓开源网络访问工具,这里含了volley jar和源码,版本是2015.07.28的1.0.18版本。更多资料可以参见volley的github地址: https://github.com/mcxiaoke/android-volley 1.0.18 2015.07.28 merge upstream, process response bodies only when present tweak getCacheKey(), using method and original url, fix #67 #78 add RedirectError, wrong exception for http 301 and 302, fix #51 make NetworkResponse Serializable, fix #53 create NetworkError using IOException, not using null response 1.0.17 2015.07.13 merge upstream, stop logging slow requests outside of debug logs merge pr #64, fix leaking the last request object 1.0.16 2015.05.18 fix duplicate retry, change DEFAULT_MAX_RETRIES to 0 merge pr, fix NegativeArraySizeException merge upstream, Use a BufferedOutputStream to read and write cache 1.0.15 2015.03.18 add two missing constructors for JsonArrayRequest and JsonObjectRequest add unique identifier for Request 1.0.14 2015.03.17 add more constructors for JsonArrayRequest and JsonObjectRequest update and fix gradle build, using new build.gradle 1.0.13 2015.03.16 merge pr, added constructor to JSONArrayRequest 1.0.12 2015.03.12 merge upstream, fix ImageLoader.getCacheKey() merge upstream, Fix broken DiskBasedCache merge upstream, Modify header parser to handle must-revalidate. 1.0.11 2015.03.03 merge upstream, Add a RequestFinishedListener to RequestQueue. merge upstream, Change the default character encoding for JSON responses to UTF-8 1.0.10 2014.12.30 merge upstream, Use the view size and scale type to restrict NIV requests. merge pr, Add a getImageURL method to NetworkImageView merge pr, Add the options of setting DiskBasedCache sizes in Volley.java 1.0.9 2014.11.26 merge upstream, Fix deprecation warnings (now errors in 0.14.4) w/ gradle. 1.0.8 2014.11.07 merge upstream, Metric for network time and getBackoffMultiplier() 1.0.7 2014.10.13 merge upstream, Add locale to HttpHeaderParserTest.rfc1123Date(long millis) merge upstream, Copy cache header for 304 response 1.0.6 2014.09.10 merge pr, fixed bug where Disk cache misses for redirects merge upstream, Fix crash/OOM in DiskBasedCache merge upstream, allow use of custom ImageRequests in ImageLoader 1.0.5 2014.06.18 merge upstream, Fixes bug in PATCH method. Sets the method before setting the body. update gradle and build tools version, fix build 1.0.4 2014.05.04 merge upstream, Guard against NullPointerException currently occurring in Volley when a Request is given a url whose host is null. 1.0.3 2014.04.01 merge upstream, ImageLoader: setError after null check 1.0.2 2014.02.28 merge upstream, Use the view size to restrict NIV requests. merge upstream, Fix generic type parameter for RequestQueue.add(Request) merge pr, added support for handling 301 and 302 http redirects using standalone deploy gradle build file and script 1.0.1 2014.02.13 add gradle build support, add readme, release using gradle 1.0.0 2014.01.03 create volley mirror at github, release first version
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值