前回は、libpngをソースコードごと、自分のプロジェクトに追加して利用しました。
この方法でも使えるので問題ないですが、毎回、ビルド対象になるので、ビルド完了が遅くなります。
ですので今回は、外部ライブラリ化して、使用する様に変更します。

ポイント
  • app配下にjniLibsフォルダを作成
  • ビルドしてできたso/aファイルをCPU_ABIごとコピー
  • app配下のbuild.gradleをごにょごにょ
  • app配下のCMakeLists.txtをごにょごにょ

jniLibsフォルダを新規作成、そのフォルダに、so/aファイルをCPU_ABIごとコピー
※CPU_ABIとは、armeabi-v7a,x86などのフォルダ構成のこと。

フォルダ構成はこんな感じ。

自分のプログラム\app
 ├jniLibs…新しく作ったやつ
 |├arm64-v8a
 ||└libtestlibpng.so…追加するライブラリ
 |├armeabi
 ||└libtestlibpng.so
 |├armeabi-v7a
 ||└libtestlibpng.so
 |├mips
 ||└libtestlibpng.so
 |├mips64
 ||└libtestlibpng.so
 |├x86
 ||└libtestlibpng.so
 |└x86_64
 | └libtestlibpng.so
 ├src
 |└main
 | ├cpp
 | |├libpng…追加するライブラリのヘッダ
 | ||├png.h
 | ||├pngconf.h
 | ||└pnglibconf.h
 | |├CppSurfaceView.cpp
 | |├CppSurfaceView.h
 | |├UtilPng.cpp
 | |└UtilPng.h
 | ├java
~略~

build.gradle

CMakeLists.txt

ソースコード一式はココ