AndroidスタジオからAndroidのネイティブアクティビティサンプルを取り出し、自分のネイティブアクティビティの実装でアプリのグルーの実装を置き換えました。だからここAndroidを使ってCMakeと共有ライブラリを構築するNDK
は、サンプルとほぼ同じ私のcmakeのファイルです:
cmake_minimum_required(VERSION 3.4.1)
#my implementation
add_library(android-impl STATIC
C:/android_libs/native-impl/Activity.cpp
)
# now build app's shared lib
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
add_library(my-app SHARED
main.cpp
)
#add include directories
target_include_directories(my-app PRIVATE
C:/android_libs/native-impl/)
# add lib dependencies
target_link_libraries(my-app
android
android-impl
EGL
GLESv1_CM
log)
そして私はまた、Androidの中で指定されたこのような私の共有ライブラリの名前、ファイルの一覧:
<!-- Tell NativeActivity the name of our .so -->
<meta-data android:name="android.app.lib_name"
android:value="my-app" />
を
それはすべてのコンパイルが、私は私のデバイス上で実行すると、それは即座にエラーがスローされます。
Caused by: java.lang.IllegalArgumentException: Unable to load native library: /data/app/com.nativetest.myapp-1/lib/arm/libmy-app.so
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nativetest.myapp/android.app.NativeActivity}: java.lang.IllegalArgumentException: Unable to load native library: /data/app/com.nativetest.myapp-2/lib/arm/libmy-app.so
Iドン私は、ネイティブアクティビティ用に用意されたサンプルから同じCmakeファイルをコピーし、アプリケーションのグルーを実装に置き換えただけで、共有ライブラリに別の名前を使用したため、理解できません。ここで
は、私が使用したサンプルからのファイルは、次のとおりです。 Cmakelist.txt AndroidManifest.xml
は、私は変更する必要がある何か他のものはありますか?
どのようにAndroidアプリケーションを構築しますか? Android Studioを使用する場合は、.soファイルがAndroid Studioで見つけられ、.apkファイルにパッケージ化されていることを確認してください。 Check http://stackoverflow.com/questions/24357687/how-to-include-so-library-in-android-studio –
はいAndroidスタジオを使用しています。私はプロセスなどの構築について多くのことを理解していませんが、.soファイルはありません。それをどのように生成するのですか?私はそれがcmakeファイルによって作成されることを期待していた – thp9
.soファイルはうまく生成され、Android Studioはそれを見つけて、それを読み込むことができません。 – thp9