운동하는 개발자/Android
Android NDK를 이용하여 zlib 라이브러리 사용하기
우용현
2022. 8. 17. 19:23
728x90
나의 경우에는 크로스컴파일 환경에서 zlib 라이브러리를 통해 압축을 해제하는 기능을 추가하였다
윈도우와 리눅스에서는 정상 동작을 확인했고 안드로이드 환경에서 적용하려고 보니 공식페이지에서 Android NDK를 이용하여 간단하게 해더만 추가해서 사용 할 수 있다고 되어 있었다
https://developer.android.com/ndk/guides/stable_apis?hl=ko
그러나 zlib.h를 코드에 추가해도 해당 파일을 추적하면 내가 윈도우에서 라이브러리를 로드하기 위해 추가한 해더파일만 읽어지고 inflateInit2() 함수 등등을 찾을 수 없다고 에러가 발생했다
(아래 접힌글은 삽질 내용)
더보기
크로스 컴파일 환경에서는 해당 함수를 사용 할 수 없는 줄 알고
https://github.com/MajdiSobain/build-curl-openssl-zlib-android
해당 오픈소스를 이용해서 so파일을 만들어서 추가하는 방법도 진행하다가 이것도 정상적으로 동작하지 않았다;
Android NDK의 라이브러리를 찾지 못하는 이유는 당연하게도 뭘 하나 빠드렸던것인데
Android developers 페이지의 최상단 부분을 읽지 않아서 발생한 문제였다
Android.mk파일에서 다음을 추가해 준다(풀 네임이 libz이므로 lib은 생략하고 -lz)
LOCAL_LDLIBS := -lz
그리고 코드에 #include <zlib.h> 를 추가해주니
정상적으로 NDK경로의 zlib.h가 연동되었고 모든 기능이 정상적으로 동작하였다..
문서를 더 꼼꼼히 읽자..
728x90