关于Android(安卓)Studio里的Gradle文件
16lz
2021-12-04
// 声明是Android程序 //apply plugin是最新gradle版本的写法,以前的写法是apply plugin: 'android', 如果还是以前的写法,请改正过来 apply plugin: 'com.android.application' //自定义函数 用于在打包时 命名APK 生成当前日期字符串 def releaseTime() { return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC")) } android { //说明要运行该源码,你必选已经安装了android API 23 compileSdkVersion 23 // 说明要运行该源码,你必须已经安装了 android sdk build-tools 23.0.3 buildToolsVersion "23.0.3" //动态的在build时配置AndroidManifest.xml里的项目 // defaultConfig里的配置可以覆盖manifest里的配置 defaultConfig { applicationId "test.com.yu" //表示向下低至android API 14,即androd 4.0和4.0以上的版本都可以运行该工程 minSdkVersion 14 //表示采用的目标android API是 API 23即 android 5.0 targetSdkVersion 23 versionCode 1 versionName "1.0" //dex突破65535的限制 突破64k需要的设置 //需要compile 'com.android.support:multidex:' //需要Application中相关配置 multiDexEnabled true // 默认是umeng的渠道 UMENG_CHANNEL_VALUE需要与AndroidManifest中的对应位置的命名一致 manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"] } // java版本 compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } //签名文件配置 signingConfigs { debug { // No debug config //storeFile file("C:/Users/Administrator/.android/debug.keystore") } release { storeFile file("../yourapp.keystore") storePassword "your password" keyAlias "your alias" keyPassword "your password" } } //配置如何构建和打包你的App,默认有debug和release两个类型。 // debug类型包含调试时的信息,并且有debug key签名。release默认是不含签名的 buildTypes { //调试版本 debug { // 显示Log buildConfigField "boolean", "LOG_DEBUG", "true" //混淆配置 minifyEnabled false signingConfig signingConfigs.debug versionNameSuffix "-debug" zipAlignEnabled false shrinkResources false } //发布版本 release { // 不显示Log buildConfigField "boolean", "LOG_DEBUG", "false" /*是否开启混淆,新版本是minifyEnabled不再是 runProguard true * ProGuard的作用是在byte级别对你的app进行分析优化,使得你的App变得更小,更快 * 设置minifyEnabled true,就会在打包的时候进行代码混淆处理. * 其中proguard-android.txt不用管,在sdk目录里面,主要是配置了proguard.cfg文件。 * 直接在android studio创建项目不会有这个文件,而是 proguard-rules.pro文件 * 其实一样的,因为项目是从eclipse迁移过来的,之前在eclipse上混淆是 proguard.cfg文件*/ minifyEnabled false /*加载默认混淆配置文件及自定义混淆的配置 * proguardFiles这部分有两段,前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,免去了我们很多事 * 这个文件的目录在 /tools/proguard/proguard-android.txt * 后一部分是我们项目里的自定义的混淆文件,目录就在 app/proguard-rules.txt , * 如果你用Studio 1.0创建的新项目默认生成的文件名是 proguard-rules.pro * 这个名字没关系,在这个文件里你可以声明一些第三方依赖的一些混淆规则*/ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //配置发布版本的签名文件 signingConfig signingConfigs.release zipAlignEnabled true shrinkResources true // 移除无用的resource文件,这个东西依赖于minifyEnabled,所以minifyEnabled也要为true才行。有可能导致android.content.res.Resources$NotFoundException: File applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.apk')) { // 输出apk名称为boohee_v1.0_2015-01-15_wandoujia.apk def fileName = "boohee_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk" output.outputFile = new File(outputFile.parent, fileName) } } } } } // 友盟多渠道打包 productFlavors { wandoujia {} _360 {} baidu {} xiaomi {} tencent {} taobao {} } // 友盟多渠道打包 UMENG_CHANNEL_VALUE需要与AndroidManifest中的对应位置的命名一致 productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] } //执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关掉。 lintOptions { abortOnError false disable "ignore", "IgnoreResLayout", "InvalidPackage", "MissingRegistered" } dexOptions { preDexLibraries = false //似乎和构建加速有关 //Out of memory 问题 Error:Execution failed for task ':app:dexDebug'. java.lang.OutOfMemoryError: GC overhead limit exceeded incremental = true; javaMaxHeapSize "2g" } //dex突破65535的限制 突破64k需要的设置 遇到java.lang.NoClassDefFoundError android.applicationVariants.all { variant -> task "fix${variant.name.capitalize()}TestMultiDexList" << { logger.info "Fixing keep manifest for $variant.name" def keepManifest = new File("$buildDir/intermediates/multi-dex/test/$variant.flavorName/$variant.buildType.name/manifest_keep.txt") keepManifest.append '\n-keep class *.** { *; }\n' logger.debug "Updated keepManifest for ${keepManifest.getAbsolutePath()}\n$keepManifest.text" } } tasks.whenTaskAdded { task -> android.applicationVariants.all { variant -> if (task.name == "collect${variant.name.capitalize()}TestMultiDexComponents") { task.finalizedBy "fix${variant.name.capitalize()}TestMultiDexList" } } } } //dependencies里指明的就是一些需要用到的第三方库 dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:gridlayout-v7:21.0.2' compile 'com.android.support:appcompat-v7:21.0.2' compile 'com.android.support:multidex:1.0.0' compile 'com.google.code.gson:gson:2.3.1' //ORM 对象型数据库框架 操作本地db compile 'com.google.code.gson:gson:2.3.1' //json解析 compile 'com.nineoldandroids:library:2.4.0' // compile 'com.android.support:recyclerview-v7:23.0.1' //RecyclerView引入 /* compile project(path: ':moalib') //自定义module 包含一些列控件 compile project(path: ':jni') //本地Jni compile project(path: ':myjni')//自己定义的jni*/ //aar包:【复制aar到libs】 // 【build.gradle repositories flatDir{ dirs 'libs' }】 【dependencies { compile (name:'XXXXXXX', ext:'aar') }】 compile(name: 'ormlite4.8', ext: 'aar') compile(name:'jni', ext:'aar') compile(name:'moalib', ext:'aar') compile(name:'myjni', ext:'aar') compile files('libs/conceal_android.jar') //第三方加密解密 compile files('libs/libconceal.jar') //第三方加密解密 compile files('libs/umeng-analytics-v5.2.4.jar') //Umeng分析 }
更多相关文章
- 反编译介绍
- Android应用正确使用扩展SD卡
- Android(安卓)开发——'Android(安卓)Pre Compiler'空指针问题的
- android使用http协议上传文件
- 【Flutter】修改图标、应用名称、包名等
- 【漫漫安卓路之承】android tips
- Android多媒体学习三:实现自己的Camera
- android studio 新建 activity 失败
- Activity切换动画无效(android:windowIsTranslucent)影响(androi