Запуск AppCompatActivity из Unity C# Script - PullRequest
0 голосов
/ 02 августа 2020

У меня есть проект hello world. У меня есть класс StartActivity, который расширяется от AppCompatActivity. Я создал библиотеку .aar и поместил ее в папку плагинов единства. Идея состоит в том, чтобы запустить действие из приложения unity android, поэтому я начинаю действие из unity. Когда я пытаюсь начать свою деятельность из единства, выдается ошибка о том, что класс 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 в папке плагинов введите описание изображения здесь

Это ошибка журнала adb

--------- начало сбоя 08 -01 17: 43: 04.766 26868 26868 E AndroidRuntime: FATAL EXCEPTION: 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: at com.example.sitagy.helloworld.StartUpActivity.onCreate (StartUpActivity. java: 17) 08-01 17: 43: 04.766 26868 26868 E AndroidRuntime: at android .app.Activity.performCreate (Activity. java: 7802) 08-01 17: 43: 04.766 26868 26868 E AndroidRuntime: at android .app.Activity.performCreate (Activity. java: 7791) 08- 01 17: 43: 04.766 26868 26868 E AndroidRuntime: at android .app.Instrumentation.callActivityOnCreate (Instrumentation. java: 1306) 08-01 17: 43: 04.766 26868 26868 E AndroidRuntime: at android .app. ActivityThread.performLaunchActivity (ActivityThread. java: 3245) 08-01 17: 43: 04.766 26868 26868 E AndroidRuntime: at 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 (Transactio nExecutor. java: 135) 08-01 17: 43: 04.766 26868 26868 E AndroidRuntime: at android .app.servertransaction.TransactionExecutor.execute (TransactionExecutor. java: 95) 08-01 17: 43: 04.766 26868 26868 E AndroidRuntime: at android .app.ActivityThread $ H.handleMessage (ActivityThread. java: 2016) 08-01 17: 43: 04.766 26868 26868 E AndroidRuntime: at android .os.Handler.dispatchMessage ( Обработчик. java: 107) 08-01 17: 43: 04.766 26868 26868 E AndroidRuntime: at android .os.Looper.l oop (Looper. java: 214) 08-01 17:43: 04.766 26868 26868 E AndroidRuntime: at android .app.ActivityThread.main (ActivityThread. java: 7356) 08-01 17: 43: 04.766 26868 26868 E AndroidRuntime: at java .lang.reflect.Method.invoke (Собственный метод) 08-01 17: 43: 04.766 26868 26868 E AndroidRuntime: at com. android .internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit. java: 492) 08-01 17: 43: 04.766 26868 26868 E AndroidRuntime: at com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 930) 08-01 17: 43: 04.766 26868 26868 E AndroidRuntime: Caus редактор: 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 : add tag = data_app_cra sh isTagEnabled = true flags = 0x2 08-01 17: 43: 04.770 910 2871 W ActivityTaskManager: Принудительно завершить действие com.captivereality.javaunityplugin / com.example.sitagy.helloworld.StartUpActivity

Любая помощь была бы замечательной !! Заранее спасибо всем

1 Ответ

0 голосов
/ 02 августа 2020

Я смог решить это. Поэтому нам нужно добавить каждую поддерживаемую библиотеку, указанную в разделе «Внешние библиотеки» в Android Studio, в папку Unity Plugin / Android.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...