본문 바로가기

운동하는 개발자/Android

Android NDK를 이용하여 zlib 라이브러리 사용하기

728x90

나의 경우에는 크로스컴파일 환경에서 zlib 라이브러리를 통해 압축을 해제하는 기능을 추가하였다

https://zlib.net/

 

zlib Home Site

<!-- H4 ALIGN="center" IMG WIDTH=42 HEIGHT=44 ALIGN="middle" SRC="images/happyicon.png" ALT="[happy face, because it's so darned useful!]" /H4 --> A Massively Spiffy Yet Delicately Unobtrusive Compression Library (Also Free, Not to Mention Unencumbered by

zlib.net

 

윈도우와 리눅스에서는 정상 동작을 확인했고 안드로이드 환경에서 적용하려고 보니 공식페이지에서 Android NDK를 이용하여 간단하게 해더만 추가해서 사용 할 수 있다고 되어 있었다

https://developer.android.com/ndk/guides/stable_apis?hl=ko 

그러나 zlib.h를 코드에 추가해도 해당 파일을 추적하면 내가 윈도우에서 라이브러리를 로드하기 위해 추가한 해더파일만 읽어지고 inflateInit2() 함수 등등을 찾을 수 없다고 에러가 발생했다

(아래 접힌글은 삽질 내용)

더보기

크로스 컴파일 환경에서는 해당 함수를 사용 할 수 없는 줄 알고 

https://github.com/MajdiSobain/build-curl-openssl-zlib-android

 

GitHub - MajdiSobain/build-curl-openssl-zlib-android: Building curl, openssl, and zlib libs for android

Building curl, openssl, and zlib libs for android. Contribute to MajdiSobain/build-curl-openssl-zlib-android development by creating an account on GitHub.

github.com

해당 오픈소스를 이용해서 so파일을 만들어서 추가하는 방법도 진행하다가 이것도 정상적으로 동작하지 않았다;

 

Android NDK의 라이브러리를 찾지 못하는 이유는 당연하게도 뭘 하나 빠드렸던것인데 

Android developers 페이지의 최상단 부분을 읽지 않아서 발생한 문제였다

Android.mk파일에서 다음을 추가해 준다(풀 네임이 libz이므로 lib은 생략하고 -lz)

LOCAL_LDLIBS := -lz

그리고 코드에 #include <zlib.h> 를 추가해주니 

정상적으로 NDK경로의 zlib.h가 연동되었고 모든 기능이 정상적으로 동작하였다..

문서를 더 꼼꼼히 읽자..


 

728x90