Android Studio中如何打JAR包

   Android Studio中对于library类型的Moudle,默认打出来的是AAR包,
但有时候我们的SDK还需要共享给一些其他eclipse的项目使用(或者libs下也能放jar),这样我们就需要输出JAR包,

首先 需要设置module应用的gradle插件为 library 代码长这样:

apply plugin: 'com.android.library'

这样,build的时候,android studio 会在 module目录的build/intermediates/bundles/release/ 子目录(这个目录以后版本可能会变)里生成一个名为classes的jar包。

接着 可以通过在Moudle中的build.gradle加入task来实现

task clearJar(type: Delete) {
    delete 'build/libs/rollviewpager.jar' }

task makeJar(type: Copy) {
    from('build/intermediates/bundles/release/')
    into('build/libs/')
    include('classes.jar')
    rename ('classes.jar', 'rollviewpager.jar')
}

makeJar.dependsOn(clearJar, build)

从这里我们可以看出先去找classes.jar后执行任务从build/libs/文件夹下面看有没有libs文件和jar,有就先删除jar,没有呢就去新建libs。

在终端执行生成JAR包


我们先来看下原始的目录文件结构

Android Studio中如何打JAR包_第1张图片

在以下目录就可以找到我们生成的JAR包,看图:

Android Studio中如何打JAR包_第2张图片

是不是多了一个jar啊,如果你的项目没用到assets等资源文件,那你直接拷贝出去就可以用了。

如果用到了,那就来个下面的操作:

利用文件依赖来打包assets。代码长这样:

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

provided files('src/main/assets')

compile 'com.android.support:appcompat-v7:21.0.3'

关键是第三行代码。还有一点一定要注意,需要在assets新建一个名为assets的目录,在这个子目录里放置你需要的文件。这样才可以哦。

如果需要混淆下代码。

proguard配置:

-libraryjars 'C:\Soft\android\adt\sdk\platforms\android-19\android.jar'  -optimizations !code/simplification/arithmetic
-allowaccessmodification
-repackageclasses '' -keepattributes *Annotation*
        -dontpreverify
-dontwarn android.support.**
 -keep public class * extends android.app.Activity

-keep public class * extends android.app.Application

-keep public class * extends android.app.Service

-keep public class * extends android.content.BroadcastReceiver

-keep public class * extends android.content.ContentProvider

-keep public class * extends android.view.View {
    public <init>(android.content.Context);
    public <init>(android.content.Context,android.util.AttributeSet);
    public <init>(android.content.Context,android.util.AttributeSet,int);
    public void set*(...);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context,android.util.AttributeSet);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context,android.util.AttributeSet,int);
}

-keepclassmembers class * extends android.content.Context {
    public void *(android.view.View);
    public void *(android.view.MenuItem);
}

-keepclassmembers class * extends android.os.Parcelable {
    static ** CREATOR;
}

-keepclassmembers class **.R$* {
    public static <fields>;
}

-keepclassmembers class * {
    @android.webkit.JavascriptInterface
    <methods>;
}

minifyEnabled设置为 true才能把assets打包进去。

好了,android studio 使用gradle 导出jar包,并打包assets目录 ,我说明白了,对吧。




你可能感兴趣的:(android,打jar包,Studio)