当前位置: 首页 > news >正文

网站建设是基础服务吗黄页游戏引流推广网站

网站建设是基础服务吗,黄页游戏引流推广网站,网站建设好了怎么在百度可以搜到,智慧团建电脑版登录本文内容主要分为以下两个部分: 帮助各位同学初步了解 Gradle、Wrapper 简要介绍 Android Studio 中与 Gradle 相关的文件,它们之间如何协同配合工作以及相关的参数介绍 PS:本人是刚刚起步学习 Android,如有错误之处&#xff0c…

本文内容主要分为以下两个部分:

  1. 帮助各位同学初步了解 Gradle、Wrapper

  2. 简要介绍 Android Studio 中与 Gradle 相关的文件,它们之间如何协同配合工作以及相关的参数介绍

PS:本人是刚刚起步学习 Android,如有错误之处,烦请大家指正

话不多说,我们正式开始吧

目录

什么是 Gradle

什么是 Warpper

Gradle 的工作流程

gradlew 与 gradlew.bat 的区别

其余的 Gradle 相关文件

build.gradle(项目级)

常见参数及意义

该文件的作用

build.gradle(模块级)

常见参数及意义

该文件的主要作用

项目级与模块级 build.gradle 的区别

为什么需要多个 build.gradle 文件

setting.gradle


什么是 Gradle

在创建Android 项目时,一般都需要进到这个页面进行配置,我们重点关注一下下面被红框框住的这一行,这是最初与 gradle 相关的配置,其中的重点词汇就是 build、language、Groovy DSL,我们接下来从这三个词汇入手。

  • Gradle 既是一种工具,也是一种语言(Language),它负责项目的自动化构建(build)

  • 与 C++、Java等通用编程语言(GPL)不同,Gradle 是一种基于 Groovy(一种用于JVM的敏捷开发语言)的特定领域语言DSL

  • 通过 gradle,程序员就不需要进行一些复杂的操作,便可以完成项目的编译。

注(小知识):

  1. GPL(General Purpose Language):通用编程语言,是指被设计为各种应用领域服务的编程语言。通常通用编程语言不含有为特定应用领域设计的结构。包括 Objective-C、Java、Python 以及 C 语言等等。

  2. DSL(Domain Specific Language):特定领域语言,是指通过在表达能力上做的妥协换取在某一领域内的高效能力的语言。

什么是 Warpper

  • 定义:wrapper 是 Android Studio 项目中用于管理 Gradle 版本的工具

Gradle 的工作流程

先简单介绍一下这些文件各自的作用:

  • gradle-wrapper.jar :核心执行器,负责下载和运行 Gradle。

  • gradle-wrapper.properties:配置下载的地址和存储位置。

  • gradlew / gradlew.bat:启动脚本,根据操作系统选择执行方式。

接下来我们来看一下这些文件是如何协同工作的,这里我们以 Ubuntu系统举例

当开发者运行 ./gradlew build时,流程如下:

  1. 解析 gradlew 脚本

    1. 根据其中的 CLASSPATH 去寻找 gradle-wrapper.jar (Wrapper 的实现文件)
      CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
  2. 读取 gradle-wrapper.properties
    1. 系统会去 gradle-wrapper.properties 中对应 zipStorePath 的文件夹去查找对应的 Gradle 版本,如果没有的话,就根据 distributionUrl 给出的链接去下载对应的版本

  3. 运行指定的 Gradle 任务

    1. 调用 Gradle :gradle-wrapper.jar 会启动解压后的 Gradle,执行用户输入的命令(如 buildassemble)。

    2. 构建项目 :Gradle 读取 build.gradle 文件,执行依赖解析、编译、打包等操作。

根据以上的信息,可以得出以下结论:

  • 通过指定固定版本的 Gradle ,保证了所有开发者在构建项目时都使用相同的 Gradle 版本,从而减少构建差异。

  • 但也有一些缺点,即不同的项目配置文件中配置的版本不一致的话,在开发环境中就会下载各种各样的gradle版本,会占用硬盘空间。

gradlew 与 gradlew.bat 的区别

场景Windows(gradlew.bat)Linux/macOS(gradlew)
运行构建任务gradlew.bat build./gradlew build
权限要求无需额外权限(直接运行)需赋予可执行权限:chmod +x gradlew

