Android studio将项目转换为jar文件

最近公司要做一个sdk开放给别人使用。没有做过的我在此记录生成步骤以及注意要点。

配置参数:

1,在app.guidle中的最外围添加代码(与android apply同级)

apply plugin: 'com.android.library'//原来的com.android.application

android{
    ...
}

task clearJar(type: Delete) {
    //这行表示如果你已经打过一次包了,再进行打包则把原来的包删掉
    delete 'build/libs/test_1.0.0.jar'
}

task makeJar(type: Copy) {
    from('build/intermediates/bundles/release/') //这行表示要打包的文件的路径,根据下面的内容,其实是该路径下的classes.jar
    into('build/libs/')  //这行表示打包完毕后包的生成路径,也就是生成的包存在哪
    include('classes.jar')  //看到这行,如果你对分包有了解的话,你就可以看出来这行它只是将一些类打包了
    rename('classes.jar', 'test_1.0.0.jar')
}

makeJar.dependsOn(build)

2,删除applicationId

3,点击工具右侧gradle->app->other->makeJar

结束。

需要注意的点:

1,生成的jar在app/build/libs/xxx.jar.

2,在jar中无法打包res中的资源,若jar中有需要用到资源的地方,则需要在加入jar的项目中添加需要的资源。另外在jar中使用反射机制调取可运行项目中相应的资源。

/**
     * 获取drawable目录的文件资源id
     *
     * @param paramString 文件名(不包含后缀)
     * @return 资源id
     */
    public static int getDrawableId(String paramString) {
        return App.getContext().getResources().getIdentifier(paramString,
                "drawable",
                App.getContext().getPackageName());
    }

    /**
     * 获取layout目录的文件资源id
     *
     * @param paramString 文件名(不包含后缀)
     * @return 资源id
     */
    public static int getLayoutId(String paramString) {
        return App.getContext().getResources().getIdentifier(paramString,
                "layout",
                App.getContext().getPackageName());
    }

3,当打包完成后,jar包则是一个可以发布的包,所以打包前不要忘记将自己的代码混淆。

在build.gradle中将minifyEnabled置为true

#保持package包下的所有类不被混淆
-keep class <package>.**{*;}

这个设置是保证生成的jar中开放的api能够被调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值