文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android studio之 build.gradle配置

2023-09-24 16:43

关注

在使用Android studio创建项目会出现两个build.gradle:

一. Project项目级别的build.gradle

(1)、buildscript{}闭包里是gradle脚本执行所需依赖,分别是对应的maven库和插件。

闭包下包含:
1、repositories闭包
2、dependencies闭包

maven库 repositories 示列

    repositories {        maven { url 'http://maven.aliyun.com/nexus/content/repositories/releases/' }        google()        jcenter()  //代码托管仓库        mavenCentral()    }

插件dependencies示列

dependencies {        classpath 'com.android.tools.build:gradle:4.0.0'    }
(2)、allprojects{}闭包里是项目本身需要的依赖,比如项目所需的maven库。`

闭包下包含:maven库repositories

maven库示列

 repositories {        maven { url 'http://maven.aliyun.com/nexus/content/repositories/releases/' }        google()        jcenter() //代码托管仓库        mavenCentral()    }
(3)、task clean(type: Delete){}

二. app模块下的build.gradle

(1)、apply 声明是Android程序 ,apply plugin表示应用了一个插件,一般分为两种类型:application程序木块和library模块
(2)、android{}闭包下的配置
 defaultConfig {        applicationId "com.yxj.xxxx"        minSdkVersion rootProject.ext.android.minSdkVersion        targetSdkVersion rootProject.ext.android.targetSdkVersion        versionCode 0000        versionName "1.1.0000"        ndk {//            1、armeabi-v7a:第七代及以上的ARM处理器,2011年以后生产的大部分Android设备都使用。//            2、arm64-v8a:第8代、64位ARM处理器,很少设备,三星GalaxyS6是其中之一。//            3、armeabi:第5代、第6代的ARM处理器,早期的手机用的比较多。//            4、X86:平板、模拟器用得比较多。//            5、X86_64:64位得平板。//            abiFilters 'armeabi', 'x86',"armeabi-v7a", "arm64-v8a",'x86_64'        }       //Android应用程序默认具有SingleDex支持,这限制了您的应用程序只有65536个方法(引用).所以multidexEnabled = true只是意味着你现在可以在你的应用程序中编写超过65536个方法(引用).        multiDexEnabled true    }
signingConfigs {        debug {            storeFile file('F:\\Android_work\\work\\xxx.keystore')            storePassword '000000'            keyAlias = 'keyAlias'  //key的别名            keyPassword '000000'            v1SigningEnabled true            v2SigningEnabled true        }        release {           storeFile file('F:\\Android_work\\work\\xxx.keystore')            storePassword '000000'            keyAlias = 'keyAlias '//key的别名            keyPassword '000000'            v1SigningEnabled true            v2SigningEnabled true        }    }
lintOptions {        // true--关闭lint报告的分析进度        quiet true        // true--错误发生后停止gradle构建        abortOnError false        // true--只报告error        ignoreWarnings true        // true--忽略有错误的文件的全/绝对路径(默认是true)        //absolutePaths true        // true--检查所有问题点,包含其他默认关闭项        checkAllWarnings true        // true--所有warning当做error        warningsAsErrors true        // 关闭指定问题检查        disable 'TypographyFractions','TypographyQuotes'        // 打开指定问题检查        enable 'RtlHardcoded','RtlCompat', 'RtlEnabled'        // 仅检查指定问题        check 'NewApi', 'InlinedApi'        // true--error输出文件不包含源码行号        noLines true        // true--显示错误的所有发生位置,不截取        showAll true        // 回退lint设置(默认规则)        lintConfig file("default-lint.xml")        // true--生成txt格式报告(默认false)        textReport true        // 重定向输出;可以是文件或'stdout'        textOutput 'stdout'        // true--生成XML格式报告        xmlReport false        // 指定xml报告文档(默认lint-results.xml)        xmlOutput file("lint-report.xml")        // true--生成HTML报告(带问题解释,源码位置,等)        htmlReport true        // html报告可选路径(构建器默认是lint-results.html )        htmlOutput file("lint-report.html")        //  true--所有正式版构建执行规则生成崩溃的lint检查,如果有崩溃问题将停止构建        checkReleaseBuilds true        // 在发布版本编译时检查(即使不包含lint目标),指定问题的规则生成崩溃        fatal 'NewApi', 'InlineApi'        // 指定问题的规则生成错误        error 'Wakelock', 'TextViewEdits'        // 指定问题的规则生成警告        warning 'ResourceAsColor'        // 忽略指定问题的规则(同关闭检查)        ignore 'TypographyQuotes'    }
  compileOptions {        //配置 Java 编译参数:        sourceCompatibility JavaVersion.VERSION_1_8        targetCompatibility JavaVersion.VERSION_1_8                // Java 编译器标志参数:        compilerArgs.addAll(['-Xlint:unchecked', '-Xlint:deprecation'])                //配置 Kotlin 编译参数:         kotlinOptions {         jvmTarget = "1.8"         freeCompilerArgs += ['-Xopt-in=kotlin.RequiresOptIn']        //配置 C 语言编译参数:         apply plugin: 'cpp'         cppCompilerArgs.add('-std=c99')         cppCompilerArgs.add('-Wall')        //配置 C++ 编译参数:         apply plugin: 'cpp'         cppCompilerArgs.add('-std=c++11')         cppCompilerArgs.add('-Wall')    }
  1. minifyEnabled:表明是否对代码进行混淆,true表示对代码进行混淆,false表示对代码不进行混淆,默认的是false。
  2. proguardFiles: 指定混淆的规则文件,这里指定了proguard-android.txt文件和proguard-rules.pro文件两个文件,proguard-android.txt文件为默认的混淆文件,里面定义了一些通用的混淆规则。proguard-rules.pro文件位于当前项目的根目录下,可以在该文件中定义一些项目特有的混淆规则。
  3. buildConfigField:用于解决Beta版本服务和Release版本服务地址不同或者一些Log打印需求控制的。例如:配置buildConfigField(“boolean”, “LOG_DEBUG”, “true”),这个方法接收三个非空的参数,第一个:确定值的类型,第二个:指定key的名字,第三个:传值,调用的时候BuildConfig.LOG_DEBUG即可调用。
  4. debuggable:表示是否支持断点调试,release默认为false,debug默认为true。
  5. jniDebuggable:表示是否可以调试NDK代码,使用lldb进行c和c++代码调试,release默认为false
  6. signingConfig:设置签名信息,通过signingConfigs.release或者signingConfigs.debug,配置相应的签名,但是添加此配置前必须先添加signingConfigs闭包,添加相应的签名信息。
  7. renderscriptDebuggable:表示是否开启渲染脚本就是一些c写的渲染方法,默认为false。
  8. renderscriptOptimLevel:表示渲染等级,默认是3。
  9. pseudoLocalesEnabled:是否在APK中生成伪语言环境,帮助国际化的东西,一般使用的不多。
  10. applicationIdSuffix:和defaultConfig中配置是一的,这里是在applicationId
    中添加了一个后缀,一般使用的不多。
  11. versionNameSuffix:表示添加版本名称的后缀,一般使用的不多。
  12. zipAlignEnabled:表示是否对APK包执行ZIP对齐优化,减小zip体积,增加运行效率,release和debug默认都为true。
         buildTypes {            //发布版本类型        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }        // 测试类型,给测试人员        debug{           minifyEnabled false           proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }        // 本地类型,和后端联调使用       local{            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }
   // 配置packagingOptions    packagingOptions {        //exclude:用于排除特定的资源文件或类文件,使其不被打包到最终的APK文件中。可以使用通配符来匹配文件名或文件路径        exclude 'META-INF/LICENSE.txt' // 排除名为LICENSE.txt的文件        exclude 'META-INFarmeabi/libYTCommon.so"        doNotStrip "*/armeabi-v7a/libYTCommon.so"        doNotStrip "*/x86/libYTCommon.so"        doNotStrip "*/arm64-v8a/libYTCommon.so"    }
sourceSets {        main {            manifest.srcFile 'AndroidManifest.xml'            java.srcDirs = ['src']            resources.srcDirs = ['src']            aidl.srcDirs = ['src']            renderscript.srcDirs = ['src']            res.srcDirs = ['res']            assets.srcDirs = ['assets']            jniLibs.srcDirs = ['libs']           //如果我们不想用默认的,可以重新指定,按如下方式就可以修改目录布局结构            java {                srcDir 'src/java' // 指定源码目录            }            resources {                srcDir 'src/resources' //资源目录            }          }
aaptOptions {        //给 aapt 执行时添加额外参数,添加的参数可通过 aapt --help 进行查看        additionalParameters '--auto-add-overlay'    additionalParameters '--rename-manifest-package','com.zinc.test'      // 会将包名更改为 com.zinc.test        //设置线程数        cruncherProcesses 4                //设置是否无法找到配置条目,则强制aapt返回错误。        failOnMissingConfigEntry true       //设置忽略的资源      // 忽略掉 png 后缀的图像,只会排除 assets 下的资源,res下的资源不会排除    ignoreAssets "*.png"        //设置忽略的资源  noCompress 'foo', 'bar'        ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"        // 忽略掉 png 后缀的图像,只会排除 res 下的资源,assets下的资源不会排除     ignoreAssetsPattern '*.png'          //是否对资源进行压缩,默认不对"jpg"、"png"压缩。如果传入’’,则表明全部资源不会进行压缩。压缩后的资源可以通过 aapt l -v apk路径 进行查看压缩的细节。      // 不对 bat 进行压缩     noCompress '.bat'    }
(3)、dependencies{}闭包是指在开发 Android 应用程序时,所需的各种库和模块。这些依赖项可以帮助开发者实现不同的功能和特性,例如网络请求、图形绘制、数据库操作等
dependencies {    //引入文件树,这里会把libs目录下所有的jar包自动引入    implementation fileTree(dir: 'libs', include: ['*.jar'])    implementation 'com.android.support:appcompat-v7:26.1.0'    implementation 'com.android.support.constraint:constraint-layout:1.1.2'    testImplementation 'junit:junit:4.12'    androidTestImplementation 'com.android.support.test:runner:1.0.2'    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'    //引入指定jar包文件,这里传递是相对路径即相当于module下的build.gradle文件的路径,如以下写法则是引入与module下的build.gradle同路径下的jar包    implementation files('crazymo.jar')    //引入依赖库Module方式1 implementation project(':libcrazymo')   implementation project(path:':libcrazymo') }

gradle3.0中compile依赖关系已被弃用,被implementation和api替代,provided被compile only替代,apk被runtime only替代。

来源地址:https://blog.csdn.net/u011932309/article/details/132447410

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