【发布时间】:2015-03-22 00:56:51
【问题描述】:
在添加一些自定义代码以获取按键触摸的压力值后,我正在尝试从 5.0.2 分支构建 AOSP 键盘。添加更改后,我使用 lunch full-eng 构建源代码并使用 mm 构建 LatinIME。
我在进行预优化时遇到了问题,但在这里得到了有关如何解决 that 的帮助。我现在遇到以下错误:
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 对此电话有以下评论:
急切地加载本机库以避免意外 UnsatisfiedLinkError 在初始 尽可能多地调用JNI。
然后JniUtils.java 拨打电话
System.loadLibrary(JniLibName.JNI_LIB_NAME);
其中JNI_LIB_NAME 应该在com.android.inputmethod.latin.define.JniLibName 中定义。这就是我认为我的部分问题所在。
-
BinaryDictionary.java不包含createEmptyDictFileNave方法 -
com.android.inputmethod.latin.define.JniLibName不存在于我从 Google 的 repo 获得的源代码中。
像往常一样,任何帮助都将不胜感激,因为我对 Android 源代码构建非常陌生。谢谢。
问候,
伊恩
【问题讨论】:
标签: android keyboard android-softkeyboard android-source nosuchmethoderror