Eclipse环境下 使用Gradle进行编译实现自动分包

原创 2015年07月08日 22:51:14

标签(空格分隔): MultiDex


gradle安装
到Gradle官网下载最新版本的Gradle,安装;
将bin目录所在位置添加到环境变量的path中;

在Eclipse中安装Gradle插件:
Help–> Install new software;
填入插件地址 http://dist.springsource.com/release/TOOLS/gradle


工程转化
在工程目录右键 –>Export –> Generate Gradle files,Eclipse会自动生成Gradle相关文件;
右键–> Configure –>转化成Gradle工程;


如果工程有依赖的lib,则在根目录中会有setting.gradle文件,如果只有一个主工程,则此文件不是必需;

setting.gradle

include ‘:libs:Volley’
include ‘:libs:Android-PullToRefresh:library’
include ‘:tmp:tmps’


在工程的根目录下,build.gradle 文件内容如下:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
   repositories {
     jcenter()
   }

   dependencies {
     classpath ‘com.android.tools.build:gradle:1.1.+’
  }
}

task wrapper(type: Wrapper) {
   gradleVersion = ‘2.0’
} // Top-level build file where you can add configuration options common to all sub-projects/modules.


在工程内部的build.gradle中,需要进行如下配置:
添加

lintOptions{
   abortOnError false
}

防止因为lint检查,打包失败;


在主工程的biuld.gradle中,添加

defaultConfig{
   multiDexEnabled true
}

开启多个Dex打包模式。 但是这个的前提是,在工程的Application中已经集成了MultiDexApplication;


打包处理脚本

afterEvaluate {
   tasks.matching {
     it.name.startsWith(‘dex’)
   }.each { dx ->
     if (dx.additionalParameters == null) {
     dx.additionalParameters = [‘–multi-dex’]
    } else {
       dx.additionalParameters += ‘–multi-dex’
    }

// optional
   //dx.additionalParameters += ‘–main-dex-list=main-dex-list.txt’.toString()
   //dx.additionalParameters += ‘–minimal-main-dex’
   dx.additionalParameters += ‘–set-max-idx-number=8000’
  }
}

–main-dex 用于指定第一个包中必需包含的类,存放在 main-dex-list.txt中,文件名可自行修改
–minimal-main-dex 最小化主包,与–main-dex-list配合使用,则主包中只含有文件中指定的类


–set-max-idx-number 用于指定每个dex包中最多的函数数量,多余此数量则自动进行分包


添加打包所需的签名

signingConfigs{
   myConfig{
     storeFile file(“keys”)
     storePassword “passwrod”
     keyAlias “kayAlins”
     keyPassword “password”
   }
}
buildTypes{
   release {
     signingConfig signingConfigs.myConfig
   }
}


添加so文件库

//noinspection all
task copyNativeLibs(type: Copy) {
   // third party lib so
   from(new File(projectDir, ‘libs’)) { include ‘armeabi/*.so’ }
   into new File(buildDir, ‘native-libs’)
}

tasks.withType(JavaCompile) {
   compileTask ->
   //noinspection all
   compileTask.dependsOn copyNativeLibs
}

//noinspection all
tasks.withType(com.android.build.gradle.tasks.PackageApplication) {
   pkgTask ->
   pkgTask.jniFolders = new HashSet()
   pkgTask.jniFolders.add(new File(buildDir, ‘native-libs’))
}


关于提示版本不对应问题:gradle version 1.10 is required. current version is 2.4

修改项目根目录下的build.gradle,classpath ‘com.android.tools.build:gradle:1.2.+’将版本号改为更高的版本;
修改项目根目录下Gradle–>Wrapper中的distributionUrl=https://services.gradle.org/distributions/gradle-2.4-all.zip 版本号改为对应的安装版本
到根目录下,运行gradlew build;


.9png导致的编译失败问题
Eclipse中编译运行正常,但是通过Gradle打包,提示.9png 有问题。原因是,部分.9.png制作错误,Eclipse会自动优化为png格式,Gradle不会自动优化,需要手工将.9.png修正


Duplicate异常 duplicate entry: android/support/multidex/Multidex V14.class
原因是项目中重复使用了此类相关的包。
解决办法:

  1. 工程–>Properties–>Java Build Path–>Order and Export中,不要勾选重复的包即可。
  2. 在gradle中添加exclude字段compile fileTree(dir: ‘libs’, include: ‘*.jar’, exclude: ‘android-support-multidex.jar’)

Eclipse超详细解决安卓Dex65536报错,分包方法

能搜索到这里的也不需要知道为什么会报Dex65536错误了,下面单刀直入直接上解决办法: 原理其实就是将不重要的jar包集中用ant打包成一个jar包,再用SDK自带工具dx.bat去将这个jar包编...
  • qq_35213388
  • qq_35213388
  • 2017年09月30日 15:45
  • 517

Android APK DEX分包总结

最近几天一直在学习Android APK Dex分包的相关知识,因为Android热修复需要Dex分包,而Android热修复是现在比较火的技术,所以现在将我这几天学到的相关东西做一个总结,这篇主要从...
  • yubo_725
  • yubo_725
  • 2016年08月31日 17:41
  • 6198

gradle 编译android项目 Eclipse

gradle下载地址 gradle环境配置 1.工程目录结构 说明:如果项目有多个library工程并且有可能重复引用了相同的jar包,如support-4等,需要将这些jar单独拎出来作为一...
  • leibinleibin
  • leibinleibin
  • 2015年07月10日 14:05
  • 2517

eclipse安装Gradle

第一步:下载Gradle>http://gradle.org/gradle-download 第二步:解压gradle-2.5, 配置环境变量:GRADLE_HOME path添加;%GRADLE...
  • StriveIT
  • StriveIT
  • 2015年07月30日 00:22
  • 18658

Android dex分包方案

当一个app的功能越来越复杂,代码量越来越多,也许有一天便会突然遇到下列现象: 1. 生成的apk在2.3以前的机器无法安装,提示INSTALL_FAILED_DEXOPT 2. 方法数量...
  • vurtne_ye
  • vurtne_ye
  • 2014年09月29日 10:22
  • 17153

Android在Eclipse上进行开发时分包

#分包 #1.多个jar包打成一个jar包(ant),external包形式导入工程 ant -buildfile /home/qihl/桌面/test/build.xml #2.转dex文件,放到s...
  • jxst431833
  • jxst431833
  • 2016年02月18日 10:15
  • 2378

Eclipse 安装Gradle插件

http://www.cnblogs.com/simoncook/archive/2013/02/28/2937939.html 一、介绍 1. Gradle 是什么 Gradle 官方对其描...
  • caolaosanahnu
  • caolaosanahnu
  • 2013年11月29日 11:52
  • 53711

在 eclipse 下利用 gradle 构建系统

  • 2015年07月18日 11:47
  • 90KB
  • 下载

Eclipse项目分包管理

Eclipse分包管理项目
  • Pillar1066527881
  • Pillar1066527881
  • 2016年03月11日 15:12
  • 2771

使用gradle编译打包java项目

本文介绍使用gradle编译打包java项目,java项目仅仅为了演示,为了使用gradle脚本创建一个可执行的jar文件,即可以使用java命令直接执行,如:java –jar jarfile.ja...
  • neweastsun
  • neweastsun
  • 2016年09月24日 16:51
  • 9212
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Eclipse环境下 使用Gradle进行编译实现自动分包
举报原因:
原因补充:

(最多只允许输入30个字)