【发布时间】:2020-08-01 23:30:08
【问题描述】:
我有一个 hello world 项目。我有一个名为 StartActivity 的类,它从 AppCompatActivity 扩展。我创建了一个 .aar 库并将其放在统一插件文件夹下。这个想法是从统一 android 应用程序启动活动,所以我从统一开始活动。当我尝试从统一开始我的活动时,它会抛出一个错误,指出找不到类 StartActivity。当我从 Activity 或 UnityPlayerActivity 类扩展同一个类时,它可以工作。但我需要 AppCompatActivity 类功能,所以不能移动到其他类。 这是我的清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sitagy.helloworld">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name="com.example.sitagy.helloworld.StartUpActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name = "com.example.sitagy.helloworld.StartActivity"></activity>
<activity android:name = "com.example.sitagy.helloworld.MainActivity"></activity>
<activity android:name="com.unity3d.player.UnityPlayerNativeActivity"
android:label="@string/app_name">
<meta-data android:name="unityplayer.UnityActivity" android:value="true"/>
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
</activity>
</application>
</manifest>
以下是我的java类
public class StartActivity extends AppCompatActivity {
private String TAG = "Plug.StartActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.out.println("SY : on create start neew activity");
}
public static void Call(Activity activity)
{
// Creating an intent with the current activity and the activity we wish to start
Intent myIntent = new Intent(activity, StartActivity.class);
activity.startActivity(myIntent);
}
public static void CallStatic()
{
System.out.println("CallStatic")
}
以下是我的c#代码
void Start()
{
var androidJC = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var jo = androidJC.GetStatic<AndroidJavaObject>("currentActivity");
var jc = new AndroidJavaClass("com.example.sitagy.helloworld.StartActivity");
jc.CallStatic("Call", jo);
}
如果我将 StartActivity 扩展到常规活动,它就可以工作。不确定我是否做错了什么。我在插件文件夹下有 AppCompat 库 enter image description here
这是 adb log 的错误
--------- 崩溃开始 08-01 17:43:04.766 26868 26868 E AndroidRuntime: 致命异常: main 08-01 17:43:04.766 26868 26868 E AndroidRuntime:进程:com.captivereality.javaunityplugin,PID:26868 08-01 17:43:04.766 26868 26868 E AndroidRuntime: java.lang.NoClassDefFoundError: 解析失败: Lcom/example/sitagy/helloworld/StartActivity; 08-01 17:43:04.766 26868 26868 E AndroidRuntime: 在 com.example.sitagy.helloworld.StartUpActivity.onCreate(StartUpActivity.java:17) 08-01 17:43:04.766 26868 26868 E AndroidRuntime: 在 android.app.Activity.performCreate(Activity.java:7802) 08-01 17:43:04.766 26868 26868 E AndroidRuntime: 在 android.app.Activity.performCreate(Activity.java:7791) 08-01 17:43:04.766 26868 26868 E AndroidRuntime: 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306) 08-01 17:43:04.766 26868 26868 E AndroidRuntime: 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245) 08-01 17:43:04.766 26868 26868 E AndroidRuntime: 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) 08-01 17:43:04.766 26868 26868 E AndroidRuntime: 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 08-01 17:43:04.766 26868 26868 E AndroidRuntime: 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 08-01 17:43:04.766 26868 26868 E AndroidRuntime: 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 08-01 17:43:04.766 26868 26868 E AndroidRuntime: 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) 08-01 17:43:04.766 26868 26868 E AndroidRuntime: 在 android.os.Handler.dispatchMessage(Handler.java:107) 08-01 17:43:04.766 26868 26868 E AndroidRuntime: 在 android.os.Looper.loop(Looper.java:214) 08-01 17:43:04.766 26868 26868 E AndroidRuntime: 在 android.app.ActivityThread.main(ActivityThread.java:7356) 08-01 17:43:04.766 26868 26868 E AndroidRuntime:在 java.lang.reflect.Method.invoke(本机方法) 08-01 17:43:04.766 26868 26868 E AndroidRuntime: 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 08-01 17:43:04.766 26868 26868 E AndroidRuntime: 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 08-01 17:43:04.766 26868 26868 E AndroidRuntime: 引起: java.lang.ClassNotFoundException: com.example.sitagy.helloworld.StartActivity 08-01 17:43:04.766 26868 26868 E AndroidRuntime: ... 16 更多 08-01 17:43:04.769 910 26893 I DropBoxManagerService:添加标签=data_app_crash isTagEnabled=true flags=0x2 08-01 17:43:04.770 910 2871 W ActivityTaskManager: 强制完成活动 com.captivereality.javaunityplugin/com.example.sitagy.helloworld.StartUpActivity
任何帮助都会很棒! 先谢谢大家了
【问题讨论】:
标签: android android-studio unity3d