赞
踩
在项目上新建一个File文件输入config.gradle
ext{ username = "houde" //定义属性 isRelease = true //建立Map的存储方式,key可以是任意对象,value也没有限制 androidId = [ compileSdkVersion: 29, buildToolsVersion: "29.0.2", minSdkVersion: 19, targetSdkVersion: 29, versionCode: 1, versionName: "1.0" ] appId = [ app:"com.houde.gradle.test" ] url = [ debug : "https://www.baidu.com", release: "https://www.google.com" ] dependencies = [ appcompat: 'androidx.appcompat:appcompat:1.1.0', constraintlayout: 'androidx.constraintlayout:constraintlayout:1.1.3' ] }
//引入自己创建的gradle文件
apply from: "config.gradle"
def androidId = rootProject.ext.androidId def appId = rootProject.ext.appId def libraries = rootProject.ext.dependencies def url = rootProject.ext.url android { compileSdkVersion androidId.compileSdkVersion compileSdkVersion androidId.compileSdkVersion defaultConfig { applicationId appId.app minSdkVersion androidId.minSdkVersion targetSdkVersion androidId.targetSdkVersion versionCode androidId.versionCode versionName androidId.versionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled true //dex 是否分包 ndk {//ndk引用的so库 abiFilters "armeabi-v7a"//,'armeabi','arm64-v8a' } } //multiDex的一些相关配置,这样配置可以让你的编译速度更快 dexOptions { preDexLibraries = false //让它不要对Lib做preDexing incremental true //开启incremental dexing,优化编译效率,这个功能android studio默认是关闭的。 javaMaxHeapSize "4g" //增加java堆内存大小 } buildTypes { debug{ buildConfigField("String","BASE_URL","\"${url.debug}\"") } release { buildConfigField("String","BASE_URL","\"${url.release}\"") minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //标准写法: // implementation group:"androidx.appcompat",name:"appcompat",version:"1.1.0" //这是一种简写方式 implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" // implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.core:core-ktx:1.2.0' // implementation 'androidx.constraintlayout:constraintlayout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' //引入config.gradle中定义的依赖 libraries.each{k,v->implementation v} }
// 声明是Android程序, //com.android.application 表示这是一个应用程序模块 //com.android.library 标识这是一个库模块 //而这区别:前者可以直接运行,后者只能被导入别的应用作为一个模块。 apply plugin: 'com.android.application' android {//配置项目构建的各种属性 compileSdkVersion 29 //编译时使用 Android版本 buildToolsVersion "29.0.1" //编译时使用的构建工具的版本 defaultConfig { applicationId "com.skyworth.myapplication" //项目包名 minSdkVersion 23 //最低兼容Android版本 targetSdkVersion 29 //目标版本 versionCode 1 //版本号 versionName "1.0" //版本名 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" //表明要使用AndroidJUnitRunner进行单元测试 } sourceSets {//目录指向配置 main { manifest.srcFile 'AndroidManifest.xml'//指定AndroidManifest文件 java.srcDirs = ['src']//指定source目录 resources.srcDirs = ['src']//指定source目录 aidl.srcDirs = ['src']//指定source目录 renderscript.srcDirs = ['src']//指定source目录 res.srcDirs = ['res']//指定资源目录 assets.srcDirs = ['assets']//指定assets目录 jniLibs.srcDirs = ['libs']//指定lib库目录 } debug.setRoot('build-types/debug')//指定debug模式的路径 release.setRoot('build-types/release')//指定release模式的路径 } signingConfigs {//签名配置 release {//发布版签名配置 storeFile file("fk.keystore")//密钥文件路径 storePassword "123"//密钥文件密码 keyAlias "fk"//key别名 keyPassword "123"//key密码 } debug {//debug版签名配置 storeFile file("fk.keystore") storePassword "123" keyAlias "fk" keyPassword "123" } } buildTypes {//build类型 release {//发布 minifyEnabled true//混淆开启 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'//指定混淆规则文件 signingConfig signingConfigs.release//设置签名信息 } debug {//调试 signingConfig signingConfigs.release } } //1、pickFirsts:当出现重复文件,会使用第一个匹配的文件打包进入apk //2、merges:当出现重复文件,合并重复的文件打入apk //3、excludes:打包的时候排除匹配的文件 packagingOptions { // pickFirsts = ['META-INF/LICENSE'] //这里不要直接=赋值,避免覆盖掉默认值 // merge 'META-INF/LICENSE' //这里不要直接=赋值,避免覆盖掉默认值 exclude 'META-INF/LICENSE' } lintOptions { // 设置为 true时lint将不报告分析的进度 quiet true // 如果为 true,则当lint发现错误时停止 gradle构建 abortOnError false // 如果为 true,则只报告错误 ignoreWarnings true // 如果为 true,则当有错误时会显示文件的全路径或绝对路径 (默认情况下为true) absolutePaths true // 如果为 true,则检查所有的问题,包括默认不检查问题 checkAllWarnings true // 如果为 true,则将所有警告视为错误 warningsAsErrors true // 不检查给定的问题id disable 'TypographyFractions', 'TypographyQuotes' // 检查给定的问题 id enable 'RtlHardcoded', 'RtlCompat', 'RtlEnabled' // * 仅 * 检查给定的问题 id check 'NewApi', 'InlinedApi' // 如果为true,则在错误报告的输出中不包括源代码行 noLines true // 如果为 true,则对一个错误的问题显示它所在的所有地方,而不会截短列表,等等。 showAll true // 重置 lint 配置(使用默认的严重性等设置)。 lintConfig file("default-lint.xml") // 如果为 true,生成一个问题的纯文本报告(默认为false) textReport true // 配置写入输出结果的位置;它可以是一个文件或 “stdout”(标准输出) textOutput 'stdout' // 如果为真,会生成一个XML报告,以给Jenkins之类的使用 xmlReport false // 用于写入报告的文件(如果不指定,默认为lint-results.xml) xmlOutput file("lint-report.xml") // 如果为真,会生成一个HTML报告(包括问题的解释,存在此问题的源码,等等) htmlReport true // 写入报告的路径,它是可选的(默认为构建目录下的 lint-results.html ) htmlOutput file("lint-report.html") // 设置为 true, 将使所有release 构建都以issus的严重性级别为fatal(severity=false)的设置来运行lint // 并且,如果发现了致命(fatal)的问题,将会中止构建(由上面提到的 abortOnError 控制) checkReleaseBuilds true // 设置给定问题的严重级别(severity)为fatal (这意味着他们将会 // 在release构建的期间检查 (即使 lint 要检查的问题没有包含在代码中) fatal 'NewApi', 'InlineApi' // 设置给定问题的严重级别为error error 'Wakelock', 'TextViewEdits' // 设置给定问题的严重级别为warning warning 'ResourceAsColor' // 设置给定问题的严重级别(severity)为ignore (和不检查这个问题一样) ignore 'TypographyQuotes' } // 开启DataBinding支持库 dataBinding { enabled = true } //1.exclude,过滤掉某些文件或者目录不添加到APK中,作用于APK,不能过滤aar和jar中的内容 //2.pickFirst,匹配到多个相同文件,只提取第一个,作用于APK,不能过滤aar和jar中的文件。 //3.doNotStrip,可以设置某些动态库不被优化压缩。 //4.merge,将匹配的文件都添加到APK中,和pickFirst有些相反,会合并所有文件。 packagingOptions { pickFirst '**/libc++_shared.so' doNotStrip "*/armeabi/libYTCommon.so" doNotStrip "*/armeabi-v7a/libYTCommon.so" doNotStrip "*/x86/libYTCommon.so" doNotStrip "*/arm64-v8a/libYTCommon.so" pickFirst 'lib/armeabi-v7a/libalivcffmpeg.so' pickFirst "lib/arm64-v8a/libalivcffmpeg.so" doNotStrip '*/mips/*.so' doNotStrip '*/mips64/*.so' doNotStrip "**/libDX*.so" } } dependencies { //各种依赖,包括本地的jar包 implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。