原生Android7.1 添加第三方输入法

平台:msm8953_64
Android 7.1.2
Ubuntu 16.04

第一步,获取输入输入法
(1)到讯飞输入法官网下载xxx.apk文件
(2)在packages/apps 目录下新建FlyIMEjackw目录,该目录名字后面要用到
(3)将输入法xxx.apk文件拷贝到FlyIMEjackw目录
(4) mv xxx.apk xxx.zip
    unzip xxx.zip


第二步 将输入法加入到系统编译中
(1)在FlyIMEjackw目录下,创建Android.mk文件,把下面内容添加到Android.mk文件
#add by jackw 20180908 for add FLYIME inputmethod

PREBUILT_PATH := $(call my-dir)
LOCAL_PATH         := $(PREBUILT_PATH)

include $(CLEAR_VARS)
LOCAL_MODULE        := FlyIMEjackw
LOCAL_MODULE_CLASS  := APPS
#LOCAL_CERTIFICATE   := platform
LOCAL_MODULE_TAGS := optional
LOCAL_CERTIFICATE := PRESIGNED

LOCAL_MODULE_SUFFIX := .apk
LOCAL_SRC_FILES     := FlyIMEjackw.apk
LOCAL_MODULE_PATH   := $(PRODUCT_OUT)/system/app
LOCAL_PREBUILT_JNI_LIBS :=\
@lib/armeabi/libcom_iflytek_inputmethod_mmp.so \
@lib/armeabi/libcom_iflytek_inputmethod_ocr.so \
@lib/armeabi/libcom_iflytek_inputmethod_setting.so \
@lib/armeabi/libcom_iflytek_inputmethod_thirdbkservices.so \
@lib/armeabi/libcom_iflytek_inputmethod_translate.so \
@lib/armeabi/libdexopt.so \
@lib/armeabi/libencdec-jni-v1.so \
@lib/armeabi/liblwl.so \
@lib/armeabi/libMetaVAD-v1.so \
@lib/armeabi/libmsc-v8.so \
@lib/armeabi/libnalsocket.so \
@lib/armeabi/libNativeCrashCollect.so \
@lib/armeabi/libsmartaiwrite-jni-v30.so \
@lib/armeabi/libvadLib-v5.so \
@lib/armeabi/libvipfont.so
include $(BUILD_PREBUILT)

(2)build/target/product/core.mk  在PRODUCT_PACKAGES += \的最后加入需要编译的APPS目录FlyIMEjackw
PRODUCT_PACKAGES += \
    BasicDreams \
    BlockedNumberProvider \
    BookmarkProvider \
    Browser2 \
    Calendar \
    CalendarProvider \
    CaptivePortalLogin \
    CertInstaller \
    Contacts \
    DeskClock \
    DocumentsUI \
    DownloadProviderUi \
    Email \
    ExactCalculator \
    Exchange2 \
    ExternalStorageProvider \
    FusedLocation \
    InputDevices \
    KeyChain \
    Keyguard \
    Launcher2 \
    ManagedProvisioning \
    MtpDocumentsProvider \
    PicoTts \
    PacProcessor \
    libpac \
    PrintSpooler \
    PrintRecommendationService \
    ProxyHandler \
    QuickSearchBox \
    Settings \
    SharedStorageBackup \
    StorageManager \
    Telecom \
    TeleService \
    VpnDialogs \
    MmsService \
    FlyIMEjackw

第三步,修改系统默认输入法
各种输入法的ID
    百度:com.baidu.input/.ImeService
    讯飞:com.iflytek.inputmethod/.FlyIME
    腾讯:com.tencent.qqpinyin/.QQPYInputMethodService
    谷歌:com.google.android.inputmethod.pinyin/.PinyinIME
    搜狗:com.sohu.inputmethod.sogou/.SogouIME
    触宝:com.cootek.smartinput5/.TouchPalIME
(1) frameworks/base/packages/SettingsProvider/res/values/defaults.xml在下面2行原始代码中添加输入法ID  
    (输入法ID)
    (输入法ID)
添加后为
    com.iflytek.inputmethod.FlyIME
    com.iflytek.inputmethod.FlyIME

 

下面是我在defaults.xml添加后的可用代码:
    com.iflytek.inputmethod.FlyIME
    com.iflytek.inputmethod.FlyIME

   
    com.iflytek.inputmethod.FlyIME

   
 

(2)frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java 增加下面1行代码

          //add by jackw 20180908 for add zh_cn inputmethod
           loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,R.string.default_input_method);

第4步,make -j12 编译
在target/product/msm8953_64/system/app目录下,有FlyIMEjackw目录,
ls FlyIMEjackw
FlyIMEjackw.apk  oat

 

 

你可能感兴趣的:(Android,输入法)