Android系统内置第三方输入法

http://blog.csdn.net/u012169524/article/details/51155886


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

[javascript]  view plain  copy
  1. LOCAL_PATH:= $(call my-dir)  
  2.   
  3. include $(CLEAR_VARS)  
  4. LOCAL_MODULE := sogouinput5.1.2  
  5. LOCAL_MODULE_CLASS := APPS  
  6. LOCAL_MODULE_TAGS := optional  
  7. LOCAL_BUILT_MODULE_STEM := package.apk  
  8. LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)  
  9. LOCAL_CERTIFICATE := PRESIGNED  
  10. LOCAL_SRC_FILES := SogouInput.apk  
  11.   
  12. LOCAL_PREBUILT_JNI_LIBS := \  
  13.     @lib/armeabi/libNinepatch.so \  
  14.     @lib/armeabi/libsogouupdcore.so \  
  15.     @lib/armeabi/libwebp.so \  
  16.     @lib/armeabi/libweibosdkcore.so  
  17.   
  18. LOCAL_MULTILIB :=32  
  19.   
  20. 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(这个文件名随意,但是得取得有意义)

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

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

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

[javascript]  view plain  copy
  1. $(call inherit-product, packages/package/inputmethod/inputmethod.mk)  

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


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

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

修改路径:

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

[javascript]  view plain  copy
  1. <string name="def_enable_input_methods" translatable="false">com.iflytek.inputmethod/.FlyIME:com.android.inputmethod.latin/.LatinIME:com.sohu.inputmethod.sogou/.SogouIME</string>  

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系统内置第三方输入法)