AndroidStudio打包jar包

来源:互联网 发布:周鸿祎谈网络战争 编辑:程序博客网 时间:2024/05/29 07:59
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-DATEBUILD SUCCESSFULTotal 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.iml45 directories, 7 files

接下来我们查看打包的字节码的内容,修改sdk.jar->sdk.tar
➜  libs cp sdk.jar sdk.tar➜  libs lssdk.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.MFx TestRxJava/testlibrary/libs/TestLibrary.class➜  libs 

接下来我们使用javap -c TestLibrary 可以查看下面的*.class文件的内容
➜  libs javap -c TestLibrary 警告: 二进制文件TestLibrary包含com.aige.testlibrary.TestLibraryCompiled 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."<init>":()V       4: return  public java.lang.String getString();    Code:       0: ldc           #2                  // String hellow jar       2: areturn}

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








原创粉丝点击