본문 바로가기

JNI

(3)
fatal signal SIGTRAP (NDK debugging error) 안드로이드 NDK연동 테스트 중 에러가 발생하며 앱이 강제 종료되었다 Fatal stgnal 5 (SIGTRAP), code 1 (TRAP_BRKPT), fault addr 0x7 ~~~블라블라 뭔소린지 하나도 모르겠다 디버그 모드로 돌려보면 더 많은 정보가 나오려나 하고 디버그로 돌려봤다 이제 익숙한 함수명이 나온다 가상 상위의 콜스텍을 보면 GetExecutableName()이란 함수쪽에 문제가 있단걸 알 수 있다 확인해보니 C++ 네이티브 코드쪽에 ifdef으로 OS별 로직 분기를 해놨는데 안드로이드에서 return을 타는 로직이 없었기에 발생한 것이였다 간단하게 #else return 추가 후 해결 완료.. 간단한건데 참 JDK를 사용할 땐 에러코드 메세지가 너무너무 불친절하다 그래서 원인 찾는데..
라자루스에서 string array 를 JNI로 java에게 넘기기 / how to passed LAZARUS String Array to JNI for android 지난번 Lazarus(free pascal)로 생성한 so파일을 안드로이드에 연동하는법을 배워보았습니다 그 예제에서는 int값만 주고 받았는데 이게 주고받는게 단순하지 않은 타입들이 있습니다 그 문제는 흔히 사용하는 string에서부터 시작됩니다 우선 java의 String은 유니코드로 저장되는 char 배열이기에 lazarus String으로 쓰기위해선 UTF- 8로 인코딩을 해줘야한다 java에서 넘어온 string값 변환(JNI -> Lazarus) var jsTemp : JString; sTemp : String; begin sTemp := JStringTostring(jsTemp); end; function JStringToString(AJString: jstring): string; var E..
라자루스(프리파스칼) 로 안드로이드에 사용 될 so파일 생성 / how to make .so for android to LAZARUS(freepascal) / fpcupdeluxe 설치 - 2 2021/01/28 - [운동하는 개발자/Lazarus] - 라자루스(프리파스칼) 로 안드로이드에 사용 될 so파일 생성 / how to make .so for android to LAZARUS(freepascal) / fpcupdeluxe 설치 - 1 라자루스(프리파스칼) 로 안드로이드에 사용 될 so파일 생성 / how to make .so for android to LAZARUS(freepas Lazarus(Freepacal)를 이용하여 안드로이드 native library인 .so파일을 Cross Compile 하여 생성 해보자 1. 우선 크로스컴파일을 가능하게 해주는 fpcupdeluxe라는 프로그램을 다운받아야 한다 1-1) fpcupdeluxe.. singo112ok.tistory.com 1..