我的步骤: (1)在unity3d中我添加了代码:
AndroidJavaClass jc = new
AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
jo.Call("Pay", "key");
(2)将Unity3d项目导出到Gradle(新),我得到一个包含活动文件的gradle项目:
在AndroidManifest.xml中,主要活动是:
android:name="com.fs.game.UnityPlayerActivity"
(3)我在文件UnityPlayerActivity.java中添加了一个Pay函数:
public void Pay(String key)
{
// test
}
(4)最后,使用gradlew build
构建此项目,并在我的手机中安装apk。
但是当我点击测试按钮时,我收到错误:
java.lang.NoSuchMethodError:没有名称='Pay'的非静态方法 在课堂上签名='(Ljava / lang / String;)V' Lcom.fs.game.UnityPlayerActivity;
问题出在哪里?
答案 0 :(得分:0)
我认为你的代码是正确的。 你用gradle构建它,gradle默认有一个插件 Proguard 。 Proguard用于缩小或混淆代码,因此您的方法名称可能会被混淆改变。
你应该:
1&GT;编辑 build.gradle 以禁用proguard
2 - ;修改Proguard使用的txt文件(例如proguard-android.txt,proguard-unity.txt),添加保持规则以防止你的类被混淆。