Android|Android Studio 使用和打包 JAR 文件
Android Studio 使用和打包 JAR 文件
Java ARchive 在软件领域, JAR 文件(Java 归档,英语:Java ARchive )是一种软件包文件格式,通常用于聚合大量的 Java 类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便分发 Java 平台应用软件或库。[3][3]
JAR 文件是一种归档文件,以 ZIP 格式构建,以.jar 为文件扩展名。用户可以使用 JDK 自带的 jar 命令创建或提取 JAR 文件。也可以使用其他 zip 压缩工具,不过压缩时 zip 文件头里的条目顺序很重要,因为 Manifest 文件常需放在首位。JAR 文件内的文件名是 Unicode 文本。
引入 JAR 包
- 把 JAR 包放入工程的
libs/
目录下。 - 右键 JAR 包点击
Add As Library
加入到项目中。(更新接口索引) - 查看工程的
build.gradle
文件的dependencies
可以看到已经导入 JAR 文件。 - 接下来就可以使用 JAR 包的接口了。
文章图片
文章图片
文章图片
打包 JAR 包 创建 Android Library
在 Android Studio 中创建 Android Library(
File -> New -> New Module -> Android Library -> Finish
)文章图片
【Android|Android Studio 使用和打包 JAR 文件】
文章图片
文章图片
文章图片
配置 build.gradle
在 Android Library 工程中(如图创建的 mylibrary)的
build.gradle
配置编译 JAR 的参数。在最后面添加
def ZIP_DIR= 'build/intermediates/intermediate-jars/debug/'
def ZIP_FILE= 'classes.jar'
def ZIP_SDK_FILE= 'libtest.jar'
def ZIP_SDK_DIR= 'libs/'
def ZIP_DIR_FILE= file(ZIP_DIR + ZIP_FILE)task clearJar(type: Delete) {
// 这行表示如果你已经打过一次包了,再进行打包则把原来的包删掉
delete ZIP_SDK_DIR + ZIP_SDK_FILE
}task makeJar(type: Copy) {
// 这行表示要打包的文件的路径,根据下面的内容,其实是该路径下的 classes.jar
from(ZIP_DIR)// 这行表示打包完毕后包的生成路径,也就是生成的包存在哪
into(ZIP_SDK_DIR)// 看到这行,如果你对分包有了解的话,你就可以看出来这行它只是将一些类打包了
include(ZIP_FILE)rename (ZIP_FILE, ZIP_SDK_FILE)
}makeJar.dependsOn(clearJar, build)
注意:
ZIP_DIR
路径在不同的 Android Studio 版本不一样,具体可以在项目中搜索 classes.jar
文件。在 AndroidManifest.xml 中加入权限请求
视具体的 JAR 接口功能而定,需要在 Android Library 工程中(如图创建的 mylibrary)的
AndroidManifest.xml
加入需要申请的权限。加入相应的 JAR 接口代码
在 Android Library 工程中(如图创建的 mylibrary)的 java 目录下,按平常的方法开发接口即可。
比如:我在
com.example.mylibrary
下加入 Test.java
文件。文章图片
编译 JAR
方法 I
- 我们点开 Android Studio 右侧的
Gradle
,选择mylibrary -> Tasks -> other -> makeJar
双击。(第一次没有makeJar
,请编译一下使 build.gradle 的配置生效) - 可以看到下方
4: Run
的结果,出行BUILD SUCCESSFUL in xs
就是编译 JAR 成功。 - 查看
build.gradle
下的ZIP_SDK_DIR
路径,可以看到生成目标 JAR 文件。 - 点开 JAR 文件可以看到里面包含的我们新增的 Test 文件。
文章图片
文章图片
文章图片
文章图片
推荐阅读
- android第三方框架(五)ButterKnife
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- Android中的AES加密-下
- 带有Hilt的Android上的依赖注入
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程