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配置的资料请关注我们其它相关文章!

时间: 2022-11-15

Android MaterialAlertDialogBuilder修改按钮属性

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

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 Jetpack Compose开发实用小技巧

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

Android开发ProGuard使用技巧掌握

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

Android开发获取手机内网IP地址与外网IP地址的详细方法与源码实例

在进行Android应用开发过程中,有时候会遇到获取当前Android设备所使用的网络IP地址的场景,有时候需要本地的网络IP地址,即局域网地址,更多的时候是需要当前网络的真实的对外IP地址,即真实的网络地址,如大数据分析时往往需要Android设备上传本地的外网地址.本文对各种IP地址的获取进行了总结. 首先用大家比较熟悉的电脑端局域网地址和外网地址的获取方式对比一下:(1).电脑端局域网地址获取方式,可以通过在终端命令行输入ipconfig进行查看,如下图IPv地址标识的就是本机的局域网地址

解析Android开发优化之:从代码角度进行优化的技巧

通常我们写程序,都是在项目计划的压力下完成的,此时完成的代码可以完成具体业务逻辑,但是性能不一定是最优化的.一般来说,优秀的程序员在写完代码之后都会不断的对代码进行重构.重构的好处有很多,其中一点,就是对代码进行优化,提高软件的性能.下面我们就从几个方面来了解Android开发过程中的代码优化. 1)静态变量引起内存泄露 在代码优化的过程中,我们需要对代码中的静态变量特别留意.静态变量是类相关的变量,它的生命周期是从这个类被声明,到这个类彻底被垃圾回收器回收才会被销毁.所以,一般情况下,静态变量

Android开发小技巧篇之集合

1.对于过多的控件,功能类似,数量又多的,可以用include方法.在实现应用中,可以把控件放入List集合中. private void initView() { // TODO Auto-generated method stub pwd1 = (EditText) findViewById(R.id.pwd_et_6_1); pwd2 = (EditText) findViewById(R.id.pwd_et_6_2); pwd3 = (EditText) findViewById(R.i

Android开发中的简单设置技巧集锦

本文实例总结了Android开发中的简单设置技巧.分享给大家供大家参考,具体如下: 1开机图片: android-logo-mask.png android-logo-shine.png 这两个图片一个在上一个在下 ./out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/classes/assets/images/android-logo-shine.png ./frameworks/base/core

Android开发中Flutter组件实用技巧

目录 正文 简化 Assert 管理 更容易 imports 从按钮上移除飞溅效果 更简单的平台小工具 可见性小工具 正文 今天我将向您展示 4 个非常有用的 Flutter 技巧,您可以立即应用到您的项目.我不会向您展示任何包或扩展,就像我通常做的那样,但是非常简单,但是非常有用的提示! 简化 Assert 管理 管理 Assert 可能非常困难.如果你想在你的应用程序中多次使用一个图像,你必须一次又一次地指定路径.但是有一个简单得多的解决方案.创建一个 App Assets 类,用于存储所有

Android开发组件flutter的20个常用技巧示例总结

目录 1.map遍历快速实现边距,文字自适应改变大小 2.使用SafeArea 添加边距 3.布局思路 4.获取当前屏幕的大小 5.文本溢出显示省略号 6.一个圆角带搜索icon的搜索框案例 7.修改按钮的背景色 8.tab切换实例 9.点击事件组件点击空白区域不触发点击 10.使用主题色 11.往安卓模拟器中传图片 12.控制text的最大行数显示影藏文字 13.去掉默认的抽屉图标 14.图片占满屏 15.倒计时 16.固定底部 17.添加阴影 18.隐藏键盘 19.获取父级组件大小 20.点

Android开发Dart Constructors构造函数使用技巧整理

目录 参考 正文 什么是构造函数? 缺省构造函数 ー Class() 私有构造函数ー Class._() 命名构造函数ー class.Named() 私有命名构造函数ー class._Named () 工厂构造函数ー factory class Class() 参考 https://dart.dev/guides/language/language-tour#factory-constructors https://www.freecodecamp.org/news/constructors-i

分享40条Android开发的优化建议

以下是开始Android编程的好方法: 1.找一些与你想开发的功能类似的代码: 2.调整它,尝试让它变成你想要的: 3.回顾开发中遇到的问题 4.使用StackOverflow来解决遇到的问题 对每个你想实现的东西重复上述过程.采用这种方法能够激励你,因为你在保持不断迭代更新,在这个过程里面你会学到很多.当然,当你发布应用的时候你还要去做一些更深入的东西. 从一些能够正常编译的代码到成为一个应用程序,这是一个质的飞跃,比起iOS,Android则表现的更加明显.当iOS应用发布的时候,实际上只是

Android开发实现模仿360二维码扫描功能实例详解

本文实例讲述了Android开发实现模仿360二维码扫描功能的方法.分享给大家供大家参考,具体如下: 一.效果图: 二.框架搭建 1.首先,下载最新zxing开源项目. 下载地址:http://code.google.com/p/zxing/ 或 点击此处本站下载. 2.分析项目结构,明确扫描框架需求.在zxing中,有很多其他的功能,项目结构比较复杂:针对二维码QRCode扫描,我们需要几个包: (1)com.google.zxing.client.android.Camera 基于Camer

Android开发实现图片平移、缩放、倒影及旋转功能的方法

本文实例讲述了Android开发实现图片平移.缩放.倒影及旋转功能的方法.分享给大家供大家参考,具体如下: 解析: 1)根据原来的图片创建新的图片 Bitmap modBm = Bitmap.createBitmap(bm.getWidth()+20, bm.getHeight()+20, bm.getConfig()); 2)设置到画布 Canvas canvas = new Canvas(modBm); 3)使用矩阵进行平移- Matrix matrix = new Matrix(); ma