RK3568 Android11预置搜狗\谷歌拼音输入法

866 阅读1分钟

下载谷歌拼音输入法,提取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);
+        }