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的更多相关文章

  1. Android studio 中引用jar的其实是Maven?(二)

    上一篇:Android studio 中引用jar的其实是Maven?(一) 搭建maven仓库: 去了解一个新的事物的时候,最好的方式就是去使用它.例如去了解一座城市的时候,最好的方式就是乘坐公共交 ...

  2. Android studio 中引用jar的其实是Maven?(一)

    由于Studio比eclipse多了一步对工程构建的步骤,即为build.gradle这个文件运行,因此其引入第三方开发jar包与lib工程对比Eclipse已完成不同,引入第三方jar与lib工程显 ...

  3. Android Studio 如何打JAR包

    Android Studio 如何打JAR包 在eclipse中我们知道如何将一个项目导出为jar包,供其它项目使用.  在AS中可以通过修改gradle才处理.  我们新建一个项目MakeJar,在 ...

  4. Android Studio导入第三方jar包或依赖工程的方法

    Android Studio导入第三方jar包或依赖工程的方法   一 导入jar包的方法 1.打开自己的工程,将需要导入的jar包copy到libs文件夹下 2.在导入的jar包处单击菜单 Add ...

  5. Android Studio 怎样打JAR包

    Android Studio 怎样打JAR包 在eclipse中我们知道怎样将一个项目导出为jar包,供其他项目使用. 在AS中能够通过改动gradle才处理. 我们新建一个项目MakeJar,在项目 ...

  6. Android Studio 导入系统 jar包

    1.当前需要导入系统jar包的module所对应build.gradle中添加如下依赖: provided files('libs/classes-full-debug.jar') 也可以图形化设置: ...

  7. (转载) android studio library生成jar包和aar的方法总结

    android studio library生成jar包和aar的方法总结 标签: android学习文档jar和aar的使用与生成gradle 2016-11-25 10:39 1782人阅读 评论 ...

  8. Android Studio下导出jar包和aar包

    Android Studio下导出jar包和aar包 jar包和aar包的区别 步骤 1. 创建Android工程 创建工程比较简单,不错复述 2. 创建一个Library(Module) 创建了一个 ...

  9. 安装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日 ...

随机推荐

  1. Interface => IDataErrorInfo

    Introduction to common Interfaces IDataErrorInfo Provides the functionality to offer custom error in ...

  2. C#中 MD5和SHA1加密代码

    Pwd = FormsAuthentication.HashPasswordForStoringInConfigFile(entity.Pwd, "MD5"); Pwd = For ...

  3. C#的TreeView标记

    今天用到了TreeView控件,多次添加后发现内容是重复的,于是用到清除:this.myTreeView.Nodes.Clear(): 如果想在添加完节点后,默认全展开:this.myTreeView ...

  4. python学习道路(day1note)(变量,注释,用户输入,格式化输出,if,while,for循环并扩展练习)

    python是一门动态解释性的强类型定义语言,其应用范围非常之广 1:进入python语言 #!/usr/bin/env python #_*_coding:utf-8_*_ print(" ...

  5. 交流从选择coding.net开始

    之前提到我们需要coding.net(一个可以帮助你在线存放管理代码的地方,便于项目合作)来进行学习交流,它可以帮我们记录我们入门的点点滴滴,现在就简单介绍一下coding.net的注册及使用. 1. ...

  6. gradlew解决jar或class冲突

    以LeanCloud的推送sdk为例. 我的项目中使用了android-async-http库和fastjson的库,然后LeanCloud的的sdk中也使用了这两个库,但是版本有点低. 处理方式: ...

  7. echarts入门基础,画折线图

    注意:一定要自己引入echarts库 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...

  8. web server && web framework角色区分

    问题 web framework是否包括webserver? 是否可以包括? webserver 和 framework的关系是? https://www.quora.com/What-is-the- ...

  9. bootstrap入门-2.固定的内置样式

    HTML5文档类型(Doctype) Bootstrap使用了一些HTML5元素和CSS属性,所以需要使用HTML5文档类型. <!DOCTYPE html> <html> . ...

  10. 【java开发系列】—— spring简单入门示例

    1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控制反转 ...