android P在集成第三方输入法的时候,根据网络给的教程一直没法打开。最后发现原来是写Android.mk文件的时候没有处理so库导致apk找不到库。把so库加上去即可以正常打开。
比如讯飞输入法,可以添加如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := iFlyIME
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_PREBUILT_JNI_LIBS := \
@lib/arm64-v8a/libcom_iflytek_inputmethod_aitalk.so \
@lib/arm64-v8a/libcom_iflytek_inputmethod_clt.so \
@lib/arm64-v8a/libcom_iflytek_inputmethod_effects.so \
@lib/arm64-v8a/libcom_iflytek_inputmethod_minigame.so \
@lib/arm64-v8a/libcom_iflytek_inputmethod_mmp.so \
@lib/arm64-v8a/libcom_iflytek_inputmethod_mmrec.so \
@lib/arm64-v8a/libcom_iflytek_inputmethod_ocr.so \
@lib/arm64-v8a/libcom_iflytek_inputmethod_search.so \
@lib/arm64-v8a/libcom_iflytek_inputmethod_security.so \
@lib/arm64-v8a/libcom_iflytek_inputmethod_settingsnew.so \
@lib/arm64-v8a/libcom_iflytek_inputmethod_skindiy.so \
@lib/arm64-v8a/libcom_iflytek_inputmethod_speechnote.so \
@lib/arm64-v8a/libcom_iflytek_inputmethod_themedetail.so \
@lib/arm64-v8a/libcom_iflytek_inputmethod_thirdbkservices.so \
@lib/arm64-v8a/libcom_iflytek_inputmethod_wk.so \
@lib/arm64-v8a/libdexopt.so \
@lib/arm64-v8a/libempty.so \
@lib/arm64-v8a/libEVad.so \
@lib/arm64-v8a/libgeneralcore-jni-v1001.so \
@lib/arm64-v8a/libiFlyNLI.so \
@lib/arm64-v8a/libiflytek-opus.so \
@lib/arm64-v8a/libintentengine.so \
@lib/arm64-v8a/liblwl.so \
@lib/arm64-v8a/libmaxengine.so \
@lib/arm64-v8a/libmsaoaidauth.so \
@lib/arm64-v8a/libmsaoaidsec.so \
@lib/arm64-v8a/libNativeCrashCollect.so \
@lib/arm64-v8a/libspeechlib.so \
@lib/arm64-v8a/libspeex_fyj2.so \
@lib/arm64-v8a/libvipfont.so
include $(BUILD_PREBUILT)
注意:这些so库名字可能会变化,而且需要注意自己的Android是64位还是32位的,根据需要进行添加。
如何查找?请参见如下:
把下载的输入法的apk包后缀改为zip:
然后解压zip:
进入lib:
看见两个库目录,系统是64位就进入arm64-v8a, 32位就进入armeabi:
把上面的编辑一下,添加进Android.mk文件即可。
添加第三方输入法其他步骤可以参见其他文章,比如: