私はクロスコンパイラと標準のgnu make utilsを使って共有ライブラリを構築するNDKプロジェクトを持っています。それは別のスクリプトで行われます。しかし、私のプロジェクトでライブラリを使用する目的で、自分のAndroid.mk
プロセスがまだビルドされていない場合は、スクリプトを呼び出して共有ライブラリを生成してから、Android.mk
のプロセスにPREBUILT_SHARED_LIBRARY
プロセスを使ってラップしてください。Android.mk PREBUILT_SHARED_LIBRARYスクリプトからLOCAL_SRC_FILESファイルを生成する方法は?
現在、オフラインスクリプトを実行してlibmy_so.so
を生成すると、次のメイクファイルが動作します。しかし、私が最初に明示的にスクリプトを実行しない場合、私は次のエラーを取得:
Android NDK: ERROR:/path_to_project/Android.mk:my_module: LOCAL_SRC_FILES points to a missing file
をしてmakeプロセスも依存関係を解決しようとする前に失敗しているので、私のスクリプトは、呼び出されることはありません。
include $(CLEAR_VARS)
LOCAL_MODULE := my_module
LOCAL_SRC_FILES := libmy_so.so
LOCAL_EXPORT_CFLAGS := # some stuff
LOCAL_EXPORT_LDLIBS := # some stuff
$(LOCAL_PATH)/libmy_so.so:
echo "generate file"
$(shell run_script_that_creates_libmy_so.so)
include $(PREBUILT_SHARED_LIBRARY)
これにはクリーンな解決策がありますか?私はスクリプトを自動的に前処理ステップとして実行してもOKです(ファイルがすでに存在する場合、スクリプトを静かに終了させることができます)。しかし、LOCAL_SRC_FILES
変数が存在しないファイルを指すようにする呪文は見つかりませんでした。私はダミーを配置することを考えましたlibmy_so.so
が、それは醜いハックです。
私はbuild.gradleでndkを設定し、必要なものに依存させるべきだと思います。 –
私は実際にNDKで作業するようになっている拡張可能なツールを作成しているので、実際にはbuild.gradleを直接使用することはできません。私が何をしようとしているのかを見るには、[このプロジェクト](https://github.com/ericwlange/hemroid)を参照してください。 –