//plugins { // 新版本gradle 默认是这种插件引入方式
// id 'com.android.application'
//}
// 在 rootProject 的 build.gradle 或 单独定义config.gradle配置文件 中定义 isRunAloneMode 即可使用:
/*
buildscript {
ext {
isRunAloneMode = true
}
}
*/
if (isRunAloneMode){
apply plugin: 'com.android.application' // 应用程序模块
}else {
apply plugin: 'com.android.library' // 依赖库模块
}
apply plugin: 'kotlin-android' // 依赖Android Kotlin支持插件
android {
compileSdkVersion 30 // 编译版本
buildToolsVersion "30.0.3" // 编译工具版本
// useLibrary 'org.apache.http.legacy' // 开启 Apache HTTP client
defaultConfig {
if (isRunAloneMode){
applicationId "com.aegis.module_search" // 应用程序标识
}
minSdkVersion 16 // 最小支持版本
targetSdkVersion 30 // 期望Android SDK版本
versionCode 1 // 版本号(程序使用)
versionName "1.0.0" // 版本名称(给用户展示)
// flavorDimensions 详见:https://blog.csdn.net/chen_xi_hao/article/details/80526049
flavorDimensions "default"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" // 使用 AndroidJUnitRunner 进行单元测试
// resourcePrefix "${project.name}_" 也可以用这个定义为模块名
resourcePrefix "search_" // 限定资源文件命名前缀为 search_ 只能限定Xml资源,并不能限定图片资源,图片资源扔需要自身注意设置前缀名
// configurations.all {
// resolutionStrategy {
// failOnVersionConflict() // 发现依赖冲突,就报错
// force 'com.github.bumptech.glide:glide:4.9.0' // 强制指定 Glide 依赖版本为 4.9.0
// }
// }
resConfigs "zh-rCN", "zh-rHK", "zh-rTW", "en" // 只打包指定的语言包进apk
// multiDexEnabled true // 是否开启分包
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86' // ndk so 包只打包对应版本支持
}
}
ndkVersion '21.4.7075529' // 指定 ndk 版本
packagingOptions {
pickFirsts = ['META-INFO/LICENSE'] // 当 LICENSE 出现重复时,打包自动选择第一个
merge 'META-INFO/LICENSE' // 合并打包,会自动忽略 pickFirst 配置
// exclude 'META-INF/DEPENDENCIES.txt' // 排除指定文件
// exclude 'META-INF/NOTICE'
// exclude 'META-INF/NOTICE.txt'
// exclude 'META-INF/LICENSE'
// exclude 'META-INF/LICENSE.txt'
}
lintOptions {
abortOnError false // 出错后,是否中断打包
checkReleaseBuilds false // 打正式包时,是否进行编译检查
disable 'HardcodedText' // 禁用文本硬编码警告
}
signingConfigs { // 签名信息
debug { // 调试版本签名配置
// keyAlias 'keyalisa' // 签名别名
// keyPassword '123456' // 别名密码
// storeFile file('keystore.jks') // 签名文件,目录对应项目根目录
// storePassword '123456' // 签名密码
}
release { // 正式发布版本签名配置
// keyAlias 'keyalisa' // 签名别名
// keyPassword '123456' // 别名密码
// storeFile file('keystore.jks') // 签名文件
// storePassword '123456' // 签名密码
}
}
buildTypes {
debug {
// 日志打印开关 定义了一个:BuildConfig.LOG_ENABLE 字段,可供Java代码调用
buildConfigField('boolean', 'LOG_ENABLE', 'true')
// 测试服务器的主机地址 定义了一个:BuildConfig.HOST_URL 字段,可供Java代码调用
buildConfigField('String', 'HOST_URL', '"https://debug.host.com"')
minifyEnabled false // 是否开启代码混淆
zipAlignEnabled true // 开发开启zip包对齐优化,可降低apk提交,提高运行效率
signingConfig signingConfigs.debug
applicationIdSuffix ".debug" // 为applicationId添加后缀 如:com.aegis.module_search.debug
versionNameSuffix '_debug' // 在版本号后面添加后缀 如:1.0.0_debug
}
release {
// 日志打印开关
buildConfigField('boolean', 'LOG_ENABLE', 'false')
// 测试服务器的主机地址
buildConfigField('String', 'HOST_URL', '"https://release.host.com"')
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // 混淆文件
signingConfig signingConfigs.release
debuggable false // 是否开启断点调试
jniDebuggable false // 是否开启ndk调试
renderscriptDebuggable false // 是否开启高级渲染调试
zipAlignEnabled true // 是否开启zip包对齐
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
viewBinding true // 开启 ViewBinding
// dataBinding true // 开始 DataBinding
}
sourceSets { // 源代码文件目录指向
main {
jniLibs.srcDirs = ['libs'] // so 文件目录指向 libs
if (isRunAloneMode) {
manifest.srcFile 'src/main/AndroidManifest.xml' // 清单文件指向 src/main/AndroidManifest.xml
java.srcDir 'src/main/module' // 开启 src/main/module 为Java源代码目录
} else {
manifest.srcFile 'src/main/manifest/AndroidManifest.xml'
java {
exclude 'src/main/module' // 排除 src/main/module 目录编译打包
}
}
}
}
productFlavors { // 多渠道配置
wandoujia {}
_360 {}
xiaomi {}
baidu {}
}
productFlavors.all { // 遍历多渠道版本
// 配置示例: <meta-data android:name="UMENG_CHANNEL_NAME" android:value="${UMENG_CHANNEL_NAME}" />
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_NAME: name] // 设置清单文件 UMENG_CHANNEL_NAME 占位符值 为对应渠道的 name
}
}
// 此配置会报此⚠️:Using flatDir should be avoided because it doesn't support any meta-data formats
// 解决办法:发布aar到一个本地或远程仓库,然后进行aar的依赖
//repositories {
// flatDir {
// dirs 'libs' // 当项目有 aar包依赖时使用,但是官方已不推荐此配置
// }
//}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
网友评论