我如何告诉 proguard 假设某个包未被使用?

2024-01-05

我正在尝试为我的 Android 项目设置 proguard。我们在代码中使用了 Netty 库的一些片段,我想使用 Proguard 来完全删除我知道未使用的代码片段。

有没有什么方法可以告诉 proguard 假设某个包(或类)从未使用过,因此不应包含在输出 JAR 中?请注意,我是not谈论从混淆中排除某些代码(这就是-keep配置选项做),我完全在谈论removing输出中的一个类。

Edit:正如下面 pst 所建议的,我尝试使用-whyareyoukeeping参数来确定 proguard 用于确定使用的类的代码路径。它不会改变数十个警告的输出。

我还尝试使用文件过滤器-outjars正如 pst 所建议的。这也没有导致任何变化,因为算法仍然假设将加载该类,并且仅在错误确定“已使用”类之后才应用过滤器。

需要明确的是:警告来自我们包含在 Android 项目中的第三方库中的类。我们不执行任何将加载这些类的代码,并且如果 proguard 找到一个代码路径,它确实假设这些类已加载,我想明确地说它确实加载了not使用这些类。


在 outjar 上指定过滤器的另一种方法是在 injar 上指定过滤器:

-injars in.jar(!unwanted/package/**)

这样,您就不会不必要地拖入此包引用的任何类,因为过滤是在任何处理之前发生的。

ProGuard 现在会警告缺少的类,因此您必须指定它是可以的:

-dontwarn unwanted.package.**

您应该小心使用这些选项,因为抑制警告并不一定能让问题消失。正如 pst 所写,如果您过滤掉实际需要的类,您将得到 NoClassDefFoundsErrors。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我如何告诉 proguard 假设某个包未被使用? 的相关文章

  • Android Studio Canary 3.4 Canary 4:错误:功能插件不支持variant.getApplicationId()

    自从我在新版本上更新了我的项目以来Android Studio 3 4 金丝雀 4 gradle 同步失败 因为 ERROR variant getApplicationId is not supported by feature plug
  • 服务如何在后台运行 - Android

    今天的采访中我被问到了这个问题 什么是服务 我对此的回答是 Service 是 Android 的基本组件 它没有 UI 并且在后台运行 Service 是否在主线程上运行 不 那么它是如何在后台运行的呢 我心里一片空白 有人可以解释一下如
  • 在 Android 中使用 awt

    我有一个绘制图表的 Java Swing 应用程序 它使用 Graphics2D 调用和 awt 对象 例如 Rectangle 等 在某些时候我可能想将其移植到 Android 上 我知道我无法在 Android 上使用 Graphics
  • 如何使用具有三种布局的视图翻转器?

    我目前正在使用ViewFlipper我的主要活动有两种不同的布局 我想使用第三种布局 但我只能找到showNext and showPrevious 命令 有人可以告诉我如何使用来实现第三种布局吗ViewFlipper 为您制作了一个示例
  • 在 Android 市场中以编程方式检查我的应用程序版本

    目前 我正在启动时检查应用程序版本代码 并将其与我的服务器上的最新版本代码进行匹配 并根据此匹配 我发送用户从 Android 市场获取最新更新 它运行良好 但我的问题是我必须手动更改服务器上的最新版本代码 并且我不知道新版本何时发布APK
  • 不使用eclipse安装Android模拟器

    如何在没有eclipse的电脑上安装android模拟器 android模拟器无需安装eclipse 只需下载 android sdk 并安装即可 安装android SDK之前必须先安装JDK 完成后安装成功 您将获得两个应用程序 SDK
  • 突出显示列表视图项目

    我需要在触摸列表视图项目时突出显示它并保持突出显示状态 我尝试了我发现的一切 但没有任何效果 这是我的代码 这是列表视图
  • 将项目添加到 android 框架的设置中

    我正在 android 框架中工作 我想向 android 操作系统中的现有设置添加一个项目 您能告诉我如何执行此操作吗 首先阅读有关偏好活动 http developer android com reference android pre
  • 使用 RoboSpice 有没有办法从异常中获取 HTTP 错误代码?

    我正在编写一个使用 RoboSpice 的应用程序 在请求侦听器 onRequestFailure SpiceException arg0 中 有没有办法确定该错误是由于发生 401 HTTP 错误而导致的 我有一个后端服务 当令牌过期时
  • 在活动启动期间优雅地处理屏幕方向变化

    我正在尝试找到一种方法来正确处理设置活动 其中活动的方向是根据启动它的意图中的数据确定的 这是一款用户可以选择关卡的游戏 其中一些是纵向的 一些是横向的 我面临的问题是setRequestedOrientation ActivityInfo
  • Android 音乐播放器应用程序:如何为服务中运行的媒体播放器设置完整的侦听器?

    我正在编写一个音乐播放器应用程序 我在服务中有 MediaPlayer 对象 问题是 我不知道如何从服务更新用户界面 例如 我想更新当前歌曲的剩余时间 但是 因为 MediaPlayer 正在服务 我无法设置 MediaPlayer 对象的
  • 在 Android 中使用 AES 加密的最佳实践是什么?

    我为什么问这个问题 我知道人们对 AES 加密存在很多疑问 即使对于 Android 也是如此 如果您在网络上搜索 会发现很多代码片段 但在每个页面上 在每个 Stack Overflow 问题中 我都发现了另一个具有重大差异的实现 所以我
  • 旋转 Google 地图中的两层标记图标

    在我的应用程序中 我向地图添加了一定数量的标记 如下所示 private fun addMarker googleMap GoogleMap location Location val options MarkerOptions optio
  • 检测设备方向

    我需要检测 Android 设备方向变化 而无需手动处理传感器数据 同时保持活动方向坚持某个方向 onConfigurationChange不会起作用 因为会让我的活动不旋转 通过使用传感器数据来检测方向变化 我认为这是轮子的发明 因为 A
  • 如何让surfaceview透明

    大家好 我想让我的 DrawingSurface 视图透明 我尝试了很多东西 但它不起作用 这是我的 xml 代码 使我的表面视图透明
  • onStart() 到底做了什么? - 安卓[重复]

    这个问题在这里已经有答案了 一段时间以来 我一直想知道 onStart 函数在 android 生命周期中的确切作用 网上的大多数资源只是说 它在您的活动在屏幕上可见之前被调用 但到目前为止我所做的应用程序我从未使用过onStart 我在
  • 带有工具提示的搜索栏 android

    Hi All 我正在尝试使用工具提示自定义 android 搜索栏 如给定的图像 有没有办法在搜索栏中添加带有拇指的文本视图 或任何其他想法 Thanks 我们可以通过拇指的界限来做到这一点 并在seekbar的progressChange
  • 在 VideoView 开始播放之前,TextView 不会显示

    我编写了一个android应用程序 它有两个视图 TextView上方的VideoView 位于ScrollView内部 我遇到了一个问题 直到VideoView开始播放视频 TextView才显示 并且我有一个黑屏 这可能需要很长一段时间
  • FCM 主题是否适合更多用户?

    我对使用主题消息有点困惑 我的场景是根据通知触发一些作业 请帮助我更多地了解这一点 如果我们正在处理大量用户 则可以使用 FCM 主题向用户发送通知 我们可以只使用数据消息和主题消息吗 使用主题发送的消息是否保证送达 我在 FCM 文档中看
  • 使用 PDFBox 在 Android 中创建 PDF

    我正在尝试通过我的 Android 应用程序创建 PDFPDFBoxapi 但出现以下错误 java lang NoClassDefFoundError org apache pdfbox pdmodel PDDocument 我已经将以下

随机推荐

  • SQL 开发人员:为其他用户生成数据库文档

    我的数据库中有一个管理员用户 管理员用户可以访问所有数据库对象 我没有管理员用户的凭据 我的应用程序还具有普通用户 该用户对管理员用户的许多对象具有访问权限 选择 删除授权等 因此 在 SQL 开发人员中 当我使用普通用户创建连接时 我可以
  • 我可以在不创建临时数组的情况下移动 NSMutableArray 中的对象吗?

    我以为我已经拥有了 void shiftArray NSMutableArray mutableArray NSUInteger shift for NSUInteger i 0 i lt mutableArray count i NSUI
  • 如何增加 Android 应用程序的堆大小?

    我正在编写一个使用多个 3D 模型的 Android 应用程序 这种带有纹理的模型会占用大量内存 我发现制造商对应用程序可以使用的堆大小设置了限制 例如我的平板电脑三星 Galaxy Tab 8 9 P7310 可以占用 64MB 内存 有
  • 解决非图(绘图方块)

    今天是星期五下午 让我们来解决一个有趣的谜题 算法问题 我最喜欢的任天堂 DS 游戏之一是绘图方块 DS http en wikipedia org wiki Picross Ds 游戏非常简单 它涉及解决称为连线图 http en wik
  • ViewModel 还是 ViewBag?

    我对 MVC4 EF5 和 ASP Net 相当陌生 而且我似乎无法在任何地方找到好的答案 基本上 一切都应该通过视图模型完成还是也可以合并视图包 假设我有一个填充下拉列表的方法 并且我正在使用视图模型来表示视图的输出 我可以使用吗View
  • Github API 的错误凭证

    我有以下脚本 我正在尝试在 bash 中测试它 使用curl 做几件事 一是创建一个新的存储库 第二个 尚未实现 是从 json 中获取 git url返回 我不确定我的是否parse json函数将让我这样做 然后最后将示例提交消息推送到
  • 如何从同一个域名为 Kubernetes 后端和 Firebase 托管前端提供服务?

    我想使用我已有的三个组件来设置网络应用程序 在domains google com 上注册的域名 前端 Web 应用程序托管在 Firebase 托管上并由以下位置提供服务example com 负载均衡器后面的 Kubernetes 集群
  • 仅缩放背景图像

    我只想缩放背景图像 prod img hover webkit transform scale 1 04 moz transform scale 1 04 o transform scale 1 04 ms transform scale
  • 如何在调试模式下启动解决方案中的另一个项目

    我有一个 WCF 主机应用程序 它由带有一些动态参数的可执行文件启动 现在我想调试这个应用程序 但由于它是由其他工具启动的 因此 VS NET 不会在调试模式下加载它 是否可以编写一些仅调试代码来强制它在调试模式下执行此过程 以便它会遇到断
  • ggplot2 facet_wrap 错误:谓词必须是闭包

    将其加载到新的 R 会话中 我不明白出了什么问题 library ggplot2 ggplot mtcars aes mpg wt geom point facet wrap cyl Error Error predicate must b
  • URL 通过 Route 53 使用 AWS S3 静态站点转发而不是屏蔽

    当使用 Route 53 让带有别名的 A 记录指向 S3 静态站点时 域会转发到 S3 url 而不是屏蔽它 当我输入 example com 我希望它在我的存储桶中显示 index html 页面 相反 它会将我转发到 example
  • 使用 PHP Excel 转换 Excel 日期

    我正在从 Excel 中读取日期 其格式为 12 5 2012 日 月 年 使用此代码来读取 使用 PHP EXCEL PHPExcel Style NumberFormat toFormattedString value A YYYY M
  • 将“Object.defineProperty”与 RangeError 一起使用

    我正在尝试使用Object defineProperty更新我的obj对象有一个get and set访问器打开obj name var obj Object defineProperty obj name get function ret
  • 为什么 tkinter 中 widget.winfo_rootx() 和 widget.winfo_rootx() 总是 0?

    这是我的代码 from tkinter import root Tk a Button text str 1 a place x 100 y 100 widget x widget y a winfo rootx a winfo rooty
  • EDMX 模型与我的数据库模型不同步

    我使用的是代码优先方法 但我不确定为什么会遇到这个问题 这是我的 AccountViewModel 的一部分 public class LoginViewModel Required Display Name User name publi
  • JSON 输入意外结束 Angular 2(4) http get 请求

    事情是这样的 我在 ASP NET Core 上有一个 REST api网络 API 服务器 当我尝试获取数据时在邮递员 我像这样向控制器发出 http post 请求http localhost 5000 api account logi
  • 单击第一个图表中的数据点时,dc.js 访问多个图表中的数据点

    使用同一数据集的不同维度 屏幕上会显示三个 dc js 折线图 当用户单击任何折线图上的数据点时 我希望从所有其他图表 包括单击的图表 中找到并返回该对应点的数据值 我还尝试 在鼠标悬停时 将悬停的数据点的圆圈填充颜色更改为红色 以及所有其
  • Mac 中的 Homebrew 安装出现错误

    我想在我的 mac 系统上安装 homebrew 但无法安装 安装过程给我错误 error could not lock config file usr local Homebrew git config Permission denied
  • 即使使用了 --keep-empty,交互式变基后也会删除空提交

    我在使用时遇到一些问题 keep empty的选项git rebase 而我是 不确定我是否误解了此选项的作用 或者存在错误 这是一个最小的例子 Setup 创建一个新的 Git 存储库和一个初始的 不相关的提交 git init echo
  • 我如何告诉 proguard 假设某个包未被使用?

    我正在尝试为我的 Android 项目设置 proguard 我们在代码中使用了 Netty 库的一些片段 我想使用 Proguard 来完全删除我知道未使用的代码片段 有没有什么方法可以告诉 proguard 假设某个包 或类 从未使用过