首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android Gradle必备基础知识

凭借Groovy的DSL和创新打包方式,Gradle提供了一个可声明的方式,并在合理默认值的基础上描述所有类型的构建。 Gradle目前已被选作许多开源项目的构建系统。...Build Types 默认情况下Android插件会自动将应用程序设置成有一个debug版本和一个release版本。 这就是通过调用BuildType对象完成。...Gradle支持远程和本地仓库。 注意:Gradle会直接识别所有的依赖关系。这就意味着如果一个依赖库自身又依赖别的库时,他们会被一起下下来。...配置 Android插件默认会使用ProGuard插件,并且如果Build Type中使用ProGuard的minifyEnabled属性开启的话,会默认创建对应的task。...控制 基本的Java项目有一系列的tasks一起制作输出文件。

88910

Android 开发的17个建议,紧跟Google官方,进阶必看!

无论你使用何种开发工具,只要确保Gradle和新的项目结构保持官方的方式构建应用程序,避免你的编辑器配置文件加入到版本控制。例如,避免加入Ant build.xml文件。...Retrofit,Picasso和OkHttp都是有同一家公司开发(注: 是由Square 公司开发),所以它们能很好的在一起运行。OkHttp 同样可以和Volley在一起使用 Volley....这个思想整体是保持layout属性(positioning, margin, sizing) 和content属性在布局文件中,同时将所有的外观细节属性(colors, padding, font)放...将一组相关的和重复android:****的属性放到一个通用的style中。 将一个大的style文件分割成多个文件 你可以有多个styles.xml 文件。...to your proguard config: 以防 ProGuard 剥离 需要的类和类成员,添加一个 keep选项在你的 proguard 配置文件中: -keep class com.futurice.project.MyClass

