Android NDK では、SWIG によって自動生成された JNI ファイルをビルドします。callmanager_wrap.cppは共有ライブラリの一部です:
LOCAL_SRC_FILES += callmanager_wrap.cpp
include $(BUILD_SHARED_LIBRARY)
callmanager_wrap.cpp
しかし、コンパイルする前に追加/編集したいと思います。より明確にするには:
cat jnistuff.txt >> callmanager_wrap.cpp
追加する必要があるコンテンツは事前にわかっていますが、callmanager_wrap.cpp は不明です。SWIGによって生成されます。最終的に、カスタム ルールは次のコマンドを実行して callmanager_wrap.cpp を生成する必要があります。
swig -c++ -java -package com.package.my -o callmanager_wrap.cpp callmanager.i
この投稿によると、 にカスタム ルールを追加することはできませんAndroid.mk
。Android.mk
しかし、Android ソースでは、 BUILT または INSTALLED の後にいくつかの処理手順があると思います。私は次のことを試しました:
MY_JNI_WRAP=callmanager_wrap.cpp
include $(CLEAR_VARS)
LOCAL_SRC_FILES += callmanager_wrap.cpp
LOCAL_INTERMEDIATE_TARGETS += myjni
myjni:
echo "in myjni target"
swig -c++ -java -package com.package.my -o $(MY_JNI_WRAP) callmanager.i
cat jnistuff.txt >> $(MY_JNI_WRAP)
include $(BUILD_SHARED_LIBRARY)
しかし、myjni
ターゲットが呼び出されることはありません。
- LOCAL_INTERMEDIATE_TARGETS は何に使用されますか?
- 外部スクリプトやメイクファイルを書かずに、ここでやりたいことを達成できるでしょうか?