仅通过命令行创建本地android活动(makefile)
Create native android activity via command line only (makefile)
目标
在android中创建本地活动:
- 经由CCD_ 1&仅限
Makefile
- 不使用
gradle, ant, maven, android.mk
和所有其他东西
问题
- 我已经通过makefile创建了一个(java原生(android apk,它在我的三星S7上运行良好
- 当我尝试运行该应用程序时,它会以"
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
它与谷歌预编译的armeabi-v7a配合良好libnative-activity.so
如果这是有效的,那么合子过程是32位的。如果您没有更改任何其他内容,那么这意味着您正试图将64位库加载到32位进程中,但这是行不通的。
如果你构建一个32位库,它能正常工作吗?这至少可以证明您的构建做的是正确的,而且这只是一个需要的流程创建更改。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用ndk-build.cmd构建Android.so文件
- Android NDK传感器向事件队列报告奇怪的间隔
- Android P-9.0.0_r53 Logcat主缓冲区超出定义大小
- OpenCV Android C++ imwrite not found
- Android NDK 编译 LAME HAVE_MPGLIB > 'interface.h' 文件未找到
- 如何使用 Boost Asio 在 Android 上获取我的本地 udp IP 地址?
- Android Studio 中带有静态库的原生C++代码
- 如何在 Android Studio 4 中编译 C/C++ 原生代码
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- Android 在编译二进制文件时重建静态库
- 我只想在Android 4.4中使用C++11库
- CMake:Android Studio 原生活动项目无法在项目根目录之外找到第三方库
- Android 原生活动,GLES 3.0 着色器编译失败
- 如何从基于本机活动的项目链接到 Android Studio 中的 SDL2
- 处理android原生活动中的主要命令
- 如何从.cpp脚本启动android活动
- 在Android上使用gles2.0 egl ative活动时不会绘制任何内容
- 仅通过命令行创建本地android活动(makefile)
- 从jni直接调用android活动从c++进程没有Java端