본문 바로가기

운동하는 개발자/Lazarus

라자루스(프리파스칼) 로 안드로이드에 사용 될 so파일 생성 / how to make .so for android to LAZARUS(freepascal) / fpcupdeluxe 설치 - 2

728x90

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탄은 .so 파일을 Lazarus로 만드는 과정입니다


2탄으로 만들어진 .so를 어떻게 안드로이드에서 사용하는지 살펴보겠습니다

(꼭 라자루스가 아니라 c나 c++로 만들어진 so도 동일한 방법으로 가능하지 않을까 싶습니다.. 물론 해보진 않았습니다)

 

Android studio 화면입니다 Project보기로 해야 구조가 보여요
jni 부분을 jniLibs로 변경 후 Finish

우선 프로젝트에서 main에서 jniLibs 라는 명의 폴더를 생성해줍니다

 

jni폴더가 생성되고 하위에도 cpu별로 폴더를 생성해줍니다 폴더명은 위와 똑같이 따라하시면 됩니다

 

그리고 해당폴더에 해당버전으로 빌드된 so파일을 각각 넣어줍니다

 

다음으로 jni함수를 호출 할 클래스를 만들어줍니다

 

마지막으로 메인엑티비티 소스입니다 create할 때 LoadLibrary로 so파일을 읽어왔습니다
실제 so파일 명은 libproject1.so인데 앞에 lib와 뒤에 확장자를 제외한 이름(project1)만 적어주시면됩니다

그리고 방금생성한 jnicall 클래스를 통해 testfun함수를 호출했고 리턴받은값을 로그로 찍어본 결과 1+2=3 정상적으로 동작하였습니다

이상입니다

틀린내용이나 질문은 댓글로 남겨주세요


글을 마치며 ..

더보기

c언어로 작성된 so파일을 붙이는 정보글은 쉽게 구할 수 있는데 free pascal을 이용한글은 찾기 힘들더군요

그래서 시간이 많이 걸릴것을 각오하고 작성하였습니다

또 이글을 읽으실분들이 얼마나 알고있는 상황에서 하실지 알수없어서 나름 자세하게 쓴다고 써 보았습니다
(때문에 중간에 포기하고 싶었습...)

도움이되셨다면 좋겠습니다 감사합니다

728x90