バージョン指定でハング!?

バージョン指定でハング!?




Google Playでアプリを公開するときにSDKのバージョン指定をマニフェストに追加する必要があります。
このバージョンを指定するとハングするようになるのでその対策を講じてみます。

マニフェストにSDKのバージョンを追加します。
今回はバージョン2.1-update1と言うことで↓のようなマニフェストにします。

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hitman" android:versionCode="1" android:versionName="1.0">
    <!-- これを追加 -->
    <uses-sdk android:minSdkVersion="7" />
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        :
    </application>
</manifest>

すると↓の場所で落ちるようになります。

    //  描画
    public void Draw( DrawParam param )
    {
            :
            :

        //  頂点の位置設定
        {
                :
                :
            gl.glVertexPointer( VERTEX_POS_ELEMENT_NUM, GL10.GL_FLOAT, 0, m_VertexPos.GetFloatBuffer());
        }

原因は最後のFloatバッファがダイレクトバッファでないことが原因のようです。
そこでインナークラスであるBufferSetのCreateメソッドを少しいじります。

        //  作成
        public void Create( int arrayNum )
        {
            m_FloatBuffer   = FloatBuffer.allocate( arrayNum );
        }
        //  作成
        public void Create( int arrayNum )
        {
            ByteBuffer  byteBuffer  = ByteBuffer.allocateDirect( arrayNum * 4 );    //  ダイレクトバッファを指定
            {
                byteBuffer.order( ByteOrder.nativeOrder());
            }
            m_FloatBuffer   = byteBuffer.asFloatBuffer();
        }

これでハングしなくなります。
めでたしめでたし。

参考ブログ
しずくくんのAndroidでゲームプログラミングしてみたいなblog



<前のページ