用Android Studio打Jar包

来源:互联网 发布:英文seo招聘 编辑:程序博客网 时间:2024/05/17 23:17

以前都是用eclipse打jar包,就算装了Android Studio,由于已经习惯了eclipse打包,一直没有去尝试用Android Studio打包,今天由于动态加载需要,而在新电脑上又没有eclipse,只好学习一下。

  • 首先,我们先做一个Demo,创建一个工程,在工程下创建一个module,选择Android Library:

    这里写图片描述

    我命名为mylibrary,创建好工程目录如下:

    这里写图片描述

  • 然后修改上图中蓝色圈中的部分,build.gradle,注意,是mylibrary下的build.gradle,不是工程下的build.gradle。

    在该配置中增加下图中蓝色圈中的部分: 
    这里写图片描述

task makeJar(type: Copy) { //这行表示如果你已经打过一次包了,再进行打包则把原来的包删掉    delete 'libs/mysdk.jar'    //这行表示要打包的文件的路径,根据下面的内容,其实是该路径下的classes.jar    from('build/intermediates/bundles/release/')    //这行表示打包完毕后包的生成路径,也就是生成的包存在哪    into('libs/')    //看到这行,如果你对分包有了解的话,你就可以看出来这行它只是将一些类打包了    include('classes.jar')    rename ('classes.jar', 'mysdk.jar')}makeJar.dependsOn(build)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 刚才我们修改的是mylibrary下的build.gradle,接下来在工程的build.gradle里添加mylibrary依赖:

    这里写图片描述

  • OK,在命令行中进入项目的目录下,执行 gradlew makeJar,如下图:

    这里写图片描述

    这里需要说明一点,有些人执行这个命令后,它会下载一些东西,耐心等等吧。。。。

  • 命令执行成功后,即出现BUILD SUCCESSFUL,那么刚才我们在mylibrary下的build.gradle中修改的几行中的into(‘libs/’),就是我们生成的jar包存放的路径。生成结果看下图: 
    这里写图片描述

**有一点需要注意,根据我们修改的mylibrary下的build.gradle中的几行代码

task makeJar(type: Copy) {    delete 'libs/mysdk.jar'    from('build/intermediates/bundles/release/')    into('libs/')    include('classes.jar')    rename ('classes.jar', 'mysdk.jar')}makeJar.dependsOn(build)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

由from和include两行我们可知,我们其实是将classes.jar内容重新打包(可以利用jd-gui这个工具看一下classes.jar和我们生成的mysdk.jar,内容是一样的,可以看一下下面两张图),比如我们在mylibrary下增加一个类Main,如果我们想要在生成的jar包中看到它,我们必须运行一下这个工程,要不然classes.jar中不会有Main这个类,那么我们生成的jar包中也不会有这个类。

这里写图片描述

这里写图片描述

0 0