내 프로젝트에서 네이티브 라이브러리는 리플렉션을 사용하여 Java 코드를 다시 호출합니다. 그래서 나는 ProGuard에서-project.txt하려면 다음을 this 스레드을 따라 추가proguard 활성화 후 치명적 신호 11 (SIGSEGV)
-keep class com.example.abc.MainActivity { *; }
-keep class com.example.abc.NativeClass { *; }
네이티브 메소드에 대한 호출이 이루어지는 모든 메소드와 필드 NativeClass에서 (모든 네이티브 메소드가 선언)과 Mainactivity을 보존 할 수 있습니다. 이러한 원시 메소드 내에서 다시 NativeClass.java 메소드 (순수 Java 메소드)가 호출되며,이 메소드는 Mainactivity.java에 정의 된 Java 메소드를 차례로 호출합니다. 응용 프로그램은 proguard없이 잘 실행됩니다. 그러나 proguard를 활성화하여 프로젝트를 내 보낸 후에 네이티브 메소드 호출 (NativeClass의 Java 메소드 호출)이 실행되는 지점에서 어플리케이션이 충돌합니다. proguard-project.txt에 입력 할 수있는 모든 가능한 명령을 사용해 보았습니다. OpenCV 메서드는 네이티브 코드에서 호출됩니다. Proguard를 활성화 할 때 OpenCV 기본 코드를 어떻게 처리해야합니까? 도와주세요. 다음
은 툼 스톤 파일의 로그입니다
/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)
--- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
이것은 도움이 될 수 있습니다. http://stackoverflow.com/questions/7880107/in-proguard-how-to-preserve-a-set-of-classes-method-names 시도해주세요. – CaptainTeemo
@CaptainTeemo 이미 모든 것을 추가하려고했습니다. proguard-project.txt의 항목 하지만하지 않습니다 -keep class com.example.abc.NativeClass {*; } 단독으로 NativeClass의 모든 메소드와 필드를 유지할 수 있습니까? 문제는 opencv 메서드를 호출하는 것이라고 생각합니다. 콜백 Java 메소드가없는 원시 메소드조차도 실행되지 않기 때문에. 응용 프로그램은 단순히 충돌뿐만 아니라. BTW 귀하의 도움에 감사드립니다. –
이 클래스는 "-keep"이 아닌 다른 클래스를 호출합니까? LogCat은 멋진 것입니다. 찾을 수 없으면 메시지가 태그 DEBUG 아래의 모든 메시지 필터에 있습니다. – CaptainTeemo