Android中Gradle常用的配置

Android.mk编译脚本 & AndroidManifest.xml编写及注释 更新时间: 2019.04.17 AndroidManifest.xml: android:sharedUserId="android.uid.systemui" //SystemUI属于系统apk coreApp="true" //SystemUI属于核心apk android:persistent="true" //SystemUI不会被KILL,即被KILL后会自动重... 阅读详情

1、Gradle是什么?

  1. Gradle是一个自动化构建工具
  2. 兼容Maven等仓库
  3. 基于Groovy的特定领域语言来声明名目设置

2、GradleWraper

  1. Gradle Wrapper是一个脚本文件
  2. 它会在没有安装Gradle的情况下为我们下载Gradle,之后我们就可以使用gradlew命令,像使用gradle一样来使用Gradle了
  3. GradleWraper简化了gradle的安装部署

3、 Gradle文件结构

  • settings.gradle:整个Project的配置文件,可以设置包含哪些module
  • build.gradle (Project的gradle文件):整个Project的配置文件
  • build.gradle(Module):Module的配置文件
  • gradle.properties:可以在 gradle.properties 文件中配置一些变量

4、Gradle命令

  • gradlew clan: 清除app目录下build文件夹

  • gradlew check:执行lint检查

  • gradlew assemble:打release或debug包

  • gradlew build:执行check和assemble两步

  • gradlew assembleRelease/gradlew assembleDebug: 打全部渠道的release或debug包

5、Gradle常见配置

1、指定仓库

repositories {
        jcenter()
}

2、指定依赖

dependencies {
        classpath 'com.android.tools.build:gradle:1.3.1'
    }

3、设置脚本运行环境

buildscript{}

4、 声明引用的插件

apply plugin: 'com.android.application'

6、设置Android项目的参数

