安卓11添加第三方输入法替换默认输入法

1.下载需要的输入法apk

建议去官网,没有奇奇怪怪的东西

2.更改apk的后缀名为.7z(部分不需要改,可以直接拿压缩软件打开),解压拿到lib库

会发现里面有两个文件夹
lib文件夹

而我们只需要其中一个文件的.so文件,上面的是对应64位,下面的是32位,按需求创建一个lib文件夹去存放.so文件

3.在packages\apps创建文件夹,文件夹名字与输入法一致

 在文件夹内放置lib库和apk

4.在文件夹内创建Android.mk文件,内容为:


LOCAL_PATH := $(call my-dir)
################################################################################
include $(CLEAR_VARS)
LOCAL_MODULE := iFlyIME
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_BUILT_MODULE_STEM := package.apk
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
#LOCAL_PRIVILEGED_MODULE := true
#LOCAL_DEX_PREOPT := false
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk

LOCAL_MULTILIB :=64
LOCAL_PREBUILT_JNI_LIBS := \
    lib/libEVad.so \
    lib/libNativeCrashCollect.so \
    lib/libcom_iflytek_inputmethod_aitalk.so \
    lib/libcom_iflytek_inputmethod_clt.so \
    lib/libcom_iflytek_inputmethod_effects.so \
    lib/libcom_iflytek_inputmethod_minigame.so \
    lib/libcom_iflytek_inputmethod_mmp.so \
    lib/libcom_iflytek_inputmethod_mmrec.so \
    lib/libcom_iflytek_inputmethod_ocr.so \
    lib/libcom_iflytek_inputmethod_search.so \
    lib/libcom_iflytek_inputmethod_security.so \
    lib/libcom_iflytek_inputmethod_settingsnew.so \
    lib/libcom_iflytek_inputmethod_skindiy.so \
    lib/libcom_iflytek_inputmethod_speechnote.so \
    lib/libcom_iflytek_inputmethod_themedetail.so \
    lib/libcom_iflytek_inputmethod_thirdbkservices.so \
    lib/libcom_iflytek_inputmethod_wk.so \
    lib/libdexopt.so \
    lib/libempty.so \
    lib/libgeneralcore-jni-v1001.so \
    lib/libiFlyNLI.so \
    lib/libiflytek-opus.so \
    lib/libintentengine.so \
    lib/liblwl.so \
    lib/libmaxengine.so \
    lib/libmsaoaidauth.so \
    lib/libmsaoaidsec.so \
    lib/libspeechlib.so \
    lib/libspeex_fyj2.so \
    lib/libvipfont.so

include $(BUILD_PREBUILT)
################################################################################

LOCAL_MODULE指代的文件夹,我这里改了apk的名字,对应apk文件夹的名字也是如此
(注:apk包名的改变不影响实际应用的名称)
LOCAL_MULTILIB :=64 这里很显然是用来写多少位的
LOCAL_PREBUILT_JNI_LIBS :这个是用来引用.so文件的,你的lib库有啥,就做对应的修改

5.在项目中添加

路径:

device\mediatek\system\common\device.mk

内容:

PRODUCT_PACKAGES += iFlyIME
这个加入的位置不唯一,主要是让这个包能在系统中编译出来

6.添加字符串资源

路径:

vendor\mediatek\proprietary\packages\apps\SettingsProvider\res\values\defaults.xml
(这个路径可能有的没有,是公司弄的,个别修改需要对照自己公司,可以通过命令:
find -name “defaults.xml” 去自己项目找,主要是在SettingsProvider下面的)

修改:

<string name="enabled_input_methods">com.google.android.googlequicksearchbox/com.google.android.voicesearch.ime.VoiceInputMethodService:com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME:com.iflytek.inputmethod/.FlyIME</string>
<string name="default_input_method">com.iflytek.inputmethod/.FlyIME</string>

说明一下,上面的是指安装的所有输入法,一般同一种输入法的语音和手写用 / 分离,不同种的输入法用 : ,我这里写了3个的输入法,讯飞是最后一个的,至于怎么写,前面那个是包名,可以用反编译软件去读取AndroidMainfest.xml文件中的package就是了,后面就不知道了

7.在loadSecureSettings(SQLiteDatabase db)添加对字符串资源的引用

路径:

vendor\mediatek\proprietary\packages\apps\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.java
(路径找对应的次级目录就好了,全部路径肯定是多少有区别的)

修改:

loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS, R.string.enabled_input_methods);
loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD, R.string.default_input_method);

8.烧录和检验成果

成果可以直接设置里面看,但咱们no,用命令
win+R 打开cmd 输入指令:
adb shell settings get secure default_input_method
在正常的输出这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值