gpt4 book ai didi

android - 启用 proguard 后的致命信号 11 (SIGSEGV)

转载 作者:太空宇宙 更新时间:2023-11-03 22:13:28 24 4
gpt4 key购买 nike

在我的项目中, native 库使用反射回调 Java 代码。所以我关注了this线程并将以下内容添加到 proguard-project.txt

-keep class com.example.abc.MainActivity { *; }
-keep class com.example.abc.NativeClass { *; }

保留 NativeClass 中的所有方法和字段(声明所有 native 方法的地方)和调用 native 方法的 Mainactivity。在这些 native 方法中,再次调用 NativeClass.java 方法(纯 java 方法),后者又调用 Mainactivity.java 中定义的 java 方法。该应用程序在没有 proguard 的情况下运行良好。但是在通过启用 proguard 导出项目后,应用程序在进行 native 方法调用(进而调用 NativeClass 中的 java 方法)的点崩溃。我已经尝试了所有可能的命令来输入 proguard-project.txt 无济于事。OpenCV 方法在 native 代码中调用。启用 proguard 时我应该如何处理 OpenCV native 代码。请帮忙。

以下是墓碑文件的日志

/data/data/com.example.imageanalyse/lib/libfilters.so
be98d7a0 0000f2b8 [heap]
be98d7a4 be98d7b4 [stack]
be98d7a8 56d47798 /dev/ashmem/dalvik-LinearAlloc (deleted)
be98d7ac 5bdb9d6b /data/data/com.example.imageanalyse/lib/libfilters.so
be98d7b0 00000000
be98d7b4 00000000
--------- tail end of log /dev/log/main
09-25 15:20:56.930 3356 3357 D dalvikvm: GC_CONCURRENT freed 18K, 48% free 20256K/38855K,
paused 2ms+8ms
09-25 15:20:56.980 3356 3356 D dalvikvm: GC_FOR_ALLOC freed 5120K, 58% free 16405K/38855K,
paused 22ms
09-25 15:20:57.030 3356 3356 D dalvikvm: GC_FOR_ALLOC freed 1278K, 58% free 16449K/38855K,
paused 22ms
09-25 15:20:57.070 3356 3356 D dalvikvm: GC_FOR_ALLOC freed 1269K, 58% free 16449K/38855K,
paused 22ms
09-25 15:20:57.090 3356 3356 F libc : Fatal signal 11 (SIGSEGV) at 0x00000004 (code=1)
--- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---

最佳答案

您的配置已经正确说明了任何试图访问 com.example.abc.MainActivity 或 com.example.abc.NativeActivity 中的字段或方法的 native 代码。

有可能 libfilters.so 仍会尝试访问 Java 代码中的其他一些类、字段或方法。您应该尽量保留相关的类、字段和方法。

我没有立即在 OpenCV 源代码中看到它,但是如果 native 代码试图访问 Java 代码中的某些类、字段或方法,您应该再次保留它们:

-keep class org.opencv.** { *; }

如果有帮助,您可以将其细化为严格要求的类、字段和方法。

关于android - 启用 proguard 后的致命信号 11 (SIGSEGV),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26031482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com