正文
supportLibraryVersion =
'26.0.0'
}
2.2 module build.gradle
module build.gradle用于module的配置与编译。
这里有很多常用的配置选项,你并不需要都把它们记住,有个大致的印象就行,等到用的时候再回来查一查。
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion '26.0.2'
defaultConfig {
applicationId "com.guoxiaoxing.software.engineering.demo"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
signingConfigs{
debug{
storeFile file("debugKey.keystore")
storePassword '123456'
keyAlias 'debugkeyAlias'
keyPassword '123456'
}
release{
storeFile file("releaseKey.keystore")
storePassword '123456'
keyAlias 'releasekeyAlias'
keyPassword '123456'
}
}
compileOptions{
encoding = 'utf-8'
sourceCompatibility = JavaVersion.VERSION_1_6
targetCompatibility = JavaVersion.VERSION_1_6
}
adbOptions{
timeOutInMs = 5 * 1000
installOptions '-r', '-s'
}
dexOptions{
incremental false
javaMaxHeapSize '4g'
threadCount 2
jumboMode true
}
lintOptions{
abortOnError false
}
buildTypes {
debug{
debuggable true
jniDebuggable true
multiDexEnabled true
zipAlignEnabled true
signingConfig signingConfigs.debug
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
signingConfig signingConfigs.release
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
testCompile 'junit:junit:4.12'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
}
2.3 Gradle Wrapper
Gradle Wrapper是对Gradle的一层包装,目的在于团队开发中统一Gradle版本,一般可以通过gradle wrapper命令构建,会生成以下文件:
-
gradle-wrapper.jar
-
gradle-wrapper.properties
文件用来进行Gradle Wrapper进行相关配置。如下所示:
#Fri Nov 24 17:39:29 CST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
我们通常关心的是distributionUrl,它用来配置Gradle的版本,它会去该路径下载相应的Gradle包。
注:如果官方的gradle地址下载比较慢,可以去
国内的镜像地址
下载。
三 Gradle混淆与优化
3.1 代码压缩
代码压缩通过
ProGuard
提供,ProGuard 会检测和移除封装应用中未使用的类、字段、方法和属性,包括自带代码库中的未使用项(这使其成为以变通方式解决 64k 引用限制的有用工具)。
ProGuard 还可优化字节码,移除未使用的代码指令,以及用短名称混淆其余的类、字段和方法。混淆过的代码可令您的 APK 难以被逆向工程,这在应用使用许可验证等安全敏感性功能时特别
有用。