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/ 上面一般都能知道找到答案。



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。