其余的 Gradle 相关文件

build.gradle(项目级)
  • 位于项目的根目录,用于配置整个项目的全局位置参数

常见参数及意义
// 配置 Gradle 插件本身的依赖和仓库。
buildscript {ext.kotlin_version = '1.8.0' // 定义全局变量供模块级 build.gradle 使用// 声明依赖库的下载源(如 Google 官方仓库、Maven 中央仓库)。repositories {google() // 使用 Google 的 Maven 仓库mavenCentral() // 使用 Maven Central 仓库}// 声明项目构建所需的工具依赖(如 Android Gradle 插件)(到 repositories 里给出的仓库里去寻找并下载)。dependencies {classpath 'com.android.tools.build:gradle:x.x.x' // Android Gradle 插件版本classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // Kotlin 插件}
}
该文件的作用
  • 统一管理多模块共享的配置(如仓库地址、插件版本)。

  • 通过 ext 定义全局变量,避免重复配置。

build.gradle(模块级
  • 位于模块目录下(如 applibrary 模块),用于配置该模块的构建细节。

常见参数及意义
plugins {alias(libs.plugins.android.application) // 应用模块插件alias(libs.plugins.kotlin.android) // Kotlin 插件alias(libs.plugins.kotlin.compose)
}android {namespace 'com.example.myapplication' // 模块的包名(用于代码引用)compileSdk 36 // 编译时使用的 Android SDK 版本defaultConfig {applicationId "com.example.myapplication" // 应用唯一标识(包名)minSdk 24 // 最低支持的 Android 版本targetSdk 36 // 目标 SDK 版本versionCode 1 // 应用版本号(整数,用于更新判断)versionName "1.0" // 应用版本名称(显示给用户)}testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled false // 是否启用代码混淆// 混淆规则文件proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}compileOptions {sourceCompatibility JavaVersion.VERSION_11 // 告诉编译器:主代码要使用Java 11的语法和特性targetCompatibility JavaVersion.VERSION_11 // 生成的字节码也要兼容JVM 11版本}kotlinOptions { // 要求Kotlin编译器生成的代码也要兼容Java 11,避免出现版本错位导致的运行时错误。jvmTarget = '11'}buildFeatures {// 开启Jetpack Compose的编译支持,令系统处理@Composable注解生成对应的UI代码。compose true}
}dependencies {/*implementation 是通用依赖,主程序的必需品,所有变体都能用。testImplementation 只在运行本地测试时运行。androidTestImplementation 专门处理运行在真机/模拟器上的测试依赖。debugImplementation 只在 debug 包生效。举个例子:当发布 release 版本时,debugImplementation 里的依赖就像隐身衣一样消失不见,而 testImplementation 的依赖永远不会出现在APK里。*/implementation libs .androidx.core.ktximplementation libs.androidx.lifecycle.runtime.ktximplementation libs.androidx.activity.composeimplementation platform(libs.androidx.compose.bom)implementation libs.androidx.uiimplementation libs.androidx.ui.graphicsimplementation libs.androidx.ui.tooling.previewimplementation libs.androidx.material3testImplementation libs.junitandroidTestImplementation libs.androidx.junitandroidTestImplementation libs.androidx.espresso.coreandroidTestImplementation platform(libs.androidx.compose.bom)androidTestImplementation libs.androidx.ui.test.junit4debugImplementation libs.androidx.ui.toolingdebugImplementation libs.androidx.ui.test.manifest
}

小知识:

  1. plugin 参数

    1. Gradle 并不是专门为 Android 服务,所以 Gradle 它本身是不提供对 Android Stduio 的任何构建功能的。但 Gradle 提供了插件机制,这种插件它提供里大量的任务类型、任务、属性等,而开发者只需要在 build.gradle 中使用 alias(插件名)即可引入该插件包含的所有的功能。

    2. Google 为了开发 Android 应用定制了一个插件 Android Plugin DSL。所以这一行指定了该构件文件应用的插件,Android 项目的构建都需要使用 libs.plugins.android.application 这个插件。

  2. 代码混淆与混淆规则文件

    1. 代码混淆:压缩、优化和混淆代码,减少APK体积并保护代码安全。

    2. 混淆规则文件:保持某些类不被混淆,自定义配置规则等。

    3. 代码混淆就像给代码加密:把类名 A 变成 a、方法名 doSomething 变成 a(),同时移除未使用的代码。这会让反编译后的代码变成天书,保护源码逻辑。

    4. 混淆规则文件就像加密指南:proguard-android-optimize.txt 是 Android 官方预设的安全规则,proguard-rules.pro是你的自定义规则。比如用 -keep class com.example.KeepMe 这行规则,就能让 KeepMe 类保持原样不被混淆。

该文件的主要作用
  • 决定模块的构建规则(如生成 APK/AAR)和功能支持(如 Kotlin、Jetpack Compose)。

项目级与模块级 build.gradle 的区别

配置项根目录 build.gradle模块级 build.gradle
作用范围全局配置,影响整个项目模块私有配置,仅影响当前模块
主要参数buildscript(仓库、插件依赖)android(模块构建参数)、dependencies(模块依赖)
插件类型仅声明构建工具插件(如 Gradle)应用具体插件(如 application、library)
依赖声明项目工具依赖(如 Gradle 插件)模块运行时依赖(如第三方库)

为什么需要多个 build.gradle 文件
  1. 模块化管理 :每个模块(如 app、library)可以独立配置构建参数(如 SDK 版本、依赖库)。例如,app 模块使用 compileSdk 34,而 library 模块使用 compileSdk 33。

  2. 复用与共享配置 :根目录的 build.gradle 统一声明仓库和插件版本等全局参数,避免多模块重复配置。

  3. 依赖隔离 :不同模块可以依赖不同的库版本,避免冲突。

setting.gradle

// 示例
rootProject.name = "My Application"
include ':app'

这里面包含了你的子项目,也就是你项目中的 module,假如刚新建好的项目那么就只包含一个 'app' module。如果你新建了其他 module,它也会包含在这里面。

在构建的初始化阶段,settings.gradle 会提供这次构建项目所要包含的哪些 module。

如果你新建一个 'demo' module 的话,这里就会变成

rootProject.name = "My Application" include ':app',':demo'

好啦,有关 Gradle 就先介绍到这里了,大家有任何疑问欢迎在评论区留言

希望大家生活天天开心,代码越写越好,艾薇巴蒂,我们下期再见啦!

http://www.dtcms.com/a/429857.html

相关文章:

  • 网页设计实训报告设计图wordpress 优化加速
  • 电子商务网站建设需求表新开传奇网站发布网孞
  • 大连公司企业网站建设遵义市网站建设
  • 网站开发计划书封面设计海口官网设计
  • 网站流量如何赚钱广州联雅做的网站怎么样
  • 滁州市工程建设网站做企业销售分析的网站
  • 做公众号可以看的网站海南省住建设厅网站报监的工程
  • 济宁营销网站建设美妆网页设计素材
  • asp.net网站结构网站建设的工作职责是什么
  • logo免费网站仙桃网站定制
  • 优化型网站的好处社交型网站首页面设计分析
  • 电商网站开发建设煎蛋wordpress
  • php网站开发实战教程新康家园网站建设
  • ai做漫画头像网站文章标签 wordpress
  • 建设网官方网站做微博网站
  • 官方网站建设 搜搜磐石网络app推广接单渠道
  • 企业品牌网站建设怎么做华强北做电子网站建设
  • 12388网站建设管理情况网站策划书我与音乐
  • 网站建设电话销售话术技巧漂浮广告网站
  • 天津市哪里有做网站的wordpress html5视频
  • 免费网站建设 百度收录人力资源三网站建设
  • 社区类网站建设网页制作与设计课本
  • 微信群推广平台有哪些安卓优化
  • 北京seo优化网站建设程序员参与洗钱网站建设
  • 没有网站怎么快速做cps网站区分
  • wordpress邮箱模板网站建设优化兼职
  • 如何查一个网站有没有做外链wordpress获取当前用户id
  • 做网站哪里找程序员jsp开发网站开发源码
  • 家用电脑怎么做网站wordpress 文字围绕图片
  • 网站布局建议免费搭建自己的官网