Android Studio中对于library类型的Moudle,默认打出来的是AAR包,
但有时候我们的SDK还需要共享给一些其他eclipse的项目使用(或者libs下也能放jar),这样我们就需要输出JAR包,
但有时候我们的SDK还需要共享给一些其他eclipse的项目使用(或者libs下也能放jar),这样我们就需要输出JAR包,
首先 需要设置module应用的gradle插件为 library 代码长这样:
apply plugin: 'com.android.library'
这样,build的时候,android studio 会在 module目录的build/intermediates/bundles/release/ 子目录(这个目录以后版本可能会变)里生成一个名为classes的jar包。
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目录 ,我说明白了,对吧。