编译与反编译,一对相辅相成的矛盾。反编译有时候会和不光彩的事情联系在一起,以致于编译者常常费劲心思,加大反编译的难度,比如采用混淆代码等方式。ProGuard正是这么一个工具:
The ProGuard tool shrinks, optimizes, and obfuscates your code by removing unused code and renaming classes, fields, and methods with semantically obscure name.
Android SDK整合了ProGuard,并在文档中用了一个章节来描述如何使用它。依照文档来实施,多半没有问题,不过在使用中有时候遇到了一些问题:(就是提示一些包找不到)
依照以往的惯例,发生warning,可忽视之,只有看到error,才会小紧张一把。不过这次的warning导致了BUILD FAILED,这回问题大了。
按照提示,在proguard.cfg里,加入-dontskipnonpubliclibraryclasses
,再试,还是有问题。
那就到官网找找答案吧,Manual -> Troubleshooting -> “Warning: can’t find referenced class”,找到这么一句话:try your luck with the -ignorewarnings option, or even the -dontwarn option.再对比日志信息,发现:
[proguard] Warning: net.poemcode.Digest: can’t find referenced class org.apache.CastleProvider
打开proguard.cfg,加入-dontwarn net.poemcode.**
,在打包一次。'
附件是default.properties和proguard.cfg 文件
分享到:
相关推荐
在Android开发中,引入第三方库是提升开发效率和优化代码质量的重要手段。这些库通常包含了丰富的功能,如网络请求、图片加载、数据持久化等,能够帮助开发者快速实现项目需求。下面将详细介绍如何在Android项目中...
Java的Jar包混淆器ProGuard v3.8是一款强大的代码优化和保护工具,主要用于Java和Android应用程序。在软件开发过程中,源代码的安全性和保密性至关重要,而ProGuard提供了一种有效的解决方案,它能够对编译后的字节...
特别是第三方库的类,可能需要特别处理。 8. **混淆规则冲突**:检查你的混淆规则,可能存在互相矛盾的规则,导致混淆失败。确保每个规则的优先级和覆盖范围清晰。 9. **ProGuard版本问题**:有时候,问题可能是...
- **保留必要的类和方法**:确保不会混淆那些与第三方库交互的类和方法,以免导致兼容性问题。 - **测试**:混淆后的代码可能会影响应用的功能,务必进行全面的测试。 - **维护规则文件**:随着项目的迭代更新,需要...
本教程将深入探讨代码混淆的概念、目的、工作原理,以及如何在项目中实现混淆,特别是针对第三方库(jar包)不进行混淆的处理方法。 代码混淆的主要目标是将源代码中的类名、方法名和变量名转换为无意义的简短...
开发者需要特别注意对第三方库的处理,因为混淆可能会导致库的功能失效。通过添加适当的`-keep`规则,可以确保关键类和方法不被混淆。 ### 5. ProGuard与其他工具集成 ProGuard可以轻松地与Maven、Gradle等构建...
例如,对于第三方库,通常需要设置不混淆,以免破坏其内部逻辑。同时,开发者还可以添加-keep选项来保留关键类和方法的可读性,如调试信息、错误日志等。 在使用ProGuard进行混淆时,需要在Android Studio的Gradle...
然而,需要注意的是,直接删除可能会导致潜在问题,因为有些库可能在运行时被JVM动态加载,或者被第三方组件间接引用。因此,在实际操作中,建议先进行充分的测试,确保删除jar包不会影响程序的正常运行。 此外,...
在Android开发中,了解如何使用这些反编译工具是非常有价值的,可以帮助开发者调试代码、学习第三方库的工作原理,以及提升对Android应用安全的理解。同时,为了保护自己的代码不被轻易反编译,开发者也可以采取代码...
- **反混淆工具**:通过第三方工具,如`dex2jar`和`jd-gui`,结合`mapping.txt`,可以将混淆后的APK还原为源码级别的日志,便于问题定位。 - **使用ProGuard反混淆**:虽然ProGuard本身并不提供反混淆功能,但开发者...
综上所述,隐藏Android应用的图标涉及到对AndroidManifest.xml的修改、启动方式的设计、反编译防护策略的实施,以及第三方安全服务的集成。这些步骤都需要开发者具备扎实的Android编程知识,以及对应用安全性的深入...
例如,为了避免混淆破坏第三方库的正常使用,可以使用`-keep`选项来保持特定类和方法的原始名称。此外,`-optimizationpasses`选项可以设置优化的次数,`-dontusemixedcaseclassnames`可以避免因大小写问题导致的...
这通常是因为第三方库(如ksoap2-android)包含了XML解析库,而Android系统本身也已经内置了相同的XML解析库,导致冲突。 为了解决这个问题,我们需要采取以下步骤: 1. **排除冲突的XML解析库**:在`proguard-...
这个过程对于开发者调试、学习第三方应用的工作原理或者安全研究人员检测潜在漏洞来说至关重要。下面我们将深入探讨APK反解码涉及的知识点。 1. **APK文件结构**:APK文件本质上是一个ZIP压缩包,包含以下主要部分...
如果支持多种格式的书籍,可能还会用到第三方库,如Apache POI(用于处理Office文档)或者PDFBox(处理PDF文件)。 最后,考虑到应用的性能和用户体验,源码中可能还涉及到数据缓存、异步加载、内存管理等高级技巧...
这里提到了`apktool`,它是Android应用反编译和编译的重要工具,可以从官方仓库或者第三方网站下载。`apktool`能够解包APK,展示其内部结构,包括XML文件、图片资源、布局文件等。 2. **反编译APK**: 使用`...
它能够快速地将字节码转换为可读的Java源代码,这对于调试和学习第三方应用的实现非常有帮助。只需拖放.dex文件到jd-gui窗口,即可浏览源代码。 2. **dex2jar-2.0**: dex2jar是一个命令行工具,用于将Dalvik ...
例如,可以标记某些类或方法不进行混淆,以保持调试信息或者防止破坏第三方库。 7. **日志记录**:ProGuard在处理过程中会生成详细的日志,记录了它所做的所有修改,这对于调试和问题排查非常有用。 在"proguard...
在处理第三方库和依赖时,需要注意它们可能已经内置了混淆规则。通常需要添加 `-keep` 规则以避免混淆破坏库的正常工作。例如,对于 Gson 库,可以添加如下规则: ```properties -keep class com.google.gson.** { ...