android {
    // 编译SDK的版本
    compileSdkVersion 22
    // build tools的版本
    buildToolsVersion "23.0.1"

    //aapt配置
    aaptOptions {
        //不用压缩的文件
        noCompress 'pak', 'dat', 'bin', 'notice'
        //打包时候要忽略的文件
        ignoreAssetsPattern "!.svn:!.git"
        //分包
        multiDexEnabled true
        //--extra-packages是为资源文件设置别名:意思是通过该应用包名+R,com.android.test1.R和com.android.test2.R都可以访问到资源
        additionalParameters '--extra-packages', 'com.android.test1','--extra-packages','com.android.test2'
    }

    //默认配置
    defaultConfig {
        //应用的包名
        applicationId "com.example.heqiang.androiddemo"
        minSdkVersion 21
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }

    //编译配置
    compileOptions {
        // java版本
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

    //源文件目录设置
    sourceSets {
        main {
             //jni lib的位置
             jniLibs.srcDirs = jniLibs.srcDirs << 'src/jniLibs'
             //定义多个资源文件夹,这种情况下,两个资源文件夹具有相同优先级,即如果一个资源在两个文件夹都声明了,合并会报错。
             res.srcDirs = ['src/main/res', 'src/main/res2']
             //指定多个源文件目录
             java.srcDirs = ['src/main/java', 'src/main/aidl']
        }
    }

    //签名配置
    signingConfigs {
        debug {
            keyAlias 'androiddebugkey'
            keyPassword 'android'
            storeFile file('keystore/debug.keystore')
            storePassword 'android'
        }
    }

    buildTypes {
        //release版本配置
        release {
            debuggable false
            // 是否进行混淆
            minifyEnabled true
            //去除没有用到的资源文件,要求minifyEnabled为true才生效
            shrinkResources true
            // 混淆文件的位置
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            signingConfig signingConfigs.debug
            //ndk的一些相关配置,也可以放到defaultConfig里面。
            //指定要ndk需要兼容的架构(这样其他依赖包里mips,x86,arm-v8之类的so会被过滤掉)
            ndk {
                abiFilter "armeabi"
            }
        }
        //debug版本配置
        debug {
            debuggable true
            // 是否进行混淆
            minifyEnabled false
            //去除没有用到的资源文件,要求minifyEnabled为true才生效
            shrinkResources true
            // 混淆文件的位置
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            signingConfig signingConfigs.debug
            //ndk的一些相关配置,也可以放到defaultConfig里面。
            //指定要ndk需要兼容的架构(这样其他依赖包里mips,x86,arm-v8之类的so会被过滤掉)
            ndk {
                abiFilter "armeabi"
            }
        }
    }
    // lint配置 
    lintOptions {
      //移除lint检查的error
      abortOnError false
      //禁止掉某些lint检查
      disable 'NewApi'
    }
}

7、 几种依赖的区别

compile:我们最常用的依赖,编译时提供并打包进apk
provided:编译时提供但不打包进apk
在gradlew 3.0 中complie过期了,用implementation和api替代
api = compile
implemention:将该依赖隐藏在内部,而不对外部公开

8、为什么会有两套repositories和dependencies

  1. buildscript里面的那个是插件初始化环境用的,用于设定插件的下载仓库
  2. android 中是工程依赖的一些模块和远程library的下载仓库的

9、排除依赖传递,解决依赖冲突

  1. exclude: 设置不编译指定的模块,排除指定模块的依赖
  2. transitive:用于自动处理子依赖项,默认为true,gradle自动添加子依赖项。设置为false排除所有的传递依赖
  3. force:强制设置某个模块的版本。

10、Gradle打包时的Proguard

  • 通过在buildTypes中配置minifyEnable来开启和关闭proguard
  • 通过proguardFiles 来配置混淆参数与keep的内容
  • 混淆的作用:
    1. 压缩(Shrink):检测并移除代码中无用的类、字段、方法和特性(Attribute)。
    2. 优化(Optimize):对字节码进行优化,移除无用的指令。
    3. 混淆(Obfuscate):使用a,b,c,d这样简短而无意义的名称,对类、字段和方法进行重命名。
    4. 预检(Preveirfy):在Java平台上对处理后的代码进行预检,确保加载的class文件是可执行的。

11、依赖中的动态版本声明

dependencies {
    //依赖最新的1.x版本
    compile "org.codehaus.cargo:cargo-ant:1.+"
}

12、多渠道打包

  • 1、在AndroidManifest.xml配置mete-data

    <meta-data
        android:name="UMENG_CHANNEL"
        android:value="Channel_ID" />
  • 2、配置productFlavors

    android {  
        productFlavors {
            xiaomi {
                manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
            }
            _360 {
                manifestPlaceholders = [UMENG_CHANNEL_VALUE: "_360"]
            }
            baidu {
                manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
            }
            wandoujia {
                manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
            }
        }  
    }

    或者批量修改

    android {

    productFlavors {
        xiaomi {}
        _360 {}
        baidu {}
        wandoujia {}
    }  
    
    productFlavors.all { 
        flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] 
    }

    }


* 3、在APP内读取 mete-data 配置确定渠道

* 4、然后用 ./gradlew assembleRelease 这条命令会把Product Flavor下的所有渠道的Release版本都打出来。



### 13、[哪些不做混淆](https://www.cnblogs.com/zhangmiao14/p/7098168.html)

> 1. Android系统组件
> 2. JNI
> 3. 反射
> 4. WebView的JS调用
> 5. 内部类
> 6. Annottation
> 7. enum
> 8. 范型
> 9. 序列化
> 10. 第三方

### 14、[Gradle 生命周期](https://blog.youkuaiyun.com/u013626215/article/details/51490643)

> - 初始化阶段:会去读取根工程中setting.gradle中的include信息,决定有哪几个工程加入构建,
>   创建project实例,比如下面有三个工程: include ':app', ':lib1', ':lib2
> - 配置阶段:,会去执行所有工程的build.gradle脚本,配置project对象,一个对象由多个任务组成,
>   此阶段也会去创建、配置task及相关信息。
> - 运行阶段:根据gradle命令传递过来的task名称,执行相关依赖任务



### 15、[如何通过Gradle配置差异较大(20%差异)的多渠道包](https://www.jianshu.com/p/98c4e3de4417)

> 通过配置productFlavors,将区别代码放置在对应的问价下,gradle会自动打出相应包


来源: 极客熊猫
作者: Mikyou
链接: http://www.youkmi.cn/2020/01/01/android-zhong-gradle-chang-yong-de-pei-zhi/
本文章著作权归作者所有,任何形式的转载都请注明出处。

Android-系统预设-App,有什么难的?,flutter安装教程 编译可执行文件 LOCAL_MODULE_CLASS := EXECUTABLES 7、include $(BUILD_PACKAGE) 表示生成一个 apk,它可以是多种类型 BUILD_PACKAGE(既可以编apk,也可以编资源包文件,但是需要指定LOCAL_EXPORT_PACKAGE_RESOURCES:=true) BUILD_JAVA_LIBRARY(java共享库) BUILD_STATIC_JAVA_LIBRARY(java静态库) BUILD_EXECUTABLE(执行文件) BUIL 阅读详情

相关推荐

Android Studio下载及安装和Gradle的配置

android studio 下载及安装和gradle的配置

adminstate的博客 6万+

【android 应用】关于gradle的一份学习总结报告,请查收。

关于gradle你知道多少?快来查收这份gradle学习总结报告吧。

看图的博客 417

[Android Studio系列(五)] Android Studio手动配置Gradle的方法

1 问题(1) android sutdio第一次打开一个工程巨慢怎么办? (2) 手动配置Gradle Home为什么总是无效? (3) 明明已经下载了Gradle,配置了gradle home,为什么打开工程还是去自动下载Gradle?2 简介(1) Android Studio怎么知道该用哪个Gradle呢? AS一个项目所用的Gradle是由我们的工程中下面这个文件决定的: {yo

梧桐那时雨 10万+

Android之aapt

Android之aapt 在Android.mk中有LOCAL_AAPT_FLAGS配置项,在gradle中也有aaptOptions,那么aapt到底是干什么的呢? aapt即Android Asset Packaging Tool,在SDK的build-tools目录下。该工具可以查看,创建, 更新ZIP格式的文档附件(zip, jar, apk)。也可将资源文件编译成二进制文件,尽管你可能

寒江蓑笠的专栏 1万+

Android中Gradle常用配置

上面有提到过动态获得字段,但有些东西是在打包发布的时候用,有些则是在调试时用,需要区分不同的场景,定义不同的task。写在gradle.properies中,可以随意的定义key-value形式,此文件是gradle自动引入的。在manifest中可以有类似{appName}这样的占位符,在module的build.gradle中可以将其进行赋值。本文记录了一些常用的gradle配置,基本上都是平时开发中可能会使用到的,如果有新内容会不定时更新,附官网。可以用如下开关关掉这个选项,非特殊情况不最好不配置。

NotesChapter 1603

Android Gradle进阶配置指南

minifyEnabled true proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.txt’ } }签名配置: storeFile : keystore文件 storePassword : 密码 keyAlias : 别名 keyPassword : 别名密码 v2SigningEnabled : 启用V2签名方案 minifyEnabled : 是否开启混淆 shrinkResources : 是

adsvfmhlih的博客 2134

Android Gradle 常用配置,安卓开发内存优化

// sourceSets sourceSets { main { jniLibs.srcDirs ‘libs’ println “\nsourceSets 配置情况:” sourceSets.all { set -> println “[${set.name}]的文件是 ${set.java.srcDirs}” } } } } 自动签名 生成签名文件 Build -> Generate Signed Bundle / APK Next -> Create new… 填写路径,密码,别名

m0_66145060的博客 603

Android Gradle 常用配置

