无法通过Unity在Android上启动活动

时间:2013-07-21 18:13:30

标签: android android-intent plugins android-activity unity3d

我正在使用Unity创建Android应用程序。

我有两个插件。每个都可以自己工作,但是当我想要使用它们时,我无法在它们之间切换活动。

在过去的十天里,我一直在阅读所有类似的问题,并尝试了从反编译/编辑/重新编译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

这两项活动都是主要的。其中一个是发射器。

我可以在两者上成功调用方法。

我无法将活动切换到非LAUNCHER,但是,指定了错误(无法找到'getClass'的id)。

我觉得这么近,但到目前为止。任何帮助表示赞赏。在这疯狂!

感谢。

1 个答案:

答案 0 :(得分:3)

你真正的问题是:java.lang.NoClassDefFoundError:com / unity3d / player / UnityPlayer $ 12

无论出于何种原因,java都没有在类路径中找到该类。其他地方的一些研究表明,它可能与您正在编译的jar中的不匹配以及您正在开发的版本有关。也可能是您没有将jar放在正确的位置,或者您使用的版本没有提供该类。

我希望这至少可以帮助你指明正确的方向。