当前位置: 代码迷 >> Android >> Android使用Gradle进展打包混淆,包括依赖Library
  详细解决方案

Android使用Gradle进展打包混淆,包括依赖Library

热度:18   发布时间:2016-04-28 01:30:57.0
Android使用Gradle进行打包混淆,包括依赖Library

下面的脚本100%能用,只要你的版本和路径配置正确

环境:Eclipse  Windows 7

Gradle:2.3

Android项目里面包含了多个Library

主项目配置:


settings.gradle 文件配置library库

include 'lib_01'include 'lib_02'project(':lib_01').projectDir = new File('D:\\pj1')project(':lib_02').projectDir = new File('D:\\pj2')

库名称对应库的项目路径,当然如果和主项目在一起可以用相对路径

build.gradle 内容


buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle:1.1.2'    }}apply plugin: 'com.android.application'android {    compileSdkVersion 18    buildToolsVersion "19.1.0"        lintOptions {       abortOnError false    }            sourceSets {        main {            manifest.srcFile 'AndroidManifest.xml'            java.srcDirs = ['src']            resources.srcDirs = ['src']            res.srcDirs = ['res']            assets.srcDirs = ['assets']        }    }			signingConfigs {        release {            storeFile file("D:\\my.keystore")            storePassword "112233"            keyAlias "test"            keyPassword "112233"        }    }    buildTypes {        release {            signingConfig signingConfigs.release	    minifyEnabled true            proguardFile 'proguard.txt'        }    }        }dependencies {   compile files('libs/ftp4j-1.7.2.jar','libs/mymap.jar')   compile project(':lib_01')   compile project(':lib_02')}


混淆的路径也要对.一般都是在主项目下配置proguard.txt 但文件里面不需要再添加 --libraryjars 这个东西,否则会报你引用了jar  2次 twice


compile project对应编译的是上面的2个library 库


2个依赖库也需要一个build.gradle,每个依赖library项目下 需要一个build.gradle。 

内容:

buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle:1.1.2'    }}apply plugin: 'android-library'android {    compileSdkVersion 18    buildToolsVersion "19.1.0"    defaultConfig {        minSdkVersion 14        targetSdkVersion 19    }    sourceSets {        main {            manifest.srcFile 'AndroidManifest.xml'            jniLibs.srcDirs = ['libs']            java.srcDirs = ['src']            resources.srcDirs = ['src']            aidl.srcDirs = ['src']            renderscript.srcDirs = ['src']            res.srcDirs = ['res']            assets.srcDirs = ['assets']        }    }        }

项目打包的时候 先是找到依赖库进行处理生成依赖的 aar  ,APK出来的文件都在build/output目录里面.  jniLibs.srcDirs是用来处理so模块文件的。

注意: 默认的情况下 子项目中 AndroidManifest.xml 文件中不要有 Activity. 如果有请去掉(这个地方没有去研究 怎样避免多个manifest的问题)


依赖文件中应该是空空的。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="my.mobile.package01" >    <uses-sdk        android:minSdkVersion="9"        android:targetSdkVersion="19" />    <application        android:allowBackup="true"        android:icon="@drawable/app_icon"        >    </application></manifest>


下载的gradle先配置好环境变量
在主项目中

执行 gradle tasks

执行 gradle build

Gradle虽然方便,但Gradle有版本不兼容问题,而且需要下载相关库和jar文件,只需要不断尝试,去 http://stackoverflow.com/ 上面一般都能知道找到答案。



  相关解决方案