下载谷歌拼音输入法,提取so至lib
ls vendor/rockchip/common/apps/PinyinIME
Android.mk lib PinyinIME.apk
vendor/rockchip/common/apps/PinyinIME/Android.mk
###############################################################################
# PinyinIME
LOCAL_PATH := $(call my-dir)
#ifeq ($(strip $(TARGET_BOARD_HARDWARE)), rk30board)
#ifeq ($(strip $(TARGET_BOARD_PLATFORM_PRODUCT)), box)
include $(CLEAR_VARS)
LOCAL_MULTILIB := 32
LOCAL_MODULE := PinyinIME
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
#LOCAL_BUILT_MODULE_STEM := package.apk
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := shared
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_PREBUILT_JNI_LIBS := \
lib/arm/libjni_pinyinime.so
include $(BUILD_PREBUILT)
#endif
#endif
下载搜狗输入法,提取so文件
ls vendor/rockchip/common/apps/SogouIME/
Android.mk lib SogouIME.apk
vendor/rockchip/common/apps/SogouIME/Android.mk
###############################################################################
# SogouIME
LOCAL_PATH := $(call my-dir)
#ifeq ($(strip $(TARGET_BOARD_HARDWARE)), rk30board)
#ifeq ($(strip $(TARGET_BOARD_PLATFORM_PRODUCT)), box)
include $(CLEAR_VARS)
LOCAL_MULTILIB := 64
LOCAL_MODULE := SogouIME
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 := $(LOCAL_MODULE).apk
LOCAL_PREBUILT_JNI_LIBS := \
lib/arm64-v8a/libaffinity.so \
lib/arm64-v8a/libcleanmmap.so \
lib/arm64-v8a/libcrash_collect.so \
lib/arm64-v8a/libc++_shared.so \
lib/arm64-v8a/libCtaApiLib.so \
lib/arm64-v8a/libframesequence_doutu.so \
lib/arm64-v8a/libframesequence.so \
lib/arm64-v8a/libhttpdns.so \
lib/arm64-v8a/libkoom-java.so \
lib/arm64-v8a/libkwai-linker.so \
lib/arm64-v8a/liblogan.so \
lib/arm64-v8a/libluajava.so \
lib/arm64-v8a/libmarsxlog.so \
lib/arm64-v8a/libmmkv.so \
lib/arm64-v8a/libnative-sec.so \
lib/arm64-v8a/libopus_v1.so \
lib/arm64-v8a/libostar.so \
lib/arm64-v8a/libqmp.so \
lib/arm64-v8a/libSGMtlgShell.so \
lib/arm64-v8a/libsimple_vad.so \
lib/arm64-v8a/libsimplevadwrapper.so \
lib/arm64-v8a/libsogouime.so \
lib/arm64-v8a/libsogou_speex_nt_v01.so \
lib/arm64-v8a/libsogouupdcore.so \
lib/arm64-v8a/libtrace-canary.so \
lib/arm64-v8a/libvivo_account_wave.so \
lib/arm64-v8a/libweibosdkcore.so \
lib/arm64-v8a/libwind.so \
lib/arm64-v8a/libxhook_lib.so
include $(BUILD_PREBUILT)
#endif
#endif
集成至系统中
+++ b/vendor/rockchip/common/apps/apps.mk
@@ -9,6 +9,10 @@ PRODUCT_PACKAGES += \
PRODUCT_PACKAGES += \
RKUpdateService
+PRODUCT_PACKAGES += \
+ SogouIME \
+ PinyinIME
+
指定默认启动的输入法以及可用的输入法
frameworks/base/packages/SettingsProvider/res/values/defaults.xml
+ <string name="enabled_input_methods" translatable="false">com.sohu.inputmethod.sogou/.SogouIME:com.google.android.inputmethod.pinyin/.PinyinIME:com.android.inputmethod.latin/.LatinIME</string>
+ <string name="default_input_method" translatable="false">com.sohu.inputmethod.sogou/.SogouIME</string>
frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
在private void loadSecureSettings(SQLiteDatabase db) {中添加
+ loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS, R.string.enabled_input_methods);
+ loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD, R.string.default_input_method);
为对应的输入法应用默认分配指定的权限
frameworks/base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
在private void grantDefaultSystemHandlerPermissions(PackageManagerWrapper pm, int userId) {中添加
+ PackageInfo sogouIme = pm.getSystemPackageInfo("com.sohu.inputmethod.sogou");
+ if (sogouIme != null && doesPackageSupportRuntimePermissions(sogouIme)){
+ grantPermissionsToSystemPackage(pm,
+ sogouIme.packageName, userId,
+ MICROPHONE_PERMISSIONS, STORAGE_PERMISSIONS);
+ }