I'm trying to build the AOSP keyboard from the 5.0.2 branch after adding some custom code to obtain pressure values for key touches. I'm using lunch full-eng
to build the source and using mm
to build LatinIME after I've added my changes.
I was having trouble with pre-optimization but was helped here on how to solve that. I'm now having the following error:
E/dalvikvm( 729): ERROR: couldn't find native method
E/dalvikvm( 729): Requested: Lcom/android/inputmethod/latin/BinaryDictionary;.createEmptyDictFileNative:(Ljava/lang/String;J[Ljava/lang/String;[Ljava/lang/String;)Z
W/dalvikvm( 729): Exception Ljava/lang/NoSuchMethodError; thrown while initializing Lcom/android/inputmethod/latin/utils/JniUtils;
W/dalvikvm( 729): Exception Ljava/lang/NoSuchMethodError; thrown while initializing Lcom/android/inputmethod/latin/LatinIME;
W/dalvikvm( 729): Class init failed in newInstance call (Lcom/android/inputmethod/latin/LatinIME;)
D/AndroidRuntime( 729): Shutting down VM
W/dalvikvm( 729): threadid=1: thread exiting with uncaught exception (group=0x41f1ada0)
E/AndroidRuntime( 729): FATAL EXCEPTION: main
E/AndroidRuntime( 729): Process: com.android.inputmethod.latin, PID: 729
E/AndroidRuntime( 729): java.lang.NoSuchMethodError: no static or non-static method "Lcom/android/inputmethod/latin/BinaryDictionary;.createEmptyDictFileNative(Ljava/lang/String;J[Ljava/lang/String;[Ljava/lang/String;)Z"
E/AndroidRuntime( 729): at java.lang.Runtime.nativeLoad(Native Method)
E/AndroidRuntime( 729): at java.lang.Runtime.doLoad(Runtime.java:435)
E/AndroidRuntime( 729): at java.lang.Runtime.loadLibrary(Runtime.java:363)
E/AndroidRuntime( 729): at java.lang.System.loadLibrary(System.java:526)
E/AndroidRuntime( 729): at com.android.inputmethod.latin.utils.JniUtils.<clinit>(JniUtils.java:28)
E/AndroidRuntime( 729): at com.android.inputmethod.latin.LatinIME.<clinit>(LatinIME.java:513)
E/AndroidRuntime( 729): at java.lang.Class.newInstanceImpl(Native Method)
E/AndroidRuntime( 729): at java.lang.Class.newInstance(Class.java:1208)
E/AndroidRuntime( 729): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2723)
E/AndroidRuntime( 729): at android.app.ActivityThread.access$1900(ActivityThread.java:169)
E/AndroidRuntime( 729): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1362)
E/AndroidRuntime( 729): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime( 729): at android.os.Looper.loop(Looper.java:146)
E/AndroidRuntime( 729): at android.app.ActivityThread.main(ActivityThread.java:5487)
E/AndroidRuntime( 729): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 729): at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime( 729): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
E/AndroidRuntime( 729): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
E/AndroidRuntime( 729): at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
E/AndroidRuntime( 729): at dalvik.system.NativeStart.main(Native Method)
LatinIME.java
has the following comment regarding this call:
Loading the native library eagerly to avoid unexpected UnsatisfiedLinkError at the initial JNI call as much as possible.
And JniUtils.java
makes the call
System.loadLibrary(JniLibName.JNI_LIB_NAME);
where JNI_LIB_NAME
is supposedly defined in com.android.inputmethod.latin.define.JniLibName
. This is where I believe my issue partially is.
BinaryDictionary.java
does not contain acreateEmptyDictFileNave
methodcom.android.inputmethod.latin.define.JniLibName
does not exist in the source code I got from Google's repo.
Like always, any help would be greatly appreciated as I'm very new to Android source building. Thank you.
Regards,
Ian