0
目标
在android系统创建天然活性创建原生Android活动:通过命令行只(生成文件)
- 通过
vim
&Makefile
只有 - 没有用的
gradle, ant, maven, android.mk
和所有其他东西
问题
- 我已经通过makefile在我的Samsung S7上创建了一个(java-native)android apk安卓版。
- 当我尝试运行该应用程序时,它与“
Unable to load native library
”崩溃。 - 我的直觉告诉我,我没有正确编译/连接
android_native_app_glue.c --> libandroid_native_app_glue.a
和main.cpp --> libnative-activity.so
。 - 它正常工作与谷歌的预编译armeabi-V7A
libnative-activity.so
- 这里是源代码:https://github.com/skanti/Android-Manual-Build-Command-Line/tree/master/native-activity
我第一次创建静态应用胶水为:
aarch64-linux-android-gcc -march=armv8-a -c android_native_app_glue.c -o native_app_glue.o
aarch64-linux-android-ar rcs libandroid_native_app_glue.a native_app_glue.o
然后我编译链接main.cpp
:
aarch64-linux-android-c++ -march=armv8-a -std=c++11 -fPIC -c main.cpp -o main.o
aarch64-linux-android-c++ -shared -llog -landroid -lEGL -lGLESv1_CM -lnative_app_glue main.o -o libnative-activity.a
错误报告
AndroidRuntime: Process: com.example.native_activity, PID: 30897
AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.native_activity/android.app.NativeActivity}: java.lang.IllegalArgumentException: Unable to load native library: /data/app/com.example.native_activity-1/lib/arm64/libnative-activity.so
您似乎在构建libnative-activity.a,而不是libnative-activity.so。 – solidpixel
是什么让你觉得呢?查看标志'''-fpic'''和''''''''''''''。我也通过'''readelf''检查了'''.so'''。这似乎也很好。 –
您正在将最终命令的输出文件定义为“-o libnative-activity.a”,但是如果文件显示为OK,那么我想不是这样。 – solidpixel