60410
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    《Android群英传 神兵利器》读书笔记

    《Android群英传 神兵利器》 - Android开发的工具使用 这是一本Android开发的工具书,里面的提到的工具基本上是每个Android开发者必备的技能,买这本书的起因是看到有介绍Gradle...和性能优化。...开发者能够控制的内存,基本在于堆和栈区域,他们的区别如下: 堆/栈 GC管理 存取速度 推 由GC系统控制。变量生命周期结束后,由GC系统决定何时回收 慢 栈 又虚拟机控制。...在Android2.3之后,系统修改了GC,将GC作为并发线程,同时每次GC并不会遍历整个Heap,而是只遍历一部分内存。...静态:方法区类的静态属性引用的对象。 常量:方法区中的常量引用的对象(final类型)。 获取更多内存 通过子线程 安卓系统的内存分配通过进程分配。

    57610

    通过Gradle为APK瘦身

    本文选自《Gradle for Android 中文版》,将研究如何设置Gradle 构建配置文件中的几个属性,以缩小APK 文件。...ProGuard 还会重命名你的类和字段。这一过程将保留应用的踪迹,让反编译工程师更加难以读懂代码。...在Gradle 的Android 插件中,其构建类型下面有一个叫作minifyEnabled 的布尔类型属性,你需要将它设置为true 来激活ProGuard : android { buildTypes...缩减资源 当给App 打包时,Gradle 和Gradle 的Android 插件可以在构建期间删除所有未使用的资源。如果你有旧的资源忘记删除,那么这个功能可能非常有用。...缩减资源的方式有两种:自动和手动。 1. 自动缩减 最简单的方式是在你的构建中设置shrinkResources 属性。

    76820

    第七章 Android Gradle插件

    ,和Android Studio完美无缝搭配的新一代构建系统,它不同于Eclipse+Ant的搭配,相比于旧的构建系统,它更灵活,更容易配置,还能很方便的创建衍生的版本--也就是我们常用的多渠道包。...Android Gradle插件就是属于第三方插件,它托管在Jcenter上,所以在应用他们之前,我们要先配置依赖classpath,这样当我们应用插件的时候,Gradle系统才能找到他们。...我们可以通过Android Studio创建一个App工程,创建后我们可以看到其大概工程目录结构如下: 其目录结构和Java工程相比没有太大的变化,proguard-rules.pro是一个混淆配置文件...的配置文件,我们可以通过它配置我们如何进行proguard混淆,比如混淆的级别,哪些类或者方法不进行混淆等等。...目录下的默认的proguard配置文件,在android-sdk/tools/proguard/目录下,文件名就是我们传入的参数的名字proguard-android.txt。

    98320

    Android Gradle实用技巧(四) | 自动瘦身APK文件

    因为是在这个过程中(构建时),Android Gradle构建系统会拿到所有的资源,不管是你项目自己的,还是引用的第三方的,它都一视同仁的处理,所以这个时机点可以控制哪些资源可以被打包,所以能解决第三方不使用的资源的问题...Resource Shrinking要结合着Code Shrinking一起使用,什么是Code Shrinking呢?...以前是一个汇总的日志输出,如果你想看详细日志,想知道哪些资源被自动清理了,可以使用–info标记,显示详细的Gradle信息,然后把和自动清理资源的日志过滤出来即可。我们可以通过如下命令实现: ....有没有觉得它和我们用ProGuard的配置文件是一样的,我们在ProGuard配置文件里配置保存一些不被混淆的类也是这么做的。...此外,对于res/raw/keep.xml这个文件我们不用担心,Android Gradle构建系统最终打包的时候会清理它,不会把它打包进Apk中的,除非你在代码中通过R.raw.keep引用了它。

    90420

    【Android 安装包优化】开启资源压缩 ( 资源压缩配置 | 启用严格模式的资源引用检查 | 自定义保留移除资源配置 | 资源压缩效果 )

    一、开启资源压缩 ---- 缩减、混淆处理和优化应用 ( 官方文档 ) : https://developer.android.google.cn/studio/build/shrink-code 资源压缩..., 而是将资源的文件保留 , 资源的实际内容替换掉 , 如 XML 文件资源 , 将其只保留一个根节点 ; 资源压缩配置是在 build.gradle 构建脚本中的 " android / buildTypes...; 如果保留多个资源使用逗号隔开 ; 使用 tools:discard 属性指定要移除的资源 ; 如果移除多个资源使用逗号隔开 ; 该设置支持 * 通配符 设置 , 五、完整配置 ---- 1、keep.xml 配置 res/raw/keep.xml 配置文件 : Proguard 混淆映射文件 mapping.txt ) 【Android 安全】DEX 加密 ( Proguard 混淆 | 将混淆后的报错信息转为原始报错信息 | retrace.bat

    1.4K40

    第八章 自定义Android Gradle工程

    接受一个boolean类型的值 8.3.6 proguardFile 是BuildType的一个方法,用于配置Proguard混淆使用的配置文件,和前面讲的defaultConfig中的proguardFile...一样 8.3.7 proguardFiles 是BuildType的一个方法,用于配置Proguard混淆使用的配置文件,该方法可以同时配置多个Proguard配置文件 8.3.8 shrinkResources...现在我们启用了混淆,但是Android Gradle还不知道按何种规则进行混淆,不知道要保留哪些类不混淆,要做到这些就需要我们的Proguard配置文件了,现在我们为我们的混淆指定配置文件。...根据我们8.3小结讲的知识,指定Proguard配置文件我们可以使用proguardFile方法,也可以使用proguardFiles方法,这个根据情况而定,看你是想指定一个还是想同时指定多个。...Android SDK默认为我们提供了两个Proguard配置文件,他们分别是proguard-android.txt和proguard-android-optimize.txt,一个是没有优化的,一个是优化的

    62310

    使用Gradle管理你的Android Studio工程

    在编写配置时,你可以像编程一样灵活,Gradle是基于Groovy的DSL语言,完全兼容JAVA Gradle入门 projects 和 tasks是Gradle中最重要的两个概念,任何一个Gradle...#proguard混淆配置 │ └── src #源代码,资源等 ├── build │ └── intermediates ├── build.gradle #工程构建文件 ├── gradle...配置文件,在这里可以为所有project以及module配置一些常用的配置。...'proguard.cfg' } } } minifyEnabled为true表示启用混淆,proguardFile是混淆使用的配置文件,这里是module根目录下的proguard.cfg...另外注意进行代码覆盖率插装的APK不能进行代码混淆,这个很简单,为feature flavor指定不混淆的proguardFile覆盖默认的proguardFile即可。

    1K40

    Android 构建过程分析

    另外,manifest在对文件进行合并后,还会根据build.gradle的设置覆盖相关属性。...Tool)处理后,会输出2个文件:一个R.java,为项目各资源分配了不同的id,将和java源码一起参与到后续的编译过程,id为4字节无符号整数,最高字节表示package id,次高字节表示type...下一步要进行的是通过javac命令将java源码编译成.class字节码,用以编译的classpath包含以下内容: android.jar,具体版本由targetSdkVersion指定; build.gradle...proguardFile 'proguard/proguard-rules.pro' } } 生成dex 如果项目涉及分dex,那在调用dx命令前,需要做一些准备的工作,把编译后的class...实际上是调用了proguard,只是要比常规的proguard简单一些,不执行混淆、优化跟预检几个步骤,只需要shrink即可,以allclasses.jar为输入、manifest_keep.txt为混淆配置文件

    3.2K40

    Gradle for Android简要指南

    前言 Android官网构建系统介绍https://developer.android.com/studio/build/index.html Gradle 是 Android 现在主流的编译工具...注意,Product flavors和Build Type是不一样的,而且他们的属性也不一样。所有的 product flavor 版本和defaultConfig 共享所有属性!...Manifest Entries 您可以在构建变量的配置清单文件的一些属性的值。这些构建值清单文件覆盖现有值。...ProGuard 构建系统使您可以指定每个构建变量不同ProGuard的规则文件。构建系统可以运行ProGuard的构建过程中缩小和模糊处理的类。...Gradle Wrapper提供了一个windows的batch文件和其他系统的shell文件,当你使用这些脚本的时候,当前gradle版本将会被下载,并且会被自动用在项目的构建,所以每个开发者在构建自己

    82220

    从0系统学Android--1.3创建你的第一个 Android 项目

    build 无需关心,编译产生的文件 gradle 这个目录下包含了 gradle wrapper 的配置文件,使用 gradle wrapper 的方式不需要提前将 gradle 下载好,而是会根据本地的缓存情况决定是否需要联网下载....gitignore 版本控制有关 build.gradle 全局的 gradle 构建脚本。 gradle.properties 全局的 gradle 配置文件。...在这里配置的属性会影响到项目中所有的 gradle 编译脚本。...gradlew 和 gradlew.bat 用来在命令界面中执行 gradle 命令的,其中 gradlew 是在 Linux 或者 Mac 系统中使用的,gradlew.bat 是在 Windows...下面是一个 android 大闭包,配置项目构建的各种属性。 compileSdkVersion 指定编译版本,这里指定的 24 表示使用 Android 7.0 系统的 SDK 编译。

    57420

    【Android 安装包优化】开启 ProGuard 混淆 ( 压缩 Shrink | 优化 Optimize | 混淆 Obfuscate | 预检 | 混淆文件编写 | 混淆前后对比 )

    文章目录 一、开启 ProGuard 混淆 二、混淆文件编写 三、混淆前后对比 四、build.gradle 完整配置文件 五、参考资料 一、开启 ProGuard 混淆 ---- 在 build.gradle...中 开启 Proguard , 在编译时 , 会自动进行如下一系列优化 : 压缩 Shrink : 检查 并 删除 没有使用的类 , 字段 , 方法 , 属性 ; 这里要注意 , 如果通过反射使用一个类时...’ 中 , 配置了两个文件, 其中 proguard-android-optimize.txt 是默认的混淆配置文件 , 由系统自动生成 ; proguard-rules.pro 是用户自己配置的混淆配置文件..., 在进行打包时 , 将这两个 ProGuard 配置文件进行合并处理 ; 二、混淆文件编写 ---- 混淆文件编写 : 引用的第三方库及服务 , 一般不进行混淆 , 去相应的开源页面 , 查找混淆配置...混淆后的报错信息 | Proguard 混淆映射文件 mapping.txt ) 【Android 安全】DEX 加密 ( Proguard 混淆 | 将混淆后的报错信息转为原始报错信息 | retrace.bat

    4K20

    【Android 安全】DEX 加密 ( Proguard 简介 | Proguard 相关网址 | Proguard 混淆配置 )

    代码进行如下操作 : 压缩 Shrink : 检测并 删除 没有使用的类 , 字段 , 方法 , 属性 ; 优化 Optimize : 优化字节码 , 移除无用指令 ; 混淆 Obfuscate :...Proguard 混淆配置 : -keep 指定 类 , 类成员 , 不被混淆 ; ( 类成员指的是类的成员方法 和 成员属性 ) -keepclassmembers 指定 类成员 不被混淆 , 类...和 类 方法 可以混淆 ; -keepclasseswithmembers 指定 类 和 类成员 , 不被混淆 , 前提是 指定的类成员存在 ; 开启 Proguard : 在 Module 下的 build.gradle...} } 上述 proguard-rules.pro 是开发者自己手动配置的 , 上述 proguard-android-optimize.txt 混淆配置文件是系统自动生成的 , 该 proguard-android-optimize.txt...: 如果没有上述脚本 , 即删除了 build 目录 , 进入 Gradle 界面 , 执行 app -> Tasks -> other -> extractProguardFiles 任务 , 即可重新生成混淆配置脚本

    81000

    ProGuard 在 Android 上的使用姿势

    在您读 ProGuard 手册时,您没必要看那些 输入 / 输出的部分,因为这些 Android Gradle 打包插件会替您指定输入源(您和第三方库的代码) 和 Android jar 库(您构建应用时用到的...您可以在 ProGuard 官网的表格看一下概览。 作为一个可选的方案来写 ProGuard 规则,您可以直接在某个不想被混淆和移除的类、方法、属性上添加 @Keep 注解。...“ 按钮), 您可以在 DEX 视图树中看到一些额外功能: 所有的名字都是混淆前的(即您可以看到原始的名字) 被 ProGuard 配置规则 kept 的包,类,方法和属性会显示成粗体 您可以开启 “...ProGuard 和 混淆后的堆栈 我之前提及到,在构建过程中 ProGuard 会在处理类文件时输出映射关系和日志文件。当您需要保留构建产物时,您应当保存好这些文件和 APK 在一起。...不过有个更好的方法,第三方库的维护者们如果发布的库是 AAR ,那么可以指定规则打包在 AAR 中并会在应用构建时自动暴露给构建系统,通过添加下面几行代码到库模块的 build.gradle 文件中:

    2.6K40
    领券