1、编译打包签名的输入法apk
CangjieIME.apk
2、拷贝apk到源码指定目录,编写编译mk文件
# cd /work/xxx/android7/device/rockchip/rk33xx/rk33xx_xxx/preinstall
# preinstall.mk
PRODUCT_PACKAGES += CangjieIME
# cd /work/xxx/android7/device/rockchip/rk33xx/rk33xx/preinstall/CangjieIME
# cp xxx/CangjieIME.apk ./
# vim Android.apk
LOCAL_PATH := $(my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := CangjieIME
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/bundled_persist-app
LOCAL_SRC_FILES := $(LOCAL_MODULE)$(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_DEX_PREOPT := false
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_JNI_SHARED_LIBRARIES_ABI := arm64-v8a
# 如果有so库的话
MY_LOCAL_PREBUILT_JNI_LIBS := \
lib/arm64-v8a/libjni_pinyinime.so\
lib/arm64-v8a/libsqlcipher.so\
MY_APP_LIB_PATH := $(TARGET_OUT_VENDOR)/bundled_persist-app/$(LOCAL_MODULE)/lib/$(LOCAL_JNI_SHARED_LIBRARIES_ABI)
ifneq ($(LOCAL_JNI_SHARED_LIBRARIES_ABI), None)
$(warning MY_APP_LIB_PATH=$(MY_APP_LIB_PATH))
LOCAL_POST_INSTALL_CMD := mkdir -p $(MY_APP_LIB_PATH) $(foreach lib, $(MY_LOCAL_PREBUILT_JNI_LIBS), ; cp -f $(LOCAL_PATH)/$(lib) $(MY_APP_LIB_PATH)/$(notdir $(lib)))
endif
include $(BUILD_PREBUILT)
3、修改源码,预置默认输入法服务启动选项
1)
# vim ./frameworks/base/packages/SettingsProvider/res/values/defaults.xml
<string name="def_input_method" translatable="false">com.googlecode.tcime/.CangjieIME</string>
<string name="def_enable_input_methods" translatable="false">com.googlecode.tcime/.CangjieIME</string>
2)将默认配置添加到数据库#vim frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD, R.string.def_input_method);
loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS,R.string.def_enable_input_methods);
4、Android源码编译刷机
5、恢复出厂设置
注意:增量包升级,必须恢复出厂设置才能够生效
参考文章: