Android系统内置第三方输入法

Android系统内置第三方输入法
一、添加APK进系统目录
1.1  package/目录下创建子目录,例如:package/inputmethod/SogouInput
1.2 将下载好的输入法APK放入目录下面,例如:package/inputmethod/SogouInput/sogouinput5.1.2.apk

二、使用Makefile进行编译管理

在Android系统中,每个APP都由Makefile管理着,目的是将该模块添加进整个系统编译

2.1 SogouInput目录下新建Android.mk

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := sogouinput5.1.2
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_BUILT_MODULE_STEM := package.apk
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_SRC_FILES := SogouInput.apk

LOCAL_PREBUILT_JNI_LIBS := \
    @lib/armeabi/libNinepatch.so \
    @lib/armeabi/libsogouupdcore.so \
    @lib/armeabi/libwebp.so \
    @lib/armeabi/libweibosdkcore.so

LOCAL_MULTILIB :=32

include $(BUILD_PREBUILT)

需要关注的宏:

LOCAL_MODULE := 输入法APK名称

LOCAL_SRC_FILES := 系统编译之后APK的名称

LOCAL_PREBUILT_JNI_LIBS := \ 解压APK lib路径下的.so动态链接库,一般使用JNI的API都会有这个路径,一定要添加进Mkfile里面

LOCAL_MULTTLIB := 32 so库是32位还是64位,64位lib目录下面会有很多文件夹,32位没有那么多

2.2 inputmethod目录下新建inputmethod.mk(这个文件名随意,但是得取得有意义)

PRODUCT_PACKAGES += \
    SogouInput
endif
PRODUCT_PACKAGES +=\ 这个宏经常用在多个APP目录最外面一层,目的是等下将他包含在主要的编译文件里面,进行管理。这里的目的就是为了管理SogouInput文件夹里面的那个Makefile。注意我这边为了演示只给这个宏加了一个文件夹,实际项目可能有多个,以\换行来间隔,最后一个不用加\

2.3 inputmethod目录下新建inputmethod.mk(这个文件名随意,但是得取得有意义)

2.4 将inputmethod.mk添加到系统编译中

$(call inherit-product, packages/package/inputmethod/inputmethod.mk)

添加的地方是在某个Makefile,一套代码可以编译N个项目出来,具体需求根据项目来进行


三、将输入法添加进Settings可选项

Settings -> (个人)语言和输入法 -> (键盘和输入法)里面一般有包含谷歌拼音输入法、Android键盘(AOSP)可是并没有搜狗输入法选项,所以我们要添加进来

修改路径:

frameworks/base/packages/SettingsProvider/res/values/customize.xml

com.iflytek.inputmethod/.FlyIME:com.android.inputmethod.latin/.LatinIME:com.sohu.inputmethod.sogou/.SogouIME

com.sohu.inputmethod.sogou/.SogouIME是新增进去的,以:(分号间隔),这个是官方规定的规范,可上网查阅

这里提供几个常用的:

百度: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

最后就可以编译了,一定要全编!单编这个模块不能将Makefile包含进来。其实任何APK都可以以这种方式进行内置,最终安装在手机system/app/目录下面

你可能感兴趣的:(Android系统应用)