NDKのC++ OpenGL ESとして完全なネイティブコードを実行するために戦っています。Android C++ OpenGL:統計情報が見つかりません
アイデアは完全ので、組み込みシステムの速度とパフォーマンスを高め、AndroidのプロジェクトにプロセスをインタフェースするJavaクラスの多くが付いているフォルダ/ SRCを持っている必要性を回避するためです。だから、私たちは/ jniの下でネイティブC++としてプログラム全体を持っていきます。
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に「-機能を使用しています」でなければなりません"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
何がプログラムをデバッグし、きれいにコンパイルするという事実を考えると、不足していることができます。
誰かが提案している可能性がありますか?すべてのコメントは高く評価されています。
こんにちはReuben ...私はあなたが示唆したように正しくチェックし、更新しました。出力は依然として同じです。 – ThreaderSlash
モジュールエントリポイントにデバッグトレースの行を挿入します。それがlogcatに表示されない場合は、.soがロードされていないことがわかります。 –
私はすでに "ndk-build NDK_DEBUG = 1 V = 1 all"を入れました。問題を追跡するために、どこで追加のパラメータを使用できますか? – ThreaderSlash