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

史上最全Android build.gradle配置教程

当我们创建一个Android项目时会包含两个Android build.gradle配置详解文件,如下图: ?...那么就可以根据提示,然后使用以下方法将重复文件剔除,比较常用是通过exclude去除重复文件,例如: packagingOptions{ //pickFirsts做用是 当有重复文件 打包会报错.../LICENSE'] //merges何必 当出现重复文件 合并重复文件 然后打包入apk //这个是有默认值得 merges = [] 这样会把默默认值去掉 所以我们用下面这种方式 在默认值后添加...pickFirsts做用是 当有重复文件 打包会报错 这样配置会使用第一个匹配文件打包进入apk // 表示当apk中有重复META-INF目录下有重复LICENSE文件 只用第一个 这样打包就不会报错...pickFirsts = ['META-INF/LICENSE'] //merges何必 当出现重复文件 合并重复文件 然后打包入apk //这个是有默认值得 merges = [] 这样会把默默认值去掉

3.7K30

史上最全Android build.gradle配置详解(小结)

当我们创建一个Android项目时会包含两个Android build.gradle配置详解文件,如下图: ?...那么就可以根据提示,然后使用以下方法将重复文件剔除,比较常用是通过exclude去除重复文件,例如: packagingOptions{ //pickFirsts做用是 当有重复文件...= ['META-INF/LICENSE'] //merges何必 当出现重复文件 合并重复文件 然后打包入apk //这个是有默认值得 merges = [] 这样会把默默认值去掉...pickFirsts做用是 当有重复文件 打包会报错 这样配置会使用第一个匹配文件打包进入apk // 表示当apk中有重复META-INF目录下有重复LICENSE文件 只用第一个 这样打包就不会报错...pickFirsts = ['META-INF/LICENSE'] //merges何必 当出现重复文件 合并重复文件 然后打包入apk //这个是有默认值得 merges = [] 这样会把默默认值去掉

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

创建Android库方法及Android .aar文件用法小结

2、在出现 Create New Module 窗口中,依次点击 Android Library 和 Next。还存在一个用于创建 Java 库选项,可以构建传统 JAR 文件。...'lib-proguard-rules.txt' } ... } 默认情况下,应用模块会使用发布构建,即使在使用应用模块调试构建类型亦是如此。...例如,您应用 build.gradle文件中以下代码段会使应用在应用模块于调试模式下构建使用调试构建类型,以及在应用模块于发布模式下构建使用发布构建类型: dependencies {...注:Jack 工具链仅支持 ProGuard 部分压缩和模糊选项。 AAR 文件详解 AAR 文件文件扩展名为 .aar,Maven 工件类型也应当是 aar。...文件本身是一个包含以下强制性条目zip文件: /AndroidManifest.xml /classes.jar /res/ /R.txt 此外,AAR 文件可能包含以下可选条目一个或多个: /

2.9K10

Android 代码混淆规则

gradle 在四处地方寻找重复资源: src/main/res/ 路径 不同构建类型(debug、release等等) 不同构建渠道 项目依赖第三方库 合并资源按照如下优先级顺序: 依赖 ->...main -> 渠道 -> 构建类型 举个例子,假如重复资源同时存在于main文件夹和不同渠道中,gradle 会选择保留渠道中资源。...同时,如果重复资源在同一层次出现,比如src/main/res/ 和 src/main/res2/,则 gradle 无法完成资源合并,这时会报资源合并错误。...code/allocation/variable:混淆所采用算法(谷歌推荐算法) -libraryjars libs(*.jar;):添加支持jar(引入libs下所有jar包) -renamesourcefileattribute...:是否进行Zip压缩优化 shrinkResources:是否移除未被使用资源 proguardFiles:混淆规则配置文件 proguard-android.txt:AndroidStudio默认自动导入规则

2.4K10

在 Android Instant App(安卓即时应用程序)中启用 ProGuard (混淆)

ProGuard(混淆)集成到 Android 构建中,新 com.android.feature Gradle 插件(用于构建 AIA (安卓即时应用程序)模块)根本不存在,并且 ProGuard...问题剖析 - 两种不同构建方式 在一个典型场景中,在模块化应用程序使用 Gradle 插件后,您项目结构将如下所示: ? 一个典型多功能安装 + 即时应用程序项目。...如果你愿意,不必为每个功能创建单独规则文件,您可以使用相对路径(例如「../ aia-proguard-rules.pro」)将所有功能模块指向单个文件。 3....它为资源文件和 Android Manifest 中使用类生成所需 ProGuard(混淆)规则,但在构建即时应用程序情况下,它们最终可能会出现在错误模块中。...要解决这个问题,首先要启用 ProGuard(混淆)来开发即时应用程序(例如使用刚刚在前面步骤中设置构建方式)。

2.5K30

Gradle for Android简要指南

,虽然在Gradle 出现之前和之后都有对应更快编译工具出现,但是 Gradle 优势就在于它是亲儿子,Gradle 编译比较慢,这和它编译过程有关,但是最近伴随着 Android Studio2.0...如果您正在构建您应用程序,你要在外部释放发行版中,打包签署您应用程序一起发布密钥库。要创建一个发布密钥库,了解Android Studio中签署您应用程序。 4....产生最终APK之前,打包使用zipalign工具来优化您应用程序在设备上运行时,使用较少内存。...ProGuard 构建系统使您可以指定每个构建变量不同ProGuard规则文件。构建系统可以运行ProGuard构建过程中缩小和模糊处理类。...-2.2.1-all.zip 修改URL也可以对gralde插件版本控制。

77720

开发工具总结(2)之全面总结Android Studio2.X填坑指南

针对gradle个版本工具来说,如果不选择更新直接原来Gradle Version中Gradle工具,再加上.gradle库中没用该版本,as会创建这样库,有时候这样库会下载不完整,导致上面的问题...原因:有3种情况可以导致这种错误发生: (1)导了重复jar包,或者导入了不同版本同名jar包。...解决办法: (1)把重复jar包删除掉,Rebuild Project,就OK了,如果,还有其他问题,那证明你app下build.gradle依赖配置就有问题。...-keepattributes EnclosingMethod 2.查看第三方jar有没有重复利用,发现并没有。...---- 25. failed to complete gradle execution问题 使用Android Studio创建新项目后,一直出现 “Failed to complete Gradle

1.7K10

Android多模块构建合并aar解决方案

前言 前段时间,我在实现gradle多模块构建遇到一个问题,以前我们基本上是以jar包形式让开发者集成到工程中使用,但自从Android Studio中有了多module概念,而我们SDK也是分了多个模块进行构建...它文件后缀名是.aar,它本身是一个zip文件,强制包含以下文件: /AndroidManifest.xml /classes.jar /res/ /R.txt 另外,AAR文件可以包括以下可选条目一个或多个.../proguard.txt /lint.jar 具体看到这里看如何创建一个Android Library: https://developer.android.com/studio/projects/...如果你只是简单实用一些类库,你可以直接使用*.jar文件,而如果你想既想使用类库,又想实用资源,那么你就可以创建一个Android Library,使用它生成*.aar文件。...jar文件使用方式我们应该比较熟悉了,将它复制到工程libs目录下,然后在gradle中添加以下脚本: dependencies { compile fileTree(include: ['

4.4K30

Android Studio3.1.0升级问题记录

Android Studio3.1.0升级问题记录 每次升级Android Studio,一般情况下Gradle版本也会相应升级,我之前Android Studio 3.0.1、Gradle 是4.1...[com/c/a/a/a/a.class == 69.jar:com/ta/utdid2/b/a/a.class] 翻译过来如下: 重复类,即类所在包名和类名都相等 一般情况下不会写包名和类名相同类...,我猜测一定是Jar包重了,仔细找了一下,发现两个library中都使用了 阿里httpdnsjar包,只不过是Jar版本不一样,旧版本中其中一个library中使用了 provided 编译...… 解决办法一: 两个library中都添加 utdid4all-1.1.5.3_proguard.jar 使用 compileOnly 关键字编译; 解决办法二: 两个library中都不添加 utdid4all...-1.1.5.3_proguard.jar; 解决办法三: 在app中添加一个 utdid4all-1.1.5.3_proguard.jar 进行编译即可; 至此,以上几个错误都解决完了~ 总结 我们应该理解

84420

Android App瘦身实战

res/ 存放资源文件,例如:drawable、layout等等 assets/ 应用程序资源,应用程序可以使用AssetManager来检索该资源 classes(n).dex classes文件是...其中,Proguard Configuration是AAPT工具为Manifest中声明四大组件以及布局文件中(XML layouts)使用各种Views所生成ProGuard配置。...压缩代码 可以通过开启ProGuard来实现代码压缩,可以在build.gradle文件相应构建类型中添加: minifyEnabled true 例如,常见一段build.gradle脚本。...使用VectorDrawable对象,100字节文件可以生成屏幕大小清晰图像,但系统渲染每个VectorDrawable对象需要大量时间,较大图像需要更长时间才能出现在屏幕上。...因此只有在显示小图像才考虑使用矢量图形。 WebP 如果AppminSdkVersion>=14(Android 4.0+)的话,可以选用WebP格式,因为WebP在同画质下体积更小。

1.7K80

Android Gradle 插件

使用它可以很轻松执行以下操作: 自定义,配置和扩展编译流程。 使用相同项目和模块为你应用创建多个具有不同功能 APK。 在不同源集之间重复使用代码和资源。...使用 Android studio 创建一个工程,可以得到以下目录: image.png 我们重点放在项目的配置脚本文件上,大部分配置是在这里。 这是一个标准多项目的 Gradle 目录。....gitignore Git 忽略配置 gradle/wrapper 目录是 Gradle Wrapper 使用目录 gradle-wrapper.jar 是执行 Gradle Wrapper 使用...Gradle 配置脚本 proguard-rules.pro 配置Proguard 混淆规则; AndroidManifest.xml Android 清单文件;常见配置有四大组件,使用权限; app...//默认配置,它是一个 ProductFlavor defaultConfig { //应用程序ID,创建包名,可以更改。

1.2K20

Android插件化基础3----Android编译打包流程详解

官方流程.png 虚线方框是打包APK操作,现在开发Android都是使用Android Studio基于gradle来构建项目,所有打包操作都是执行gradle脚本来完成,gradle编译脚本具有强大功能...设备上安装,签名apk文件有两种情况: 在调用应用程序时,也就是我们通常称为debug模式签名,平时开发时候,在编译调试程序时会自己使用一个debug.keystore对apk进行签名 正式发布应用程序打包进行签名...retrace.jar主要是在debug使用。...混淆之后jar文件执行过程如果出现异常,生成异常信息将很难被解读,方法调用堆栈都是一些混淆之后名字,通过retrace.jar可以将异常堆栈信息中方法名还原成混淆前名字,方便程序解决bug...-dontwarn指令、这取决于混淆第三方SDK是否出现警告,需要时候再机上。

2K22

Android中Gradle使用

任务执行:每次测试都需要生成apk包进行测试,生成apk包是一个可以重复流程,也可以称为任务,这个过程就叫做任务执行。Ant相当于把这相同任务给自动化实现了。....gradle\wrapper\dists 目录 gradle-x.xx-all 文件夹 Gradle在android中基本使用 Gradle在android中基本使用 1.mobile-stage...') } 2.mobile-stage/app/gradle/ gradle-wrapper.properties 声明了gradle目录与下载路径以及当前项目使用gradle版本 3.mobile-stage...build.gradle中添加maven仓库位置 2.项目中build.gradle引用jar 用冒号分割: groupId:artifactId:version 在项目中就可以使用jar了...生成签名后apk App/build.gradle 配置之后每次再build就会生成签过名包了 Gradle其它操作 Project 和 Task Gradle中有两个基本概 念:project

81030

【Android 安全】DEX 加密 ( 代理 Application 开发 | 解压 apk 文件 | 判定是否是第一次启动 | 递归删除文件操作 | 解压 Zip 文件操作 )

apktool | dex2jar | enjarify | jd-gui | jadx ) 【Android 安全】DEX 加密 ( Proguard 简介 | Proguard 相关网址 | Proguard...文件操作 ---- 解压操作主要使用 java.util.zip 包下 api ; 首先 创建 zip 文件 , 获取 zip 文件中条目 ; 在最后解压完毕后 , 关闭该 zip 文件 ;...// 获取 zip 压缩包文件 val zipFile = ZipFile(zip) // 获取 zip 压缩包中每一个文件条目...() 遍历压缩包中文件 , 如果 apk 压缩包中含有以下文件 , 这些文件是 V1 签名文件保存目录 , 不需要解压 , 跳过即可 , 如果该文件条目 , 不是目录 , 说明就是文件 , 向刚才创建目录中写出文件...val zipFile = ZipFile(zip) // 获取 zip 压缩包中每一个文件条目 val entries = zipFile.entries

1.2K00

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

Fragments Layout 布局是 XMLs代码,组织好它们 在layoutout XMLs布局使用styles文件来避免使用重复属性 使用多个style文件来避免单一一个大style文件...你项目引用第三方项目库(例如,library-foobar),拥有一个顶级包名app从第三方库项目区分你应用程序是非常有用。...密码 在做版本release你app build.gradle你需要定义 signingConfigs.此时你应该避免以下内容: 不要做这个 . 这会出现在版本控制中。....") } } } 使用 Maven 依赖方案代替使用导入jar包方案 如果在你项目中你明确使用jar文件,那么它们可能成为永久版本,如2.1.1.下载jar包更新他们是很繁琐...你是否使用ProGuard取决你项目的配置,当你构建一个release版本apk,通常你应该配置gradle文件。

55610

详解Android使用Gradle统一配置依赖管理

在介绍使用 Gradle 统一配置依赖管理前我们先来简单介绍一下 Gradle, Gradle 是一个基于 JVM 构建工具,也是一款非常灵活强大构建工具,支持 jcenter、maven、Ivy...Groovy 编写 而在我们 Android studio 中默认就是使用 Gradle 来构建管理我们工程,在我们工程构建过程中通常会创建很多个 Module 来对我们工程进行功能以及业务上解耦...(也就是模块化开发),这时候可能就会存在一个问题,就是每个 Module 以及 Module 中一些公用库依赖可能会出现版本不统一问题,包括使用编译版本,SDK 版本等,导致不能打包,这里可以使用...build.gradle 修改即可 方法二 因为每个人都有自己配置习惯,这里我们再提供一种配置以供大家参考,这里我们在主项目的根目录下创建 config.gradle 来配置需要相关配置信息如下...config.gradle 里面的配置信息: /** * 在主项目的根目录下创建config.gradle文件 * 在这里单独处理统一依赖问题 * 注意需要在根目录build.gradle

2.1K40
领券