Получение ошибки java.lang.NoSuchMethodError при вызове функции андроида в unity3d? - PullRequest
0 голосов
/ 03 мая 2018

Мои шаги: (1) В unity3d я добавляю коды ниже:

AndroidJavaClass jc = new 
AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
jo.Call("Pay", "key");

(2) Экспортируйте проект Unity3d в Gradle (New), и я получаю проект gradle, включающий файлы действий:

  • UnityPlayerActivity.java
  • UnityPlayerNativeActivity.java
  • UnityPlayerProxyActivity.java

В AndroidManifest.xml основное действие:

android:name="com.fs.game.UnityPlayerActivity"

(3) Я добавляю функцию оплаты в файл UnityPlayerActivity.java:

public void Pay(String key)
{
    // test
}

(4) Наконец, используйте gradlew build, чтобы построить этот проект, и установите apk в мой мобильный телефон. Но когда я нажимаю кнопку тестирования, я получаю сообщение об ошибке:

java.lang.NoSuchMethodError: нет нестатического метода с именем = 'Pay' signature = '(Ljava / lang / String;) V' в классе Lcom.fs.game.UnityPlayerActivity;

Где проблема?

1 Ответ

0 голосов
/ 03 мая 2018

Я думаю, что ваш код правильный. Вы создаете его с помощью Gradle, и Gradle имеет плагин Proguard по умолчанию. Proguard используется для сжатия или запутывания кода, поэтому имя вашего метода может быть изменено путем запутывания.

Вы должны либо:

1> изменить build.gradle для отключения proguard

2> измените текстовый файл, используемый Proguard (например, proguard-android.txt, proguard-unity.txt), добавьте держите правила, чтобы ваш класс не был запутан.

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