Android Studio gradle配置packagingOptions打包so库重复

目录
  • 正文
    • pickFirst 匹配
    • doNotStrip 设置
    • merge 将匹配的文件都添加到APK中
    • exclude 过滤

正文

在安卓开发中,通常会使用到gradle来编译,在安卓项目的app目录下的build.gradle中是用来对编译进行配置的,packagingOptions 是其中的一个打包配置,常见的设置项有exclude、pickFirst、doNotStrip、merge。

在日常代码开发中,我们需要知其然,而知其所以然,本文章知识也是Android日常瘦身的的必备知识。

pickFirst 匹配

pickFirst,匹配到多个相同文件,只提取第一个,不能过滤aar和jar中的文件。

packagingOptions {
  pickFirst 'lib/arm64-v8a/libmsoptimize.so'
}

比如下面的打包日志出错,就是说有重复相同的so库,那么通过 pickFirst 来配置使用第一个就可以解决。 2 files found with path ‘lib/arm64-v8a/libmsoptimize.so’ from inputs:

doNotStrip 设置

doNotStrip 可以设置某些动态库不被优化压缩。

比如在使用华为HMS的相关服务时,他会让你注意不要压缩一些so库。

    packagingOptions {
        pickFirst 'lib/libc++_shared.so'
        doNotStrip "lib/armeabi/libYTCommon.so"
        doNotStrip "lib/armeabi-v7a/libYTCommon.so"
    }

merge 将匹配的文件都添加到APK中

merge 和pickFirst有些相反,会合并所有文件

    packagingOptions {
        merge '**/LICENSE.txt'
        merge '**/NOTICE.txt'
    }

exclude 过滤

exclude 过滤掉某些文件或者目录不添加到APK中

不能过滤aar和jar中的内容,比如项目中有些依赖库中有多余的so库,在App中并不是必需的,所以在打包的时候就可以将其过滤了

    packagingOptions {
        exclude 'META-INF/**'
        exclude 'lib/arm64-v8a/libmediaplayer.so'
    }

以上就是Android Studio gradle配置packagingOptions打包so库重复的详细内容,更多关于Android Studio gradle配置的资料请关注我们其它相关文章!

(0)

