一、首先学习如何在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', 'mysdk.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文件

 

解决方案:

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

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

实现步骤:

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

(2)、配置环境变量

  Android Studio项目包成jar文件,并且将工程中引用的jar一起打入新的jar文件中

(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" 
 basedir="D:\antJar" 
 default="makeSuperJar" >
<target
 name="makeSuperJar" 
 description="description" >
<jar destfile="ad-sdk-1.0.0.jar" > 
 <zipfileset src="classes.jar" /> 
 <zipfileset src="android-logging-log4j-1.0.3.jar" />
 <zipfileset src="log4j-1.2.17.jar" />
 <zipfileset src="volley.jar" />
 
 </jar>
 </target>
</project>

 

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

    Android Studio项目包成jar文件,并且将工程中引用的jar一起打入新的jar文件中

 

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

相关文章: