Android Studio中之打JAR包初实践

标签: android studio打jar包
1451人阅读 评论(0) 收藏 举报
分类:
   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包


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


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


是不是多了一个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目录 ,我说明白了,对吧。




2
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:381092次
    • 积分:4936
    • 等级:
    • 排名:第6012名
    • 原创:96篇
    • 转载:20篇
    • 译文:1篇
    • 评论:275条
    博客专栏
    sina 微博
    最新评论