Android Studio导出jar包

来源:互联网 发布:淘宝葫芦娃衣服 编辑:程序博客网 时间:2024/05/29 06:58

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

module gradle plugin 生成文件格式 是否可使用SDK API app com.android.application apk 可以使用 Android Library com.android.library aar 可以使用 Java Library java jar 不可使用


三种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文件:

@Overrideprotected 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信息。

0 0