Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android studio 使用gradle 導出jar包,並打包assets目錄

android studio 使用gradle 導出jar包,並打包assets目錄

編輯:關於Android編程

最近項目在做一個sdk,供別的開發者使用,所以要求導出jar包。

與eclipse不同,android studio 1.0 沒提供導出jar包的圖形界面。需要結合gradle來生成jar包。

首先 需要設置module應用的gradle插件為 library 代碼長這樣:

apply plugin: 'com.android.library'

這樣,build的時候,android studio 1.0會在 module目錄的build/intermediates/bundles/release/ 子目錄(這個目錄以後版本可能會變)裡生成一個名為classes的jar包。
如果你的項目沒用到assets等資源文件,那你直接拷貝出去就可以用了。
如果想拷貝到outputs目錄的話,在module的build.gradle裡添加以下代碼:

task clearJar(type: Delete) {
    delete 'build/outputs/yourname.jar'
}

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

makeJar.dependsOn(clearJar, build)

如果你和我一樣,還需要把assets目錄打包到jar包的話,請繼續往下看。
我用了一個非主流的方式打包assets,應該沒什麼後遺症,咱們江湖兒女都懂的,hack一下更健康。

其實也沒啥神秘的,也不知道算不算hack,就是利用文件依賴來打包assets。代碼長這樣:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    provided files('src/main/assets')
    compile 'com.android.support:appcompat-v7:21.0.3'
}

關鍵是第三行代碼。還有一點一定要注意,需要在assets新建一個名為assets的目錄,在這個子目錄裡放置你需要的文件。這樣才可以哦。
還沒完,不知道啥原因,只有minifyEnabled設置為 true才能把assets打包進去。沒有去深究,反正我也需要混淆下代碼。

好了,android studio 使用gradle 導出jar包,並打包assets目錄 ,我說明白了,對吧。

另附 proguard配置:


-libraryjars 'C:Softandroidadtsdkplatformsandroid-19android.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 (android.content.Context);
    public (android.content.Context,android.util.AttributeSet);
    public (android.content.Context,android.util.AttributeSet,int);
    public void set*(...);
}

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

-keepclasseswithmembers class * {
    public (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 ;
}

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


 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved