Android基础之Gradle

本文的意义:理解 Gradle,并了解Gradle 在 Android 的构建过程中的作用。

一:Gradle简介

Gradle是一个自动化项目构建工具,它使用基于Groovy的语言来声明项目配置,不是传统的XML。

Android项目中包含以下gradle文件

build.gradle:build.gradle文件有两种类型。一种是project;一种是module,module可能有多个。

在project的build文件中,我们可以添加一些子module所共有的一些配置,就不需要单独在每一个子module中进行配置了。

在module的build文件中,是生成对module自身构建时候的一些配置选项。

config.gradle:config.gradle是我们自定义的gradle文件,可以定义常量,比如我们引用的第三方库、版本号、name等。

gradle-wrapper.properties:配置我们项目使用的gradle的版本号

gradle.properties:项目属性的配置文件。可以配置是否使用AndroidX,定义一些常量。

settings.gradle:settings.gradle用于指定Gradle在构建应用时将哪些模块包括在内。

local.properties:ndk和sdk的存储路径

 

二: Android中Gradle可以做什么

Android的build过程,是编译源代码和应用资源文件,然后把他们打包成可应用于测试、部署、签名和分发的apk文件。Android studio可以使用gradle这个高级构建工具来自动化执行和管理构建流程。我们可以自动化配置gradle文件,实现特定功能。

我们来介绍在build.gradle文件中一些常用的配置。

1.buildTypes构建类型

可以设置不同的构建类型,release、debug、自定义名称等。

2.productFlavors:产品风味

productFlavors可以构建不同的应用版本,可以设置不同的包名称。通过productFlavors的配置,我们可以进行多渠道打包。

productFlavors {

        demo {

            applicationId "com.example.myapp.demo"

            versionName "1.0-demo"

        }

        full {

            applicationId "com.example.myapp.full"

            versionName "1.0-full"

        }

    }

3、dependencies依赖项 

//依赖我们本地的module

 compile project(":mylibrary")

 //远程的二进制依赖项

 compile 'com.android.support:appcompat-v7:25.1.0'

 //本地二进制依赖方式,将检测我们的本地的libs中的jar文件

 compile fileTree(dir: 'libs', include: ['*.jar'])

 //javaTest依赖

 testCompile 'junit:junit:4.12'    

 //AndroidTest依赖

 androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'



当我们添加了一个依赖,该依赖依赖了其他的依赖,而我们想把其中的一个依赖去掉。compile方法可以接受一个闭包参数,我们可以利用这个闭包来将其中的部分剔除掉。

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {

        exclude group: 'com.android.support', module: 'support-annotations'

    })



 

4、生成so

ndk{

    moduleName "hello"       //生成的so文件名字,调用C程序的代码中会用到该名字

    abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种平台下的so库

}

Gradle在执行的时候会自动的从lib目录下找相应的C/C++文件,生成相应的so文件。

5、ProGuard代码混淆

ProGuard 还可优化字节码,移除未使用的代码指令,以及用短名称混淆其余的类、字段和方法。混淆过的代码可令您的 APK 难以被逆向工程

//开启代码压缩

minifyEnabled true

每次执行完成ProGuard之后,都会产生如下文件

dump.txtAPK 中所有类文件的内部结构。

mapping.txt 提供原始与混淆过的类、方法和字段名称之间的转换。

 seeds.txt 列出未进行混淆的类和成员。 

usage.txt 列出从 APK 移除的代码。 这些文件保存在 /build/outputs/mapping/release/。

对于其中一些类,我们不想对其进行混淆的,需要我们在ProGuard 配置文件中添加一行 -keep 代码。例如:

-keep public class MyClass

 

三:Gradle可以生成插件

参考文章:https://juejin.im/post/5a6dbdf06fb9a01cbe65907e

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要修改Android项目中的Gradle配置,可以按照以下步骤进行操作: 1. 打开Android Studio,并打开你的项目。 2. 在项目结构中,选择File -> Project Structure。 3. 在Project选项卡下,可以指定Gradle的版本。你可以选择已经安装的Gradle版本,或者通过指定Gradle的分布URL来下载指定版本的Gradle。\[2\] 4. 如果你选择使用Gradle wrapper,你可以在项目的gradle/wrapper/gradle-wrapper.properties文件中编辑distributionUrl属性来指定Gradle的分布URL。\[2\] 5. 确保你的电脑上已经安装了Java环境,并设置了GRADLE_HOME环境变量,指向Gradle的安装目录。同时,将GRADLE_HOME/bin加入到PATH环境变量中,这样你就可以在任意位置使用gradle命令了。\[3\] 6. 如果你想查看当前项目使用的Gradle版本,可以在命令行中运行gradle -v命令。\[3\] 通过以上步骤,你就可以修改Android项目中的Gradle配置了。 #### 引用[.reference_title] - *1* *3* [android构建工具gradle基础知识](https://blog.csdn.net/honeysx/article/details/123565622)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Android GradleAndroid Plugin for Gradle、SDK Build Tools](https://blog.csdn.net/qq_38056514/article/details/127255403)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值