联系我们 - 广告服务
您的当前位置:官网首页 > 资讯 > 热评 >

Android studio将Module打包成Jar的方法

来源: 编辑: 时间:2019-08-08
导读: 一、默认自动生成的 jar 包众所周知 android studio 会在library所依赖的 app运行 或 build 之后自动生成 jar 包,路径为 ......

一、默认自动生成的 jar 包

众所周知 android studio 会在library所依赖的 app运行 或 build 之后自动生成 jar 包,路径为 module根目录/build/intermediates/bundles/debug or release/classes.jar,这样生成的jar是可以用的,但不是我们可以控制的,所以我们需要通过其他方式来解决这个问题。

注意:

若发现 android studio 项目 bundle 文件夹下没有 release目录,可能是没有将 module 添加到主 module 依赖中。

方式1:主module右键 -- 倒数第二个open module setting-- 上面最后一个选项dependencies-- 右边绿色加号-- module dependency......然后确定

方式2:主module的gradle的dependencies中加上 compile project

二、自定义生成 jar 包



方式一:

def _basename = "testjar";
def _version = "_v1.0";
def _destinationpath = "build"; //生成jar包的位置
def zipfile = file; //待打包文件位置
task deletebuild{
 delete _destinationpath + _basename + _version + ".jar"
task makejar{
 from ziptree
 from filetree //将assets目录打入jar包 
 basename = _basename + _version
 destinationdir = file
makejar.dependson

方式二:打包的 jar 只有源代码的.class 文件,不包含资源文件

task makejar {
 delete 'build/testjar_v1.0.jar' //删除之前的旧jar包
 from //从这个目录下取出默认jar包
 into //将jar包输出到指定目录下
 include
 rename //自定义jar包的名字
makejar.dependson

方式三:

task clearjar {
 delete 'build/testjar_v1.0.jar' //jar包的名字,随便命名 
task makejar {
 //指定生成的jar名 
 basename 'testjar_v1.0'
 //从哪里打包class文件 
 from
 //打包到jar后的目录结构 
 into
 //去掉不需要打包的目录和文件 
 exclude
 //去掉r开头的文件 
 exclude{it.name.startswith;}
makejar.dependson

注意:

以上配置信息要与 android {…….} 配置的脚本成平级关系。

其中 _basename = "testjar"; _version = "_v1.0"; 是定义生成 jar 包的名字为testjar_v1.0.jar。

配置好以后就可以编译jar包了,有两种方式:

方式 a :点击 android studio 右侧的 gradle 面板,在项目或者该类库的目录中找到 tasks - other - makejar 命令,双击这个makejar之后等一会就会编译好jar包。

打包成功后:在配置的指定目录下生成jar包

方式 b :通过 cmd 命令行,在项目根目录下,执行 gradlew makejar 命令,看到编译完成的信息以后就ok了,也能生成一样的jar包,和直接使用①中的方式是等价的。

注意:使用此方式前要配置好 gradle 的“ 环境变量 ”,否则直接在项目根目录下找不到这个命令。使用 cmd 比较费劲,不推荐。

方式 c :在 android studio 终端窗口中输入 gradlew makejar 命令。

打包成功如下图:

打包成功后:在配置的指定目录下生成jar包

注意:

问题1:

对于以上配置 form 默认 jar 包部分,在用目录是 from ,注意粗体部分,最初我也是按照这个目录写的,确实没问题。但后来,也就是android studio 更新到2.3以后,发现这个目录没有了,取而代之的是 default 和 debug 目录,debug目录之前也是有的,没有变化,只是原来的release目录被现在的default目录代替了。这导致我后来生成jar包的时候始终没有找到jar包,报上图所示错误。

原因就是没有了 release 目录,找不到默认的 classes.jar 文件,所以也就没有生成自定义名字的jar包,改为 default 或者 debug 目录以后就能正常生成jar包了,要注意这点变化。

问题2

execution failed for task ':mylibrary:lint'.
lint found errors in the project; aborting build.


解决在 build.gradle 文件中,加入下面的代码块,重新执行 gradlew makejar 命令。

android {
 lintoptions {
 abortonerror false
}

最后注意:

将被嵌入的应用打包成 jar 包,但是这样的方式有局限性,无法将被嵌入的应用所使用的资源性文件一起打包。下面介绍 aar 打包方式。

三、直接使用 aar 包

将被嵌入的应用打包成 aar 包,这也是 android studio 的一种新特性,可以将应用所使用的资源性文件一起打包。编译即可打包生成 aar 包,而且也不用担心漏掉资源问题。

如果project 中 module 是一个应用,则在 module 的 build.gradle 文件中定义属性为:apply plugin: 'com.android.application';而如果 mudule 是一个被引用的依赖 lib 库的话,则在 module 的 build.gradle 文件中定义属性为:apply plugin: 'com.android.library;所以当我们将应用 module 打包出 aar 文件的时候,需要修改类型属性。正常情况下,直接重新编译 module,生成的 aar 包在 module 根目录的/build/outputs/aar/,如下图:

下面介绍将 aar 包添加到其他 android 工程:

首先,将 aar 包复制到 libs 目录下

其次,配置build.gradle文件:

a 在 android 中加入,如下:

repositories { 
 flatdir { 
 dirs 'libs' 
} 

b 在 dependencies中加入 compile

完整 build.gradle 文件如下:

apply plugin: 'com.android.application' 
android { 
 repositories { 
 flatdir { 
 dirs 'libs' 
dependencies { 
 compile 
}

最后,重新编译rebuild的以下工程。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

责任编辑:

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

上一篇:Android 进度条按钮ProgressButton的实现代码
下一篇:没有了

网友评论:

在“\templets\demo\comments.htm”原来的内容全部删除,插入第三方评论代码,如果不需要评论功能,删除comments.html里面的内容即可
推荐使用友言、多说、畅言(需备案后使用)等社会化评论插件

Copyright © 2018 凯发网址娱乐凯发网址娱乐-凯发网娱乐下载-凯发网娱乐官方网站 All Rights Reserved Power by DedeCms
本站所有资讯来源于网络 如有侵权请联系QQ:9490489
Top