Android Studio build dex jar
Gradle配置
Build配置文件gradle.build中添加如下task
task clearJar(type: Delete) {
delete 'build/outputs/mylib.jar'
}
task copyJar(type: Copy) {
from('build/intermediates/bundles/release/')
into('build/outputs/libs/')
include('classes.jar')
rename ('classes.jar', 'mylib.jar')
}
copyJar.dependsOn(clearJar, build)
此方法是直接从把gradle build生成的classes.jar拷贝到指定目录并且重命名,必须依赖build task。
修改dex jar的MANIFEST.MF文件
由于目前gradle的”com.android.application/library”不能和”java” plugin同时使用,所以我们可以使用其他方法来修改,本文中使用python的zipfile来处理。
自定义MANIFEST.MF文件
文件内容如下:
Manifest-Version: 1.0
Gradle-Version: 2.2.1
Created-By: 1.8.0_20-b26 (Oracle Corporation)
Date: 2015-4-15
Author: Leo.Kang
jar-version: 1.0.0
Python脚本
例如:新建一个python脚本,命名为updateJarManifest.py
#!/usr/bin/python import sys,zipfile,shutil,os def generate():
jar_file = "./mylib_temp.jar"
target_jar = os.path.dirname(jar_file)+"/mylib.jar"
shutil.copy(jar_file, target_jar)
zipped = zipfile.ZipFile(target_jar, 'a', zipfile.ZIP_DEFLATED)
content_file = "META-INF/MANIFEST.MF" mf_file = "./MANIFEST.MF"
zipped.write(mf_file, content_file)
zipped.close()
return target_jar generate()
执行python的shell脚本(mac/linux)/批处理文件(win)
win
新建一个文件命名updateJar.bat文件内容为python updateJarManifest.py
mac/linux
新建一个文件命名为:updateJar.sh,
文件内容为:
#!/bin/bash
#@author Leo.Kang
# 2015-4-15 20:47 python ./ updateJarManifest.py
更新build.gradle 配置
task clearJar(type: Delete) {
delete 'build/outputs/mylib.jar'
}
task copyJar(type: Copy) {
from('build/intermediates/bundles/release/')
into('build/outputs/libs/')
include('classes.jar')
rename ('classes.jar', 'mylib_temp.jar')
}
copyJar.dependsOn(clearJar, build)
releaseJar.dependsOn(clearJar, build)
task execPython(type:Exec) {
//workingDir file('./')
commandLine './updateJar.sh'
}
execPython.dependsOn(releaseJar)
Reference
http://gradle.org/docs/current/dsl/org.gradle.api.tasks.Exec.html
Android Studio build dex jar的更多相关文章
- Android studio 中引用jar的其实是Maven?(二)
上一篇:Android studio 中引用jar的其实是Maven?(一) 搭建maven仓库: 去了解一个新的事物的时候,最好的方式就是去使用它.例如去了解一座城市的时候,最好的方式就是乘坐公共交 ...
- Android studio 中引用jar的其实是Maven?(一)
由于Studio比eclipse多了一步对工程构建的步骤,即为build.gradle这个文件运行,因此其引入第三方开发jar包与lib工程对比Eclipse已完成不同,引入第三方jar与lib工程显 ...
- Android Studio 如何打JAR包
Android Studio 如何打JAR包 在eclipse中我们知道如何将一个项目导出为jar包,供其它项目使用. 在AS中可以通过修改gradle才处理. 我们新建一个项目MakeJar,在 ...
- Android Studio导入第三方jar包或依赖工程的方法
Android Studio导入第三方jar包或依赖工程的方法 一 导入jar包的方法 1.打开自己的工程,将需要导入的jar包copy到libs文件夹下 2.在导入的jar包处单击菜单 Add ...
- Android Studio 怎样打JAR包
Android Studio 怎样打JAR包 在eclipse中我们知道怎样将一个项目导出为jar包,供其他项目使用. 在AS中能够通过改动gradle才处理. 我们新建一个项目MakeJar,在项目 ...
- Android Studio 导入系统 jar包
1.当前需要导入系统jar包的module所对应build.gradle中添加如下依赖: provided files('libs/classes-full-debug.jar') 也可以图形化设置: ...
- (转载) android studio library生成jar包和aar的方法总结
android studio library生成jar包和aar的方法总结 标签: android学习文档jar和aar的使用与生成gradle 2016-11-25 10:39 1782人阅读 评论 ...
- Android Studio下导出jar包和aar包
Android Studio下导出jar包和aar包 jar包和aar包的区别 步骤 1. 创建Android工程 创建工程比较简单,不错复述 2. 创建一个Library(Module) 创建了一个 ...
- 安装Android studio出现'tools.jar' seems to be not in Android Studio classpath......的解决方法
安装Android studio出现'tools.jar' seems to be not in Android Studio classpath......的解决方法 原创 2015年07月31日 ...
随机推荐
- Thinking in Java——笔记(6)
Access Control A piece of work isn't good until it's been rewritten, often many times. Thus a primar ...
- Stream Processing for Everyone with SQL and Apache Flink
Where did we come from? With the 0.9.0-milestone1 release, Apache Flink added an API to process rela ...
- HIVE 时间操作函数
转自http://www.oratea.net/?p=944 日期函数UNIX时间戳转日期函数: from_unixtime语法: from_unixtime(bigint unixtime[, ...
- LeetCode Two Sum III - Data structure design
原题链接在这里:https://leetcode.com/problems/two-sum-iii-data-structure-design/ 题目: Design and implement a ...
- elasticsearch使用操作部分
本片文章记录了elasticsearch概念.特点.集群.插件.API使用方法. 1.elasticsearch的概念及特点.概念:elasticsearch是一个基于lucene的搜索服务器.luc ...
- confluence5.6安装
转自:http://ju.outofmemory.cn/entry/157013 说明:此文在confluence-wiki-5.6.5版本亲测通过附件:http://pan.baidu.com/s/ ...
- Could not load file or assembly'System.Data.SQLite.dll' or one of its depedencies
安装对应的 Microsoft Visual C++ 2010 Redistributable Package (x86) If your download does not start afte ...
- MySql 首记
1.连接数据: 格式是: -P 端口号 -h mysql主机名\ip -u root (用户) -p 2.显示数据库: show databases; 3.选择数据库: use databas ...
- 刨根问底U3D---Vector3 你到底是蔬菜呢还是水果呢?
事情的起因还是因为一段代码,因为在做一个2D TileBase的游戏 所以需要有一个简单的 Tile坐标到世界坐标的变换 public static Vector3 GetTileWorldPosBy ...
- 使用jquery的imagecropper插件做用户头像上传 兼容移动端
在移动端开发的过程中,或许会遇到对图片裁剪的问题.当然遇到问题问题,不管你想什么方法都是要进行解决的,哪怕是丑点,难看点,都得去解决掉. 图片裁剪的jquery插件有很多,我也测试过很多,不过大多数都 ...