I am working on a Unity3D & Android cross-platform project.
I want improve the performance, so I changed my code.
This is my first attempt.
In C#
string str = JO.Call<string> ("GetDevices");
in Java
public String GetDevices() {
String devices = "";
/* ... */
return devices;
}
It works, but I don't like this.
So, I changed it like this:
In C#
string[,] str = new string[deviceNum,2];
str = JO.Call<string[,]> ("GetDevices");
In Java
public String[][] GetDevices() {
String[][] devices = {{""}};
/* ... */
return devices;
}
But it doesn't work. What am I doing wrong?
This is my first attempt log :
I/Unity: Exception: JNI: System.Array in n dimensions is not allowed
at UnityEngine._AndroidJNIHelper.GetSignature (System.Object obj) [0x00000] in <filename unknown>:0
at UnityEngine._AndroidJNIHelper.GetSignature[String[,]] (System.Object[] args) [0x00000] in <filename unknown>:0
at UnityEngine._AndroidJNIHelper.GetMethodID[String[,]] (IntPtr jclass, System.String methodName, System.Object[] args, Boolean isStatic) [0x00000] in <filename unknown>:0
at UnityEngine.AndroidJNIHelper.GetMethodID[String[,]] (IntPtr jclass, System.String methodName, System.Object[] args, Boolean isStatic) [0x00000] in <filename unknown>:0
at UnityEngine.AndroidJavaObject._Call[String[,]] (System.String methodName, System.Object[] args) [0x00000] in <filename unknown>:0
at UnityEngine.AndroidJavaObject.Call[String[,]] (System.String methodName, System.Object[] args) [0x00000] in <filename unknown>:0
And I tried "Pef" way and log like this
07-18 10:21:58.318 18999-19055/? I/Unity: Exception: JNI: Unknown generic array type 'System.String[]'
at UnityEngine._AndroidJNIHelper.ConvertFromJNIArray[String[][]] (IntPtr array) [0x00000] in <filename unknown>:0
at UnityEngine.AndroidJNIHelper.ConvertFromJNIArray[String[][]] (IntPtr array) [0x00000] in <filename unknown>:0
at UnityEngine.AndroidJavaObject._Call[String[][]] (System.String methodName, System.Object[] args) [0x00000] in <filename unknown>:0
at UnityEngine.AndroidJavaObject.Call[String[][]] (System.String methodName, System.Object[] args) [0x00000] in <filename unknown>:0