Android项目实战(二十四):项目包成jar文件,并且将工程中引用的jar一起打入新的jar文件中

简介: 原文:Android项目实战(二十四):项目包成jar文件,并且将工程中引用的jar一起打入新的jar文件中前言: 关于.jar文件: 平时我们Android项目开发中经常会用到第三方的.jar文件。
原文: Android项目实战(二十四):项目包成jar文件,并且将工程中引用的jar一起打入新的jar文件中

前言:

关于.jar文件:

平时我们Android项目开发中经常会用到第三方的.jar文件。

其实.jar文件就是一个类似.zip文件的压缩包,里面包含了一些源代码,注意的是.jar不包含资源文件(res、图片等)

---------------------------------------------------------------------------------------------------------

一、首先学习如何在Android studio中将android项目打成.jar文件

1、在app目录下的 build.gradle文件中 添加如下红色字体代码:

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
}

task makeJar(type: Copy) {
delete 'build/libs/mysdk.jar'
from('build/intermediates/bundles/release/')
into('build/libs/')
include('classes.jar')
rename ('classes.jar', 'myjar.jar')
}

makeJar.dependsOn(build)

2、生成.jar文件

在Android studio 的下面有 Terminal 选项,可以看到这个命令行的形式

我们在此 输入 “gradle makeJar” 然后回车。等待片刻,变会生成 .jar文件

该.jar文件的地址为:

build/intermediates/bundles/release/

 

至此,我们就可以将生成的.jar放在别的项目中使用了。

 

二、深入探索

问题:

存在这么一种情况:

我们要打包的android项目中已经引用了一个或多个第三方.jar文件。那么我们按上面的方法打成.jar文件,在引入到别的项目中使用中,

会发现出现错误:

NoClassDefFoundError

定位到错误代码位置,会发现 生成.jar文件的原始android项目中引用的第三方.jar文件中的类找不到。

这里可以猜测,使用上述方法将android项目打成.jar文件的过程中,并没有将android项目原来引用的第三方.jar文件也一起打入到新的.jar文件中。

可以测试一下,将android项目打成的.jar文件解压缩,会发现只有java代码相关文件,而没有原来android项目中引用的第三方.jar文件

 

解决方案:

1、首先 问题产生的原因就是 生成.jar文件的android项目原先引用的第三方.jar文件没有被打入到 新的.jar文件中

  那么我们想:怎么在android项目打成.jar文件的时候 顺带把 android项目引用的第三方.jar文化也一并打入到新的.jar文件?

试了几天,目前没有找到解决办法。。。此路不通

 

2、既然android项目原来引用的.jar文件打不进 要生成的.jar文件中去,我们是否可以手动的将android项目引用的第三方项目整合到android项目打成的.jar文件中去?

  即 将android项目打成的.jar文件和android项目自身引用的.jar文件合并成一个.jar文件

网上查询了一番: 可以使用 ANT 工具实现 将两个或多个.jar文件合并成一个.jar文件

Apache Ant是一个基于Java的生成工具。据最初的创始人James Duncan Davidson的介绍,这个工具的名称是another neat tool(另一个整洁的工具)的首字母的缩写。

实现步骤:

(1)、下载ANT,这个网上百度一堆

(2)、配置环境变量

  

(3)、检测是否配置成功

点击 开始 -> 运行 -> 输入cmd 
打开命令窗口,

输入如下命令:ant 
如果出现如下内容,说明安装成功: 
Buildfile: build.xml does not exist! 
Build failed 
注意:因为ant默认运行build.xml文件,这个文件需要我们创建。 
如果不想命名为build.xml,运行时可以使用 ant -buildfile test.xml 命令指明要运行的构建文件。

(4)、编辑xml文件,命名随意,这里命名build.xml

打开文件编辑:

