[問題] 請問在unity裡呼叫Android Plugin的問題

看板AndroidDev作者 (咬咬嚼嚼猴子口味)時間11年前 (2014/08/26 16:38), 11年前編輯推噓3(304)
留言7則, 2人參與, 最新討論串1/2 (看更多)
小弟為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

08/26 22:29, , 1F
應該是你lib檔案中沒包到那個方法 可以查查
08/26 22:29, 1F

08/27 10:02, , 2F
請問沒有包到那個檔是什麼意思呢 因為我就兩邊個一個檔而已
08/27 10:02, 2F

08/27 10:03, , 3F
包成JAR檔之後也有確實複製了 在onCreate的時候有印出onCrea
08/27 10:03, 3F

08/27 10:03, , 4F
卡了一整天 有點小苦悶...
08/27 10:03, 4F

08/27 23:35, , 5F
你的JAR檔有沒有打包到那個方法呢? 用JD-GUI查一下
08/27 23:35, 5F
結果我自己找出問題了 從UNITY端呼叫函數時 像這樣的 不定數參數是無法被認識的 所以會完全找不到 public String ExecuteCommand(String strCommand,Object... params) 如果是預先宣告好參數個數(無參數或是一個參數這樣) 就可以順利呼叫到了 ※ 編輯: euph (122.212.40.178), 08/28/2014 11:53:26

08/28 22:44, , 6F
恭喜!
08/28 22:44, 6F

09/01 16:14, , 7F
謝謝~~~
09/01 16:14, 7F
文章代碼(AID): #1J_4TiiA (AndroidDev)
文章代碼(AID): #1J_4TiiA (AndroidDev)