android {release {debuggable false // 不可调试zipAlignEnabled true // zipalign 优化,minifyEnabled = true 时生效shrinkResources true // 删除没有用到的资源,minifyEnabled = true 时生效minifyEnabled true // 开启混淆// 混淆规则。

2401_84149423的博客 1857

关于Android Studio的Gradle各项配置

配置插件仓库和插件获取策略。配置项目的依赖解析方式,确保依赖从官方仓库获取,避免本地仓库问题。设置了项目名称。表示项目包含一个名为app的子模块,适用于多模块项目。在国内可能会遇到的问题,就是网络问题,导致我们没法正常下载到所需的插件和以来,因而我们通常会添加镜像源google() // Google仓库,主要用于 Android 相关的插件mavenCentral() // Maven 中央仓库gradlePluginPortal() // Gradle 官方插件仓库。

qq1342753906的博客 1万+

Android gradle和gradle插件配置

在Android Studio(as)中选择File > Project Structure > Project菜单,配置gradle version(gradle版本),gradle plugin version(gradle插件版本) Gradle版本与对应的Gradle插件版本是有要求的,详见网址: https://developer.android.google.cn...

king_zh1的博客 2652

stm32H743基于CubeMX配置为双ADC多通道DMA规则采样

stm32H743的ADC支持的最大频率为36MHz,有相关资料上说是可以超频,具体技术细节不多讨论。 需求: 使用stm32H743的ADC采集5路ovrc

xtqbp的博客 4361

Android Studio 配置Gradle总结

一, 问题:①换个新电脑安装完Android Sutdio第一次打开一个工程巨慢怎么办? ② 手动配置Gradle Home为什么总是无效? ③ 明明已经下载了Gradle,配置了gradle home,为什么打开工程还是去自动下载Gradle?二 简介(1) Android Studio怎么知道该用哪个Gradle呢? AS一个项目所用的Gradle是由我们的工程中下面这个文件决定的

iblade的博客 8万+

深信服技术认证“SCCA-C”划重点:信服云托管云

该认证包括云数据中心基础、云计算基础、云计算关键技术、云计算交付和运维体系、云计算技术商业应用、信服云托管云、深信服超融合HCI、深信服桌面云aDesk、深信服分布式存储EDS、深信服应用交付AD。学习并获得SCCA-C认证后,可以具备深信服产品功能原理与实践,能够根据业务需求,协助完成云产品方案落地与实施;能够根据业务需求,完成深信服云产品的部署和管理的基本工作。为帮助大家更加系统化地学习云计算知识,高效通过云计算工程师认证,深信服特推出“SCCA-C认证备考秘笈”,共十期内容。

sangfor_edu的博客 613

Android Studio下载及安装和Gradle的配置(全网最全)

修改:gradle-wrapper.properties文件,如果想要指定版本的gradle,修改distributionUrl中的版本,只改后面的版本就行,防止自动下载慢,可以把提前下载的好的zip包,放到(C:\Users\Administrator.gradle\wrapper\dists\gradle-7.x.x-bin\6a41zxkdtcxs8rphpq6y0069z目录下,注意不要解压)。方法1:直接把构建好的apk文件,拖入到虚拟设备里,会自动安装。.ini文件是存放我们avd的位置。

Button12138的博客 1931

FPGA控制DDR读写(AXI4总线接口)

FPGA控制DDR读写

qq_42712308的博客 1万+

告别抖动与滞后:深入博能传动伺服DSC功能,用105报文提升多轴同步性能

本文深入解析博能传动伺服DSC功能如何通过105报文实现多轴同步性能提升,有效解决工业自动化中的抖动与滞后问题。详细介绍了DSC技术原理、105报文实现机制及多轴同步工程实践,帮助工程师优化伺服系统性能,实现绝对齿轮同步。

weixin_30394981的博客 184

android studio的gradle配置,Android Studio中Gradle基本配置详解

GradleAndroid Studio 使用 Gradle 构建工具,而 Gradle 继承了强大、灵活的 Ant 和 Maven 丰富的依赖管理,配置管理简单,脚本编写方便灵活,插件模块化。Gradle 构建工具是任务驱动型的构建工具,并且可以通过各种 Plugin 插件扩展功能以适应各种构建任务。对应 Android 项目的 Gradle 插件就是 Android Gradle Plugin...

weixin_32349577的博客 3860

永磁同步电机控制笔记:foc控制原理通俗讲义

引言 到此为止,永磁同步电机控制相关文章已经写了7篇,其中simulink仿真系列文章5篇,控制笔记系列文章2篇,恍惚间感觉少了一篇概论,在此插入一篇,也算是对入坑电机控制一年半来的知识梳理。 文章目录引言一、同步电机是怎么转起来的二、什么样的旋转磁场效率最高三、怎么精准控制旋转磁场的方向四、怎样调节dq轴电流 一、同步电机是怎么转起来的 永磁同步电机结构如下: 外围是定子绕组,中间为永磁体,设...

搞电机的博客 2万+

android studio 环境配置(网络配置、Gradle配置)

安卓开发环境 Android Studio Ladybug | 2024.2.1 Patch 2。下载的zip文件不用解压目录下面,再重新build,会自动解压。网络配置过后,gradle不能下载的情况可以手动下载(官网"jdk版本 jdk 11。")存放到对应的目录下。

weixin_42115825的博客 2615

使用 SAP 自家的 AI 工具 Joule 辅助 SAP Fiori 应用开发

SAP Joule 不请自答,解释说标记了接口的 UI Component,具备进行异步内容创建的能力,比如其通过 rootView 分配的视图,在运行时可以异步创建。目前 SAP Business Application Studio 里的 SAP Joule 支持下面这八种上下文,绝大部分都和 SAP UI5 开发相关,剩下的则是代码仓库和 SAP 帮助文档的搜索。SAP Joule 回答的大意是:我只负责回答 SAP UI5 开发相关的问题,不要和我扯其他有的没的。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1093

Orin 10G PHY网络分析

由于调试用的10G PHY,所以整理下分析过程; 1.从Orin devkit 丝印来看RJ45 对应J17 通过搜索 MGBE_PHY_A_N 找到连接的10G PHY, 原理图上标明了MDIO address 为0x0, 使用的PHY 芯片为 Marvel 的AQR113C, 主要特性: 架构: 关键特征: MDC 连接了GPIO26_XFI0_MDC; MDIO 连接了GPIO25_XFI0_MDIO; 通过pinmux_config映射表也可以..

乐于分享 5650

Android Studio gradle 配置

说明:AndroidStudio 安装时,gradle的默认安装路径在: C:\Users\{用户名}\.gradle\wrapper\dists 如下图所示: 一、window 10 系统: 直接在path变量下增加gradle环境变量的配置: C:\Users\{用户名}\.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2

lebsharing的专栏 2248

面向高速Serdes的信号完整性优化:从封装 - 板级互连局限到封装内互连技术演进(一)

本文针对高速SerDes互连链路中的关键电磁效应展开研究:1)揭示了封装-主板互连结构在毫米波频段易激发谐振效应,导致53GHz传输陷波和阻抗偏移;2)提出基于本征模分析的谐振抑制方法,通过优化接地过孔排布使带宽突破95GHz;3)系统比较了方形/六边形BGA排布下23种差分对朝向的串扰特性,证实六边形阵列可将功率和串扰降低30%以上;4)论证了100GHz以上带宽需采用封装内互连架构,其较传统方案减少50%阻抗不连续节点。

小孟同学的博客 229

安卓开发-AndroidStudio-Gradle国内镜像配置

【代码】安卓开发-AndroidStudio-Gradle国内镜像配置。

无痕坚守本心的博客 3053

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: MySQL下载安装步骤
下一篇: Android Studio 快捷键
killerjava
博客等级 码龄22年 180粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值