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

接下来我们查看打包的字节码的内容,修改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."<init>":()V
       4: return

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

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








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值