4

Unity を使用して Android アプリケーションを作成しています。

私は2つのプラグインを持っています。それぞれが単独で正常に動作しますが、両方を使用したい場合、それらの間でアクティビティを切り替えることができません。

私は過去10日間、同様の質問をすべて読んで、Javaコードの逆コンパイル/編集/再コンパイルからUnity自体からの実行まですべてを試しましたが、うまくいきませんでした.

これが私が書いた最終的なコードと私が得るエラーです。

私のAndroidManifest.xmlファイル:

   ...

      <activity 
        android:name="com.Company.Game.RRAndroidPluginActivity"
              android:label="My Game">

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

      </activity>

    <activity
        android:name="com.codiwans.iab.IAB"
        android:screenOrientation="landscape"   
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
        android:label="My Game IAB" >

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.BROWSABLE" />
        </intent-filter>

    </activity>

        ...

Unity コード (C#) は次のとおりです。

AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject pm = jo.Call<AndroidJavaObject>("getPackageManager");
AndroidJavaObject intent = pm.Call<AndroidJavaObject>("getLaunchIntentForPackage", 
"com.codiwans.iab.IAB");
jo.Call("startActivity", intent);

これが私が得るエラーです:

JNI: Unable to find method id for 'getClass'
Filename: ./Runtime/ExportGenerated/AndroidManaged/UnityEngineDebug.cpp Line: 54)

JNI: Unable to find method id for 'getName'
Filename: ./Runtime/ExportGenerated/AndroidManaged/UnityEngineDebug.cpp Line: 54)

JNI: Unable to find method id for 'getName'
Filename: ./Runtime/ExportGenerated/AndroidManaged/UnityEngineDebug.cpp Line: 54)

Caused by: java.lang.NoClassDefFoundError: com/unity3d/player/UnityPlayer$12
at com.unity3d.player.UnityPlayer.setScreenSize(Unknown Source)
at com.unity3d.player.UnityPlayer.nativeRender(Native Method)
at com.unity3d.player.UnityPlayer.onDrawFrame(Unknown Source)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1462)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1216)
Caused by: java.lang.NullPointerException
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1382)
at android.app.Activity.startActivityForResult(Activity.java:3190)
at android.app.Activity.startActivity(Activity.java:3297)
... 4 more

どちらのアクティビティもメインです。それらの1つはLAUNCHERです。

両方でメソッドを正常に呼び出すことができます。

アクティビティを LAUNCHER 以外のものに切り替えることはできませんが、指定されたエラーが発生します (「getClass」の ID が見つかりません)。

とても近くに感じますが、まだ遠いです。どんな助けでも大歓迎です。ここで狂っている !

ありがとう。

4

1 に答える 1

3

あなたの本当の問題はこれです: java.lang.NoClassDefFoundError: com/unity3d/player/UnityPlayer$12

なんらかの理由で、Java がクラスパスでそのクラスを見つけられません。他の場所でのいくつかの調査では、コンパイルしている jar と開発しているバージョンの不一致に関連している可能性があることが示されました。jar が正しい場所にないか、使用しているバージョンがそのクラスを提供していない可能性もあります。

これが少なくとも正しい方向に向けるのに役立つことを願っています。

于 2013-07-30T17:22:52.367 に答える