Androidスタジオ2.3.2でNDKをサポートする新しいプロジェクトを生成すると、jni/
ディレクトリに自動生成されたAndroid.mk
ファイルが取得されなくなりました。Androidスタジオ2.3.2のAndroid NDK Android.mkの場所
cpp/
ディレクトリにCMakeLists.txt
が追加されました。
jni/
ディレクトリはありません。
CMake
ではなく、のファイルをAndroid.mk
としたい場合は、どこにファイルがありますか?
cpp/
dirに作成する必要がありますか?
app/
CMakeLists.txt
と同じですか?
Androidのメーカーではなく、明示的にndk-build
を実行するよりもネイティブ共有ライブラリを自動構築するためにあなたが予定の場合は、Android.mk
ファイルを作成する場合は、CMakeLists.txt
ファイルを削除する必要がありますか?
アップデート - サードパーティのLIBSへのリンク:
~/projects/third-party/libusb-1.0.21/android/libs/mips64:
total used in directory 276 available 265852464
drwxrwxr-x 2 bph bph 4096 Jun 5 14:05 .
drwxrwxr-x 9 bph bph 4096 Jun 2 22:20 ..
-rwxr-xr-x 1 bph bph 14872 Jun 5 14:05 dpfp
-rwxr-xr-x 1 bph bph 14944 Jun 5 14:05 dpfp_threaded
-rwxr-xr-x 1 bph bph 27432 Jun 5 14:05 fxload
-rwxr-xr-x 1 bph bph 10680 Jun 5 14:05 hotplugtest
-rwxr-xr-x 1 bph bph 127544 Jun 5 14:05 libusb1.0.so
-rwxr-xr-x 1 bph bph 10624 Jun 5 14:05 listdevs
-rwxr-xr-x 1 bph bph 10712 Jun 5 14:05 sam3u_bphchmark
-rwxr-xr-x 1 bph bph 14912 Jun 5 14:05 stress
-rwxr-xr-x 1 bph bph 35640 Jun 5 14:05 xusb
:
私は、例えばMIPS64 /のすなわち
~/projects/third-party/libusb-1.0.21/android/libs:
total used in directory 36 available 265852464
drwxrwxr-x 9 bph bph 4096 Jun 2 22:20 .
drwxr-xr-x 5 bph bph 4096 Jun 2 22:20 ..
drwxrwxr-x 2 bph bph 4096 Jun 5 14:05 arm64-v8a
drwxrwxr-x 2 bph bph 4096 Jun 5 14:05 armeabi
drwxrwxr-x 2 bph bph 4096 Jun 5 14:05 armeabi-v7a
drwxrwxr-x 2 bph bph 4096 Jun 5 14:05 mips
drwxrwxr-x 2 bph bph 4096 Jun 5 14:05 mips64
drwxrwxr-x 2 bph bph 4096 Jun 5 14:05 x86
drwxrwxr-x 2 bph bph 4096 Jun 5 14:05 x86_64
内容がどのように見える、のlibusbの.soファイルの束を生成しました
つまり、クロスビルドの.soファイルがそこにあります。
CMakeLists.txtで私のlink_d
link_directories(~/projects/third-party/libusb-1.0.21/android/libs/${ANDROID_ABI}/
マイtarget_link_libraries次のようになります:
target_link_libraries(# Specifies the target library.
usb-1.0)
しかし、私はエラーがリンクになっています:link_directoriesが選ん取得されていないかのように
~/Android/Sdk/ndk-bundle/toolchains/mips64el-linux-android-4.9/prebuilt/linux-x86_64/lib/gcc/mips64el-linux-android/4.9.x/../../../../mips64el-linux-android/bin/ld: cannot find -lusb-1.0
そのをirectoriesは次のようになります$ {ANDROID_ABI}は機能していませんか?
build.gradleファイルのmodは、リンカーエラーの影響を受けません。あなたのbuild.gradleファイル(アプリ)で
私はすでにCMakeのパスをダウンしていたが、その後、ビルドのlibusbを横断しようとして捕まってしまいました。 libusbのtarballのアンドロイドのヘルプは.mkベースです。 CMakelists.txtから.mkファイルを呼び出せますか? – bph
いいえ、私が過去に行ったことは、Android.mkファイルをハッキングしてファイルリストを生成して、 'LOCAL_SRC_FILES'ファイルと' LOCAL_C_INCLUDES'ファイルを吐き出すことです。私は簡単なデモのために私の答えを編集します。 –
私は提供された.mkファイルを使用してlibusb libをクロスビルドすることができたことを念頭に置いておいてください。私のプロジェクトCMakeLists.txtに.soファイルの場所を指定して、 .apk?言い換えれば、私は一度にビルドする必要はないかもしれませんが、私はプロジェクトとは別にlibusbを構築してから、私のプロジェクトがlibとlibの場所を必要としていることを確認していますか? – bph