android studio 使用gradle 导出jar包,并打包assets目录

最近项目在做一个sdk,供别的开发者使用,所以要求导出jar包。

与eclipse不同,android studio 1.0 没提供导出jar包的图形界面。需要结合gradle来生成jar包。

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

?


1

<code class="hljs">apply plugin: ‘com.android.library‘</code>

这样,build的时候,android studio 1.0会在 module目录的build/intermediates/bundles/release/ 子目录(这个目录以后版本可能会变)里生成一个名为classes的jar包。
如果你的项目没用到assets等资源文件,那你直接拷贝出去就可以用了。
如果想拷贝到outputs目录的话,在module的build.gradle里添加以下代码:

?


1

2

3

4

5

6

7

8

9

10

11

12

<code class="hljs">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)</code>

如果你和我一样,还需要把assets目录打包到jar包的话,请继续往下看。
我用了一个非主流的方式打包assets,应该没什么后遗症,咱们江湖儿女都懂的,hack一下更健康。

其实也没啥神秘的,也不知道算不算hack,就是利用文件依赖来打包assets。代码长这样:

?


1

2

3

4

5

<code class="hljs">dependencies {

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

    provided files(‘src/main/assets‘)

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

}</code>

关键是第三行代码。还有一点一定要注意,需要在assets新建一个名为assets的目录,在这个子目录里放置你需要的文件。这样才可以哦。
还没完,不知道啥原因,只有minifyEnabled设置为 true才能把assets打包进去。没有去深究,反正我也需要混淆下代码。

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

另附 proguard配置:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

<code class="hljs">

-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 <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>;

}

</methods></fields></init></init></init></init></init></code>

结伴旅游,一个免费的交友网站:www.jieberu.com

推推族,免费得门票,游景区:www.tuituizu.com

时间: 2024-10-25 02:40:03

android studio 使用gradle 导出jar包,并打包assets目录的相关文章

在Android studio中用gradle打 jar 包(Mac下)

这两天公司要重构项目,以前的项目在eclipse上,准备迁移到Android studio上,需要对项目打包,于是我学习了Android studio中gradle打包的内容.我在公司用的Mac,在家用的Windows,两种平台下,打包基本一样的,这里主要说下在Mac系统下的过程. 在Andorid studio中的Terminal用的是Mac的终端,所以要使用Terminal的gradle命令打包,先要配置下mac中的gradle环境,打开mac上的终端: (1) 输入命令:open .bas

Eclipse导出jar包Unity打包错误

前几天接SDK使用的是Android Studio昨天打开AndroidStudio后自动更新了gradler然后失败了然后AndroidStudio就挂了.就是用之前的方法Eclipse到处jar包,最后遇到了奇怪的问题,在此记录下,希望可以帮到遇到同样错误的小伙伴. 1,我在Eclipse下随便创建了一个安卓工程,首先使用的是E:\Unity 4.6\Editor\Data\PlaybackEngines\androidplayer\release\bin下的Classes.jar. 2,简

android studio中导入第三方jar包和第三方库文件的方法

一.导入第三方jar包的方法 其实较为简单,以下步骤: 1>在工程的libs下面放置需要导入的jar包 2>在导入的jar包右键,选择"add as library" 3>这时候就能够在app下面的build.gradle中发现多了如下说明:"compile XXXX",说明导入jar文件成功了. 二.导入第三方类库文件 相对而言,其实就是将之前的Eclipse的project或者module转化成android studio下的可执行的proje

android studio 引入第三方类库jar包

第三方类库jar包 这就简单多了,直接将jar包拷贝到app/libs下,然后在app下的build.gradle中添加此jar的依赖.如下: dependencies { compile 'com.android.support:support-v4:19.1.0' compile files('libs/libammsdk.jar') compile files('libs/universal-image-loader-1.8.6-with-sources.jar') compile fil

Android Studio 将module打成jar包

1.新建测试工程,工程里面有两个module,app是Android工程,mylibrary是Android Library库. 2.打开mylibrary目录下的build.gradle文件,加入下面的代码块. task makeJar(type: Copy) { delete 'build/libs/mylibrary.jar' //删除已经存在的jar包 from('build/intermediates/bundles/release/')//从该目录下加载要打包的文件 into('bu

android studio打可执行jar包

android studio可以通过library工程打出jar包 解压会看到META-INF/MANIFEST.MF文件的打开如下: Manifest-Version: 1.0 增加一行,注意冒号后面有一个空格,如下: Manifest-Version: 1.0 Main-Class: com.example.MyClass 在jar解压后的文件夹下 按shift+鼠标右键 选择:在此处打开命令窗口 ,在cmd中执行如下命: jar -cvmf META-INF\manifest.mf tes

解决Android Studio加载第三方jar包,出现包重复加载的问题:

通过Maven中央库添加第三方jar包的时候,出现了重复加载jar包的问题,解决办法很简单去掉一个不让它去加载就OK了 一.错误 Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.internal.LoggedErrorException: Failed to run command: F:\zsl\sdk\build-tools\21.1.2\dx.bat --dex --output F:\zs

android Studio 使用gradle 参数解释及多渠道打包

Gradle 基本语法 build.gradle  buildscript { //设置脚本的运行环境 repositories {//支持java 依赖库管理(maven),用于项目的依赖 mavenCentral() } dependencies {//依赖包的定义.支持maven/ivy,远程,本地库,也支持单文件,如果前面定义了repositories{}maven 库,使用maven的依赖 //的时候只需要按照用类似于com.android.tools.build:gradle:2.1

关于Android Studio导出jar包的问题

之所以说这个问题,还是因为最开始以为Unity开发要用 再说一下我的环境 Win7 x64 VS2015 Unity5.2.2 Android Studio 2.3.2 JDK1.8 我现在Unity与Android相结合是把Android项目导出aar包,具体方法百度就有,不赘述 现在说说导出Jar包的问题 看了网上说的在Gradle里加Task然后就可以exportJar,再把此jar包与AndroidManifest.xml一同考到 Unity的Assets/Plugins/Android