AndroidStudio项目打包成jar的简单方法
作者:lnny_99 发布时间:2023-07-07 05:33:27
首先备注一下
JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。为 J2EE 应用程序创建的 JAR 文件是 EAR 文件(企业 JAR 文件)。
什么是AAR,与JAR区别
*.jar:只包含了class文件与清单文件,不包含资源文件,如图片等所有res中的文件。
*.aar:包含所有资源,class以及res资源文件全部包含
Android Studio 如何打JAR包
在eclipse中我们知道如何将一个项目导出为jar包,供其它项目使用。 在AS中可以通过修改gradle才处理。
我们新建一个项目MakeJar,在项目中新建一个modle-类型为android-library
如图:app为我们的主工程,librarydemo是我们要将其生成jar包的model. 在library demo中的build.gradle中与android结构同级加入如下代码:
项目结构
步骤1-依赖
主工程App的build中要加入librarydemo 这个依赖model:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
compile project(':librarydemo')
}
步骤2- 载library种编写task
当你编译完工程后其实library的所有java文件已经生成了包含class 的classes.jar包,如下图所示:
这个为了方便给出一个task 将改classes.jar 导出到library的build/libs/下,并修改名字为mysdk.jar ( 名字随意)。
//Copy类型
task makeJar(type: Copy) {
//删除存在的
delete 'build/libs/mysdk.jar'
//设置拷贝的文件
from('build/intermediates/bundles/release/')
//打进jar包后的文件目录
into('build/libs/')
//将classes.jar放入build/libs/目录下
//include ,exclude参数来设置过滤
//(我们只关心classes.jar这个文件)
include('classes.jar')
//重命名
rename ('classes.jar', 'mysdk.jar')
}
makeJar.dependsOn(build)
//在终端执行生成JAR包
// gradlew makeJar
在android studio 提供的Terminal中(目录默认伟当前工程的)键入 ./gradlew makeJar 回车看到如下所示就OK了:
生成的jar包在你的library那个的build下的libs下,然后就可以使用了。
声明:打出来的jar只有源代码的.class 文件,不包含资源文件
看到那么多人踩的,那么多人遇到问题,在这里说明下并解决
不得了
常见问题
有人问:
怎么把资源(图片,布局,string等)打进jar包呢?
答案是: 既然不包含那我们就把jar包中用到的资源放到你使用该jar的工程里面,然后通过反射即可。
这里给出反射类:
public class MResource {
public static int getIdByName(Context context, String className, String resName) {
String packageName = context.getPackageName();
int id = 0;
try {
Class r = Class.forName(packageName + ".R");
Class[] classes = r.getClasses();
Class desireClass = null;
for (Class cls : classes) {
if (cls.getName().split("\\$")[1].equals(className)) {
desireClass = cls;
break;
}
}
if (desireClass != null) {
id = desireClass.getField(resName).getInt(desireClass);
}
} catch (Exception e) {
e.printStackTrace();
}
return id;
}
}
个人觉得还是用as为我们提供的aar包比较好,编译完就生成了aar了,而且也不用担心资源问题,万一你漏了一个呢。
生成的aar在你的library的/build/outputs/aar/
说明下,评论中出现的问题大多是因为名字或者代码结构问题,
效果图
最后附上该demo的地址:
https://github.com/ta893115871/MakeJar
总结
以上所述是小编给大家介绍的ndroidStudio项目打包成jar的简单方法网站的支持!
来源:http://blog.csdn.net/linidserggbvxdsefgh/article/details/78527420
猜你喜欢
- java 配置MyEclipse Maven环境虽然我的大部分项目已经迁到Idea上去了,但是在写部分小的测试程序的时候还是习惯
- 表单的重复提交: 没有完整的进行一次,先请求表单页面->再提交表单过程而完成数据提交造成的根本原因: 没有完整的进行一次,先请求表单页
- 前言在讲述线程池的前提 先补充一下连接池的定义连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用可以看到其连接
- 1.新建控制台应用程序2.新建类 EncryptHelper.cspublic static class EncryptHelper{ &n
- 前言:在本文中,我们将介绍Valhalla项目——它的历史原因、当前的开发状态,以及它发布后为日常J
- 配置多个别名 typeAliasesPackage<property name="typeAliasesPackage&qu
- 一、NIOjava.nio全称java non-blocking IO,是指jdk1.4 及以上版本里提供的新api(New IO) ,为所
- 类加载机制java类从被加载到JVM到卸载出JVM,整个生命周期包括:加载(Loading)、验证(Verification)、准备(Pre
- Get请求1.简单发送Get请求/// <summary>/// 指定Url地址使用Get 方式获取全部字符串/// </
- 一、需要导入的jar1.commons-collections4-4.1.jar2.poi-3.17-beta1.jar3.poi-ooxm
- 前两年写的东西,现在整理一下发出来!以前公司需要做WebService,并且对WebService的SoapHeader进行加密,所以就写了
- 反射对效率有影响 慎用!!!1.对象结构public class BusinessDept {private String yea
- 项目最终的文件结构1 添加maven依赖 <dependency> <groupI
- 1、一次性添加多行注释的快捷键首先选中要注释区域,然后ctrl+/ 这个是多行代码分行注释,每行一个注释符号ctrl+shift+/ 这个是
- Java是一门天然的面向对象的语言。而所有我们手动创造出来的类,都继承于同一个类,即Object类。可以看一下Object类的结构nativ
- 网上各种解决方案,我试了好久,整合了几篇文章才凑出来,在这里分享一下,实在不想网友们在这里面绕圈子,毕竟,写代码的时间是愉快的,解决bug也
- 引言:编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教。第1招:以空间换
- Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。下面是我这几年做开发过程中自己用过的工具类
- 因为工作原因需要读取json文件,最先是使用url方式不符合要求pass。又使用本地方式读取。记录一下方便后期查看。 注:因为资料都是从网上
- Retrofit 基本使用implementation 'com.squareup.retrofit2:retrofit:2.9.0