Android Studio导出jar包

本文介绍了如何在Android Studio中使用Java Library模块创建包含Android API的jar包,避免了默认创建aar格式的问题。通过添加android.jar到libs目录,可以直接调用Android API,并通过gradle build命令生成jar文件,最后在测试APP中验证了jar包的正确使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先来看一下Android Studio默认Project中的app module,以及可创建的Android Library以及Java Library两种module的差异:

modulegradle plugin生成文件格式是否可使用SDK API
appcom.android.applicationapk可以使用
Android Librarycom.android.libraryaar可以使用
Java Libraryjavajar不可使用


三种module主要差别就在于使用的 gradle plugin 上。
由于Android Studio限制,默认创建的Java Library无法使用Android的API。
如果想创建一个类似SDK的工程,就要创建Android Library模块,这又导致默认生成的是aar格式文件。网上查到的一些做法是编写自定义的gradle task,将生成aar过程中的中间产物 class.jar 复制出来并重命名。

实际还有一种方法,创建Java Library就可以。
Java Library默认的build.gradle为:

apply plugin: 'java'

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}


因此在这个module工程中还可以引用其他jar库。那么直接将Android SDK的android.jar文件复制到module的libs文件夹下:
复制android.jar文件到工程目录

这样就可以正常使用Android的所有API了,同时生成出的文件是jar格式。
编写一个测试类作为最终要使用的jar:

public class FoobarTest {

    private static final String TAG = "FoobarTest-TAG";

    public TextView testMethod(Context context) {
        Log.i(TAG, "Hello from FoobarTest");
        TextView mText = new TextView(context);
        mText.setText("Hello world");
        return mText;
    }
}


在这个类中我们调用了打印日志接口,并通过传入的Context变量创建一个TextView返回给上层调用者。

接下来运行gradle build命令,生成jar文件,并将其拷贝到测试的app工程目录下:
复制生成的jar到app工程下

然后来编写一个测试的Activity,调用生成的jar文件:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mContext = this;

    mLinearLayout = (LinearLayout) findViewById(R.id.linear_layout_main);
    mLinearLayout.addView(new FoobarTest().testMethod(mContext));

}


向Activity的LinearLayout添加了jar返回的TextView,运行测试APP,就可以看到界面中已经正确显示TextView中的内容了,并且控制台输出了jar中打印的log信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值