Android C++OpenGL:无法找到统计数据
Android C++ OpenGL: unable to find stats
我正在努力在NDK中运行一个完全本机的代码作为C++OpenGL ES。
这个想法是为了完全避免在Android项目中使用文件夹/src,其中包含许多与进程接口的java类,从而提高嵌入式系统的速度和性能。因此,我们将把整个程序作为原生C++放在/jni下。
它需要使用Android NativeActivity-例如,请参阅:http://www.srombauts.fr/2011/03/01/android-2-3-nativeactivity和Android NativeActivity。
为此,/src被删除,AndroidManifest.xml也被移动到项目的根目录并进行相应的修改:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.packtpub.program3D"
android:versionCode="1"
android:versionName="1.0" >
<uses-feature android:glEsVersion="0x00020000"></uses-feature>
<uses-sdk android:targetSdkVersion="15" android:minSdkVersion="15"></uses-sdk>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity android:name="android.app.NativeActivity"
android:label="@string/app_name">
<meta-data android:name="android.app.lib_name"
android:value="program3D"/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category
android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
AndroidManifest.xml中的"use-feature"必须为"glEsVersion"参数指定为"0x00020000",否则NDK将使用默认的1.0版本。
在Android.mk中,程序应该有Android_native_app_glue,包括它作为编译和构建的参数:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := program3D
LOCAL_SRC_FILES := com_packtpub_program3D.c program3D.c
LOCAL_LDLIBS := -landroid -llog -lEGL -lGLESv1_CM
LOCAL_STATIC_LIBRARIES := android_native_app_glue
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)
C/C++代码位于/jni/Main.cpp中。在这里,您可以访问一个用于测试的模板程序,该程序位于Main.cpp:http://developer.android.com/reference/android/app/NativeActivity.html。
构建和编译没有任何问题,而且进展顺利。这是输出:
**** Build of configuration Default for project program3D ****
ndk-build NDK_DEBUG=1 V=1 all
rm -f ./libs/x86/lib*.so ./libs/armeabi/lib*.so ./libs/armeabi-v7a/lib*.so
rm -f ./libs/x86/gdbserver ./libs/armeabi/gdbserver ./libs/armeabi-v7a/gdbserver
rm -f ./libs/x86/gdb.setup ./libs/armeabi/gdb.setup ./libs/armeabi-v7a/gdb.setup
Gdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
mkdir -p ./libs/armeabi
install -p /opt/android/android-ndk-r7/toolchains/arm-linux-androideabi-4.4.3/prebuilt/gdbserver ./libs/armeabi/gdbserver
Gdbsetup : libs/armeabi/gdb.setup
mkdir -p ./libs/armeabi
echo "set solib-search-path ./obj/local/armeabi" > ./libs/armeabi/gdb.setup
echo "directory /opt/android/android-ndk-r7/platforms/android-14/arch-arm/usr/include /opt/android/android-ndk-r7/sources/android/native_app_glue /opt/android/android-ndk-r7/sources/cxx-stl/system/include jni" >> ./libs/armeabi/gdb.setup
Install : libprogram3D.so => libs/armeabi/libprogram3D.so
mkdir -p ./libs/armeabi
install -p ./obj/local/armeabi/libprogram3D.so ./libs/armeabi/libprogram3D.so
/opt/android/android-ndk-r7/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-strip --strip-unneeded ./libs/armeabi/libprogram3D.so
**** Build Finished ****
太棒了!正确的不完全是。
当被要求跑步时。。。它根本不启动。相反,在LogCat中只显示以下加密消息,并且程序不会在设备中加载或运行:
system_process : ThrottleSercie : unable to find stats for iface rmnet0
考虑到程序调试和编译得很好,可能会缺少什么。
有人可能有什么建议吗?非常感谢所有评论。
我认为logcat消息只是转移注意力。
您的JNI库的名称似乎是libprogram3D.so,但您在清单XML中称其为"droidblaster"(操作系统将使用它来加载.so)。请尝试更改一个库,使其匹配。
- 使用 OpenGL 插值数据缓冲区?
- OpenGl 4,GL_ARRAY_BUFFER 无法正确发送法线数据
- 使用OpenGL和Eigen来存储顶点数据和glVertexAttribPointer
- 将 OpenGL VBO 与自定义类/数据结构一起使用
- 现代 OpenGL 多维数据集旋转未按预期工作
- OpenGL:使用指向静态数据的指针数组传递缓冲区数据
- 避免在统计数据和重命名之间进行TOCTOU(检查时间,使用时间)
- openGL如何处理发送给它的空/未初始化数据?
- OpenGL 第一个多维数据集渲染不起作用
- OpenGL着色器错误C1068:类型构造函数中的数据过多
- 是否有一些有意义的统计数据来证明保持有符号整数算术溢出未定义是合理的
- 如何为数据类型 vector<glm::vec3> (opengl 数据类型) 编写 std::minmax 函数的自定义比较器
- Magick++ ImageMagick 7.0.5-4 Q16 的统计数据x86_64问题
- 在调试中,如何知道对函数的重复调用中参数的统计数据(max-min,average,distribution..)
- OpenGL纹理格式,为OpenGL创建图像/纹理数据
- 创建原始OpenGL纹理数据(C++)
- 我可以收集mmap读/写统计数据吗
- 巧克力游戏:输入循环,不插入循环或打印游戏统计数据
- Android C++OpenGL:无法找到统计数据
- 从表创建统计数据