看板 AndroidDev 關於我們 聯絡資訊
小弟為Android開發新手 現在寫了一個簡單的範例要在unity裡呼叫Android的Plugin 可是會一直出現這樣的錯誤 AndroidJavaException: java.lang.NoSuchMethodError: no method with name="ExecuteCommand" (ExecuteCommand為我所要呼叫Androi裡的函數) 我兩邊的CODE大概是這樣的 執行的結果 onCreate和LoginButtonClick都有確實執行到 但是為什麼會無法呼叫到ExecuteCommand這個函數 還請各位有經驗的前輩們幫我抓一下錯誤是卡在那裡 感謝感謝.... Android端 xxxxxxxxInterface.java---------------------- public class xxxxxxxxInterface extends UnityPlayerActivity { Context mContext = null; @Override public void onCreate(Bundle savedInstanceState) { Log.i("xxxxxxxxInterface Android", "onCreate"); super.onCreate(savedInstanceState); mContext = this; } public String ExecuteCommand(String strCommand,Object... params) { Log.i("xxxxxxxxInterface Android", "ExecuteCommand: " + strCommand); if(strCommand.equals("Login")) { return Login(); } } } Unity端 xxxxxxxxInterface.cs---------------------- public class xxxxxxxxxInterface : MonoBehaviour { AndroidJavaClass m_jc = null; AndroidJavaObject m_jo = null; void Start () { Debug.Log ("Start Init"); m_jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); if (m_jc == null) { return; } m_jo = m_jc.GetStatic<AndroidJavaObject>("currentActivity"); if (m_jo == null) { return; } Debug.Log ("Finish Init"); } void Update () { } public void onLoginButtonClick() { Debug.Log ("Login Button Click"); if (m_jc != null) { string result = m_jc.Call <string> ("ExecuteCommand", "Login"); Debug.Log ("result); } else { Debug.Log ("Login Fail"); } } } -- 樂於當宅男 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.212.40.178 ※ 文章網址: http://www.ptt.cc/bbs/AndroidDev/M.1409042284.A.B0A.html
vcidt: 應該是你lib檔案中沒包到那個方法 可以查查 08/26 22:29
euph: 請問沒有包到那個檔是什麼意思呢 因為我就兩邊個一個檔而已 08/27 10:02
euph: 包成JAR檔之後也有確實複製了 在onCreate的時候有印出onCrea 08/27 10:03
euph: 卡了一整天 有點小苦悶... 08/27 10:03
vcidt: 你的JAR檔有沒有打包到那個方法呢? 用JD-GUI查一下 08/27 23:35
結果我自己找出問題了 從UNITY端呼叫函數時 像這樣的 不定數參數是無法被認識的 所以會完全找不到 public String ExecuteCommand(String strCommand,Object... params) 如果是預先宣告好參數個數(無參數或是一個參數這樣) 就可以順利呼叫到了 ※ 編輯: euph (122.212.40.178), 08/28/2014 11:53:26
vcidt: 恭喜! 08/28 22:44
euph: 謝謝~~~ 09/01 16:14