我的问题与构建一个dexguarded Android库有关,其中包含共享对象文件(*.so)。SO文件是我们在库中使用的内部对象文件所必需的。我们库的目标是简化内部库的使用并提供易于使用的API。我们必须对库进行dexguard,以最大限度地降低逆向工程的风险,因为它用于高度安全的应用程序。
无论如何,当我们构建库时,最终产品缺少SO文件。再次声明,我们不直接引用这些SO文件。它们被内部的编译器用作依赖项。
我们发现的工作方法是两次构建我们的gradle目标。
例如,运行此目标,
./gradlew assembleRelease
字符串
将创建一个缺少SO文件的AAR文件。
但是,如果我按顺序执行这些命令,而中间不进行清理,
./gradlew assembleRelease
./gradlew assembleRelease
型
创建的AAR文件将有SO文件存在。这真的很奇怪。
我的目标是能够只运行一次任务,并有SO文件目前在AAR文件。我已经尝试了许多事情来尝试和解决这个问题,但没有成功。
- 修改我的dexguard配置为:
- 使用
-keepresourcefiles
标志包括我SO文件 -encryptnativelibraries
(我现在知道为什么这是无用的)- 已尝试修改gradle任务图以重新运行
assemble
任务 (which is not possible) - 尝试创建新的gradle任务以第二次执行某些任务 (与上述相同,不可能)
我尝试了其他我现在想不起来的东西。
无论如何,如果有人看到并解决了这个问题,请让我知道。解决方案现在对我们有效,但这是一个问题,大约半年了,现在没有解决方案,我很想有一个解决方案,而不是一个解决方案.或解释为什么会发生这种情况。
1条答案
按热度按时间wj8zmpe11#
此问题已在较新版本的Dexguard中解决。升级Dexguard是我们的解决方案。