BUILD_EXECUTABLEを使用しても実行形式にならない
Androidのビルドツリーを利用して新しい実行形式のアプリを作ろうとした際に何故かsoが作成されてしまったためその時の対応方法を紹介します。
実行形式のファイルを作成する場合はAndroid.mkのビルド方法指定部分に下記を記載すればできるのですが、今回の場合何故かできたファイルのelfを確認するとDYN (Shared object file)になってしまい苦戦しました。
include $(BUILD_EXECUTABLE)
対応方法としては簡単で下記をAndorid.mkに記載すること実行形式としてビルドすることが出来ます。
LOCAL_FORCE_STATIC_EXECUTABLE := true
上記フラグを立てるだけで実行形式ファイルが作成できた理由は判明していませんが、そのとき作成していたAndroid.mkでは使用するライブラリをすべてstaticリンクにしていたためそれが影響していたのかもしれません。
BUILD_EXECUTABLEでビルドしているのに実行形式にならない場合は今回の対策を試してみてください。