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

时间: 2024-08-07 23:10:41

Android Studio build dex jar的相关文章

Android Studio 如何打JAR包

Android Studio 如何打JAR包 在eclipse中我们知道如何将一个项目导出为jar包,供其它项目使用. 在AS中可以通过修改gradle才处理. 我们新建一个项目MakeJar,在项目中新建一个modle-类型为library 如图: app为我们的主工程,librarydemo是我们要将其生成jar包的model. 在librarydemo中加入如下代码: task makeJar(type: Copy) { delete 'build/libs/mysdk.jar' from

在Android Studio中导入jar包

#1 下载jar包文件, #2 拷贝到libs目录下 #3 打开你的build.gradle,在dependencies加入如下代码 dependencies {compile files('libs/android-support-v4.jar')compile files('libs/android-async-http-1.4.3.jar')//或者你想偷懒可以只写下面这一句,所有libs文件下的jar都会被编译compile fileTree(dir: “libs”, include: 

Android Studio 怎样打JAR包

Android Studio 怎样打JAR包 在eclipse中我们知道怎样将一个项目导出为jar包,供其他项目使用. 在AS中能够通过改动gradle才处理. 我们新建一个项目MakeJar,在项目中新建一个modle-类型为library 如图: app为我们的主project,librarydemo是我们要将其生成jar包的model. 在librarydemo中增加例如以下代码: task makeJar(type: Copy) { delete 'build/libs/mysdk.ja

在Android Studio中为jar添加source源码

下面的步骤将介绍如何在Android Studio中为jar库绑定源码!!! 1. 在build.gradle中添加jar依赖: dependencies { compile fileTree(dir: 'libs', include: ['*.jar'])               //针对libs下的.jar库 compile files('libs/xxxx.Final.jar')                            // 针对指定文件 } 2. Rebuild后点进j

Android DEV : Android Studio Build Error

    有段时间没打开Android Studio, 今天尝试编译个App却出现如下错误. Error:The SDK Build Tools revision (19.0.3) is too low for project ':app'. Minimum required is 19.1.0     折腾了一下, 发现原来是app的buildToolsVersion没有跟上Android SDK Build-Tools版本变化, 更新下app目录下的build .gradle中下面相应的值就好

安装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日 10:45:36 标签: android studio / 安装问题 5874 一.出现的问题 最近项目要把代码迁移到Android studio上,于是下载了最新的Android studio的安装程序,按着网上的步骤进行了安装,结果第一次启动后,出现了一个错误: 'tools.jar' seem

android studio build.gradle 中的dependencies 的 compile jar文件

1.其下载之后的存放地址 例如:compile 'com.qiniu:happy-dns:0.2.5' 存放在:.gradle\caches\modules-2\files-2.1\com.qiniu\happy-dns\0.2.5\c0ee8266504682a0e500d95d849a5af94a718df1查找的方法: 1.用gd-gui来查看jar文件,jar文件一般在C:\Users\..\.gradle\cache\..下: 这里可以使用android studio自带的反编译插件,

Android Studio生成自定义jar包(by 星空武哥)

    转载请标注原创地址:http://blog.csdn.net/lsyz0021/article/details/52162414 众所周知android studio会在library所依赖的app运行或者build之后自动生成jar,路径为build/intermediates/bundles/debug or release/classes.jar,这样生成的jar是可以用的,但不是我们可以控制的,所以我们需要通过其他方式来解决这个问题. 首先我们新建一个project然后再新建一个

在Android Studio下打jar包

这些天在研究Android 网络编程方面的东西,无奈在github上下载的Volley工程是Android Studio的目录结构,我向将其打成jar包,不管是在Studio下,还是在Eclipse下使用起来都会比较容易些.   研究了下Volley框架的目录结构 ,发现就是java代码目录和清单文件,对于这种库文件,还是很简单的.我们可以将其代码 拷到 我们的工程目录即可使用,相比之下我还是比较喜欢jar包.   其实在Android下有一种新型的 打包方式,那就是 aar ,在Android