<?xml version="1.0" encoding="utf-8"?>
<project
    name="hosa"                            //不用改       ,注意:这里的所有注释在 build.xml文件中 都不要有  是我为了给你们看解释写的
    basedir="H:\soft\jar"                  //生成的jar存放的位置,并且将要合并的所有.jar文件也放在该目录下
    default="makeSuperJar" >               //不用改

    <target
        name="makeSuperJar"                //不用改  
        description="description" >        //不用改

        <jar destfile="standingbanlanceFB.jar" >                  //合并后的jar文件的名称
         <zipfileset src="avoscloud-sdk-v3.14.5.jar" />           // <zipfileset >标签的都是要参与合并的子jar包 
        <zipfileset src="fastjson.jar" />
        <zipfileset src="okhttp-2.6.0-leancloud.jar" />
         <zipfileset src="standingbanlance.jar" />
          <zipfileset src="okio-1.6.0-leancloud.jar" />
         </jar>
    </target>

</project>

(5)、命令行执行合并操作,输入第一行命令,红色部分是我们编辑的build.xml文件的地址

    

 

(6)、打开build.xml文件中  basedir="H:\soft\jar" 该目录,即可看到合并后的jar文件。

 

目录
相关文章
课时103:生成jar文件
本文介绍了Java中生成和使用JAR文件的基本概念与操作。JAR文件用于将多个类文件打包成一个压缩文件,便于管理和分发。通过JDK提供的`jar`命令可以创建JAR文件,并可通过设置CLASSPATH环境变量来配置和使用这些文件。文中还演示了如何定义、编译和打包一个简单的Java程序为JAR文件,并详细解释了JAR文件的结构及配置方法。此外,简要提及了JDK 1.9后引入的模块化系统对JAR文件的影响。
373 1
|
Java Maven
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
在Java项目中,启动jar包时遇到“no main manifest attribute”错误,且打包大小明显偏小。常见原因包括:1) Maven配置中跳过主程序打包;2) 缺少Manifest文件或Main-Class属性。解决方案如下:
3132 8
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
|
Java 开发者
修改JAR文件工具
本文介绍了一款名为JarEditor的IDEA插件,该插件允许用户直接对JAR包内的文件进行增删改查操作,无需先行解压。通过简单的安装与使用步骤,大大简化了传统上需要解压缩、反编译、重新编译及打包的过程。此外,JarEditor还支持对混淆过的JAR文件进行字节码级别的修改,并提供了强大的搜索功能,支持大小写、全词匹配和正则表达式搜索。对于开发者而言,这款插件无疑极大提高了处理JAR文件的效率和便捷性。
1179 14
|
存储 数据可视化 Java
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
如何在Linux系统下部署和运行Java项目jar包,包括传输文件到Linux、使用nohup命令运行jar包、查看端口状态、杀死进程和查看项目运行状态,以及如何解决“没有主清单属性”的错误。
2980 2
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
2482 3
Java系列之 解决 项目 jar 包无法上传到Github
该博客文章介绍了解决Java项目中jar包无法上传到Github的问题,通过修改`.gitignore`文件来包含jar包,从而成功添加到上传目录。
Java系列之 解决 项目 jar 包无法上传到Github
|
SQL 前端开发 Java
在IDEA中使用Maven将SpringBoot项目打成jar包、同时运行打成的jar包(前后端项目分离)
这篇文章介绍了如何在IntelliJ IDEA中使用Maven将Spring Boot项目打包成可运行的jar包,并提供了运行jar包的方法。同时,还讨论了如何解决jar包冲突问题,并提供了在IDEA中同时启动Vue前端项目和Spring Boot后端项目的步骤。
在IDEA中使用Maven将SpringBoot项目打成jar包、同时运行打成的jar包(前后端项目分离)
|
Java Windows
如何在windows上运行jar包/JAR文件 如何在cmd上运行 jar包 保姆级教程 超详细
本文提供了一个详细的教程,解释了如何在Windows操作系统的命令提示符(cmd)中运行JAR文件。
10470 1
|
Java Maven
构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)
这篇文章详细介绍了构建SpringBoot项目的过程,包括新建工程、选择环境配置、添加依赖、项目结构说明,并演示了如何编写一个简单的Controller控制器实现输出功能,最后讲解了如何使用Maven将项目打包成可执行的JAR包,并提供了运行JAR包的命令和测试效果。
构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)
|
6月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1054 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡

热门文章

最新文章