AndroidStudio打包jar包

AndroidStudio打包jar包
androidstudio开发好了library之后,我们需要到jar都出如何提供给其他人使用:
在库中的build.gradle中配置当前的jar的脚本文件
task makeJar(type:org.gradle.api.tasks.bundling.Jar) {
//指定生成的jar名
    baseName 'sdk'
//从哪里打包class文件/TestRxJava/testlibrary/
    from('build/intermediates/classes/debug/com/aige/testlibrary/')
//打包到jar后的目录结构TestRxJava/testlibrary/libs/
    into('TestRxJava/testlibrary/libs/')
//    into('org/cmdmac/cloud/pluginsdk/')
//去掉不需要打包的目录和文件
    exclude('test/', 'BuildConfig.class', 'R.class')
//去掉R开头的文件
    exclude{ it.name.startsWith('R');}
}
makeJar.dependsOn(clearJar, build)
在androidstudio终端目录下这些命令:gradle makejar(makejar目录是在build.gradle目录下写的脚步名称)
➜  TestRxJava gradle makejar
:testlibrary:preBuild UP-TO-DATE
:testlibrary:preDebugBuild UP-TO-DATE
:testlibrary:checkDebugManifest
:testlibrary:preDebugAndroidTestBuild UP-TO-DATE
.........
.............
:testlibrary:check
:testlibrary:build
:testlibrary:clearJar UP-TO-DATE
:testlibrary:makeJar UP-TO-DATE

BUILD SUCCESSFUL

Total time: 1.669 secs

编译完成后,我们在开发的目录下可以看到生成的文件,只有把下面的jar包拷贝出来就可以给其他人使用
➜  testlibrary tree -L 3
.
├── build
│   ├── generated
│   │   ├── assets
│   │   ├── res
│   │   └── source
│   ├── intermediates
│   │   ├── annotations
│   ├── libs
│   │   └── sdk.jar  ---->生成的sdk.jar文件
│   ├── outputs
│   │   └── aar
├── libs
├── proguard-rules.pro
├── src
│   ├── androidTest
│   │   └── java
│   ├── main
│   │   ├── AndroidManifest.xml
│   │   ├── java
│   │   └── res
│   └── test
│       └── java
└── testlibrary.iml

45 directories, 7 files
AndroidStudio打包jar包_第1张图片
接下来我们查看打包的字节码的内容,修改sdk.jar->sdk.tar
➜  libs cp sdk.jar sdk.tar
➜  libs ls
sdk.jar sdk.tar
➜  libs tar zxvf sdk.tar 
x TestRxJava/
x TestRxJava/testlibrary/
x TestRxJava/testlibrary/libs/
x TestRxJava/testlibrary/libs/META-INF/
x TestRxJava/testlibrary/libs/META-INF/MANIFEST.MF
x TestRxJava/testlibrary/libs/TestLibrary.class
➜  libs 

接下来我们使用javap -c TestLibrary 可以查看下面的*.class文件的内容
➜  libs javap -c TestLibrary 
警告: 二进制文件TestLibrary包含com.aige.testlibrary.TestLibrary
Compiled from "TestLibrary.java"
public class com.aige.testlibrary.TestLibrary {
  public com.aige.testlibrary.TestLibrary();
    Code:
       0: aload_0
       1: invokespecial #1                  // Method java/lang/Object."":()V
       4: return

  public java.lang.String getString();
    Code:
       0: ldc           #2                  // String hellow jar
       2: areturn
}

代码仓库:https://github.com/cangck/testLibrary








你可能感兴趣的:(AndroidStudio打包jar包)