デスクトップに展開するlibgdxフレームワークで構築された、完全に機能するJavaアプリケーションがあります。ただし、コードを取得して、そこから Android アプリを作成したいと思います。
Android プロジェクトを作成し、コードを Android プロジェクトのソース フォルダーに再ルーティングし、Android 固有のメイン メソッドを追加し、マニフェスト xml ファイルを編集してメイン アクティビティ (この場合は「RoadRusherActivity」) を使用しました。ただし、次のエラーが発生します。
04-28 15:44:41.195: E/Trace(2452): error opening trace file: No such file or directory (2)
04-28 15:44:41.355: D/dalvikvm(2452): Trying to load lib /data/app-lib/com.me.mygdxgame-2/libgdx.so 0x40ce58c8
04-28 15:44:41.385: D/dalvikvm(2452): Added shared lib /data/app-lib/com.me.mygdxgame-2/libgdx.so 0x40ce58c8
04-28 15:44:41.415: D/dalvikvm(2452): No JNI_OnLoad found in /data/app-lib/com.me.mygdxgame-2/libgdx.so 0x40ce58c8, skipping init
04-28 15:44:41.465: D/libEGL(2452): Emulator without GPU support detected. Fallback to software renderer.
04-28 15:44:41.485: D/libEGL(2452): loaded /system/lib/egl/libGLES_android.so
04-28 15:44:41.675: D/AndroidRuntime(2452): Shutting down VM
04-28 15:44:41.675: W/dalvikvm(2452): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
04-28 15:44:41.685: E/AndroidRuntime(2452): FATAL EXCEPTION: main
04-28 15:44:41.685: E/AndroidRuntime(2452): java.lang.RuntimeException: Unable to resume activity {com.me.mygdxgame/com.me.mygdxgame.RoadRusherActivity}: java.lang.SecurityException: Neither user 10048 nor current process has android.permission.WAKE_LOCK.
04-28 15:44:41.685: E/AndroidRuntime(2452): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2742)
04-28 15:44:41.685: E/AndroidRuntime(2452): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2771)
04-28 15:44:41.685: E/AndroidRuntime(2452): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2235)
04-28 15:44:41.685: E/AndroidRuntime(2452): at android.app.ActivityThread.access$600(ActivityThread.java:141)
04-28 15:44:41.685: E/AndroidRuntime(2452): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
04-28 15:44:41.685: E/AndroidRuntime(2452): at android.os.Handler.dispatchMessage(Handler.java:99)
04-28 15:44:41.685: E/AndroidRuntime(2452): at android.os.Looper.loop(Looper.java:137)
04-28 15:44:41.685: E/AndroidRuntime(2452): at android.app.ActivityThread.main(ActivityThread.java:5041)
04-28 15:44:41.685: E/AndroidRuntime(2452): at java.lang.reflect.Method.invokeNative(Native Method)
04-28 15:44:41.685: E/AndroidRuntime(2452): at java.lang.reflect.Method.invoke(Method.java:511)
04-28 15:44:41.685: E/AndroidRuntime(2452): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-28 15:44:41.685: E/AndroidRuntime(2452): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-28 15:44:41.685: E/AndroidRuntime(2452): at dalvik.system.NativeStart.main(Native Method)
04-28 15:44:41.685: E/AndroidRuntime(2452): Caused by: java.lang.SecurityException: Neither user 10048 nor current process has android.permission.WAKE_LOCK.
04-28 15:44:41.685: E/AndroidRuntime(2452): at android.os.Parcel.readException(Parcel.java:1425)
04-28 15:44:41.685: E/AndroidRuntime(2452): at android.os.Parcel.readException(Parcel.java:1379)
04-28 15:44:41.685: E/AndroidRuntime(2452): at android.os.IPowerManager$Stub$Proxy.acquireWakeLock(IPowerManager.java:271)
04-28 15:44:41.685: E/AndroidRuntime(2452): at android.os.PowerManager$WakeLock.acquireLocked(PowerManager.java:717)
04-28 15:44:41.685: E/AndroidRuntime(2452): at android.os.PowerManager$WakeLock.acquire(PowerManager.java:686)
04-28 15:44:41.685: E/AndroidRuntime(2452): at com.badlogic.gdx.backends.android.AndroidApplication.onResume(AndroidApplication.java:241)
04-28 15:44:41.685: E/AndroidRuntime(2452): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1185)
04-28 15:44:41.685: E/AndroidRuntime(2452): at android.app.Activity.performResume(Activity.java:5182)
04-28 15:44:41.685: E/AndroidRuntime(2452): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2732)
04-28 15:44:41.685: E/AndroidRuntime(2452): ... 12 more
04-28 15:44:47.705: I/Process(2452): Sending signal. PID: 2452 SIG: 9
以下は私のマニフェストです:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.me.mygdxgame"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".RoadRusherActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:theme="@style/FullscreenTheme" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
以下は、「RoadRusherActivity」というタイトルのメイン アクティビティ クラスです。
package com.me.mygdxgame;
import android.os.Bundle;
import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
public class RoadRusherActivity extends AndroidApplication {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
config.useAccelerometer = false;
config.useCompass = false;
config.useWakelock = true;
config.useGL20 = true;
initialize(new SimpleBike(), config);
}
}
Androidへの移植、アプローチの仕方に戸惑うばかりです。どんな提案でも大歓迎です!