如何用源代码编译库?
我正在使用android ndk开发本机库.有时我从logcat获得崩溃转储消息.
06-18 15:24:58.545: INFO/DEBUG(24667): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
06-18 15:24:58.545: INFO/DEBUG(24667): Build fingerprint: 'nvidia/harmony/harmony/harmony:2.2/FRF91/20110304.134348:eng/test-keys'
06-18 15:24:58.545: INFO/DEBUG(24667): pid: 25870, tid: 26261 >>> com.andtv <<<
06-18 15:24:58.545: INFO/DEBUG(24667): signal 11 (SIGSEGV), fault addr 4a7b041c
06-18 15:24:58.545: INFO/DEBUG(24667): r0 4a7b041c r1 4a75220c r2 00000200 r3 0000006d
06-18 15:24:58.545: INFO/DEBUG(24667): r4 4a7b041d r5 00000000 r6 82434ad0 r7 4a752768
06-18 15:24:58.545: INFO/DEBUG(24667): r8 4a75220c r9 000004b4 10 4a752777 fp 00000000 …Run Code Online (Sandbox Code Playgroud) 在使用FFmpeg和NDK时,我遇到了一个令人讨厌但众所周知的错误:
A/libc(9845): Fatal signal 11 (SIGSEGV), code 1, fault addr 0xa0a9f000 in tid 9921 (AsyncTask #4)
Run Code Online (Sandbox Code Playgroud)
UPDATE
几个小时后,我发现可能有两个问题来源.一个与多线程有关.我查了一下,然后修好了.现在,只有在视频播放(ndk)打开时,应用程序才会崩溃.
我在触摸事件中放了一个"计数器"
surfaceSterowanieKamera.setOnTouchListener(new View.OnTouchListener() {
int counter = 0;
@Override
public boolean onTouch(View v, MotionEvent event) {
if ((event.getAction() == MotionEvent.ACTION_MOVE)){
Log.i(TAG, "counter = " + counter);
//cameraMover.setPanTilt(some parameters);
counter++;
}
Run Code Online (Sandbox Code Playgroud)
我开始逐个禁用其他应用功能,但没有视频.我发现,每减少一个功能,压缩需要更长的时间 - 计数器达到更高的值.在关闭视频播放和触摸界面(cameraMover.setPanTilt()注释掉)之外的所有内容后,应用程序通常在计数器介于1600 - 1700之间时会崩溃.
在这种情况下,logcat显示上述错误和GC相关信息.对我而言,似乎GC正在搞乱ndk.
01-23 12:27:13.163: I/Display Activity(20633): n = 1649
01-23 12:27:13.178: I/art(20633): Background sticky concurrent mark sweep GC freed 158376(6MB) AllocSpace objects, 1(3MB) LOS objects, 17% …Run Code Online (Sandbox Code Playgroud) android ffmpeg segmentation-fault android-ndk ontouchlistener