相关推荐

  • Android 一些常用的混淆Proguard

    一些公共的模板 ############################################# # # 对于一些基本指令的添加 # ############################################# # 代码混淆压缩比,在 0~7 之间,默认为 5,一般不做修改 -optimizationpasses 5 # 混合时不使用大小写混合,混合后的类名为小写 -dontusemixedcaseclassnames # 指定不去忽略非公共库的类 -dontskipno

  • SpringBoot结合ProGuard实现代码混淆(最新版)

    前言 研究ProGuard也花了两天时间,其实最主要的时间花在前面proguard读取jar包的时候相关jar冲突的问题,但是总的来说不用拆分SpringBoot项目并且实现代码混淆已经很舒服了. ProGuard集成  1.maven的配置 具体配置如下: <build> <finalName>${artifactId}</finalName> <plugins> <plugin> <groupId>com.github.wveng

  • Android开发Kotlin DSL使用技巧掌握

    目录 前言 什么是 DSL? 您使用任何 DSL 吗? 为什么我们使用 DSL? 我们如何编写自己的 DSL? 中缀 调用 现在,让我们讨论 Android 中 DSL 的用例和示例. 前言 在这篇文章中,我们将学习如何在您的 Android 项目中编写 Kotlin DSL. 这个文章会很长,所以花点时间,让我们一起来写你的 DSL.我们将讨论以下主题, 什么是简单英语中的 DSL? 您使用任何 DSL 吗? 为什么我们使用 DSL? 我们如何编写自己的 DSL 基本示例说明. 那么让我们开始

  • Android Jetpack Compose开发实用小技巧

    目录 前言 实用小技巧 如何移除View点击阴影 Text文本如何垂直居中 如何移除Button的点击阴影 Dialog宽度如何全屏 如何提升编码效率 前言 在Compose开发的过程中,我们会经常遇到一些看起来很简单却不知道如何处理的小问题,比如去除点击阴影.Dialog全屏等问题,本文记录了这些常见小问题的处理方式.如有更好方案欢迎大佬们交流探讨- 实用小技巧 如何移除View点击阴影 这里的View指的是除了Button系列的之外,如Button.TextButton等,也就是自身没有on

  • Android MaterialAlertDialogBuilder修改按钮属性

    目录 编写按钮属性 Dialog 风格设置 效果图 编写按钮属性 首先再values/themes 或者values/style在文件下编写按钮属性 buttonBarPositiveButtonStyle对应着确认按钮 buttonBarNegativeButtonStyle对应着取消按钮 <style name="AlertDialogTheme"> <item name="buttonBarPositiveButtonStyle">@s

  • Android开发ProGuard使用技巧掌握

    目录 前言 什么是 ProGuard? 它对我们的应用程序有什么用处? 如何在我们的项目中使用它? 前言 在构建 Android 应用程序时,我们可能在项目中使用了 ProGuard.在这篇文章中,我们将了解所有功能以及如何在 Android 中有效地使用 ProGuard. 因此,让我们将其分解为以下几点: 什么是 ProGuard? ProGuard 是 Android 中的免费 java 工具,它可以帮助我们执行以下操作, 缩小(缩小)代码:删除项目中未使用的代码. 混淆代码:重命名类.字

  • Android Studio gradle配置packagingOptions打包so库重复

    目录 正文 pickFirst 匹配 doNotStrip 设置 merge 将匹配的文件都添加到APK中 exclude 过滤 正文 在安卓开发中,通常会使用到gradle来编译,在安卓项目的app目录下的build.gradle中是用来对编译进行配置的,packagingOptions 是其中的一个打包配置,常见的设置项有exclude.pickFirst.doNotStrip.merge. 在日常代码开发中,我们需要知其然,而知其所以然,本文章知识也是Android日常瘦身的的必备知识.

  • Android Studio手动配置Gradle的方法

    Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置. 面向Java应用为主.当前其支持的语言限于Java.Groovy和Scala,计划未来将支持更多的语言. 下面是一些Gradle的功能 按约定声明构建和建设: 强大的支持多工程的构建: 强大的依赖管理(基于Apache Ivy),提供最大的便利去构建工程: 全力支持已有的 Maven 或者Ivy仓库基础建

  • Android studio gradle环境变量配置教程

    本文实例为大家分享了Android studio gradle环境变量配置的教程,供大家参考,具体内容如下 我的gradle 下载自动解压到了这个目录  C:\Users\jacli\.gradle\wrapper\dists\gradle-2.10-all\a4w5fzrkeut1ox71xslb49gst\gradle-2.10 1.右击"计算机"点击"属性"点击"高级系统设置" 你会看到系统属性 2.点击"环境变量"在弹

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

    前言 Android Studio是采用gradle来构建项目的,gradle是基于groovy语言的,如果只是用它构建普通Android项目的话,是可以不去学groovy的.当我们创建一个Android项目时会包含两个Android build.gradle配置详解文件,如下图: 一.Project的build.gradle文件: 对应的build.gradle代码如下: // Top-level build file where you can add configuration optio

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

    Android Studio是采用gradle来构建项目的,gradle是基于groovy语言的,如果只是用它构建普通Android项目的话,是可以不去学groovy的.当我们创建一个Android项目时会包含两个Android build.gradle配置详解文件,如下图: 一.Project的build.gradle文件: 对应的build.gradle代码如下: // Top-level build file where you can add configuration options

  • 浅谈Android Studio 的四种打包方式

    虽然这个博客的内容很简单,但是作为新手的我还是百度了好久才掌握了Android Studio的打包方式,希望对后来人有所帮助.打包的第一种方式 (1)在Android Studio 中选中app这么module,选择菜单栏""Build--Generate signed APK"" (2)弹出窗口 (3)创建密钥库及密钥,创建后会自动选择刚创建的密钥库和密钥(已拥有密钥库跳过) 点击"Create new..."按钮创建密钥库 Key store

  • Android Studio 超级简单的打包生成apk的方法

    本文介绍了Android Studio 超级简单的打包生成apk,分享给大家,也给自己留个笔记. 为什么要打包: apk文件就是一个包,打包就是要生成apk文件,有了apk别人才能安装使用.打包分debug版和release包,通常所说的打包指生成release版的apk,release版的apk会比debug版的小,release版的还会进行混淆和用自己的keystore签名,以防止别人反编译后重新打包替换你的应用. 简单点说就是给你的apk发身份证,上户口,防止和你长的一样的人,假冒你.这里

  • Android Studio Gradle依赖冲突解决方法

    前言 本文主要给大家介绍了Android Studio Gradle依赖冲突解决的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 1. 查看依赖树 ./gradlew dependencies 2. 解决依赖冲突 一旦在构建中存在依赖冲突,开发人员需要决定哪个版本的库最终包含在构建中,有许多解决冲突的方法. 1. 逐个排除 compile('junit:junit:4.12'){ exclude group : 'org.hamcrest',module:'hamcre

  • Android Studio安装配置、环境搭建详细步骤及基本使用的详细教程

    前言 Android Studio的安装配置及使用篇终于来啦~ 废话不多说,以下针对JDK正确安装(及其环境变量配置完毕,即Java开发环境下).Android Studio的安装,配置,以及创建工程.主题字体更换.窗口工具.布局.快捷方式等的基本使用逐一说明. 安装java 下载Java安装包(jdk,网上有很多下载地址,最好去官网下:https://www.java.com/zh_CN/),安装完后记得配置环境变量: 在"系统变量"新建一个变量名为JAVA_HOME的变量,变量值为

  • Android studio 下的APK打包失败问题解决办法

    Android studio 下的APK打包失败问题解决办法 今天遇到了一个奇怪的问题,本来在Android studio 1.4上运行的好好的程序,到了我更新完的Android studio 2.1上就打包失败了,但是用调试机直接运行则没问题. 最后在app下的build.gradle下加入了这样的一段代码就通过了: lintOptions { abortOnError false checkReleaseBuilds false // 防止在发布的时候出现因MissingTranslatio

随机推荐