lineageos预置第三方apk,android 内置APK成系统应用

以百度输入法为例

百度Mac输入法-支持全拼、双拼、五笔,兼容最新OS百度Mac输入法支持拼音/五笔输入,采用百度三代内核+三维词库,拥有极速输入响应,超高出词精准度,优雅外观设计和卓越用户体验。为输入提速,让Mac更出色!https://shurufa.baidu.com/

/packages/apps/下新建一个目录,定为baiduinput。下载的输入法应用为baiduinput.apk

2. 将baiduinput.apk(需要内置的apk)放置在第一步新建的baiduinput目录下。

3. 请将以下内容复制并保存为Android.mk ,同样放在baiduinput目录下 

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
#要想用户能卸载内置的apk,请在Android.mk文件中把变量值
#LOCAL_MODULE_TAGS由optional,user改为tests
LOCAL_MODULE_TAGS := tests
LOCAL_MODULE := baiduinput
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_SRC_FILES := baiduinput.apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
#LOCAL_PRIVILEGED_MODULE := true

include $(BUILD_PREBUILT)

注意:

要想用户能卸载内置的apk,请在Android.mk文件中把变量值

LOCAL_MODULE_TAGS由user改为tests

4. 在build/target/product/handheld_product.mk文件中的PRODUCT_PACKAGES这一项添加一行baiduinput

lineageos预置第三方apk,android 内置APK成系统应用_第1张图片

5. 将从###.apk解压出来的库###.so拷到

/out/target/product/你的设备/system/lib/目录下(无so库的apk内置时,去掉此步骤,我当时没有copy但是也可以正常运行的,但是内置应用宝时出问题了,另外我自己写的app也没有copy so ,实际用到了so,但是可以运行,但是2021 11 2日测试语音输入不好用了,可能是so的问题,还是老实得安上so吧,上了so语音输入还是不好用,最终换成搜狗输入法)。

特别注意:依照上述步骤制作,在编译时会出现错误而停止编译,这主要是LOCAL_MODULE_TAGS := user而引起的。

LOCAL_MODULE_TAGS :=user eng tests optional

user: 指该模块只在user版本下才编译

eng: 指该模块只在eng版本下才编译

tests: 指该模块只在tests版本下才编译

optional:指该模块在所有版本下都编译

最后一步,把baidu输入法定义为系统默认的方法

在frameworks/base/packages/SettingsProvider/res/values/defaults.xml最后加入


    com.baidu.input/.ImeService
    com.baidu.input/.ImeService

 lineageos预置第三方apk,android 内置APK成系统应用_第2张图片

 在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.def_enabled_input_methods);

lineageos预置第三方apk,android 内置APK成系统应用_第3张图片

然后重新编译一下就可以了,实测不用把输入法中的库再安装一遍 

以下是换成搜狗默认输入法的一些配置,使用的是10.35.1:

PREBUILT_PATH := $(call my-dir)
LOCAL_PATH         := $(PREBUILT_PATH)

include $(CLEAR_VARS)
LOCAL_DEX_PREOPT := false
LOCAL_MODULE := SogouInput
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_CERTIFICATE := PRESIGNED

LOCAL_MODULE_SUFFIX := .apk
LOCAL_SRC_FILES := SogouInput.apk
LOCAL_MODULE_PATH   := $(PRODUCT_OUT)/system/app

LOCAL_PREBUILT_JNI_LIBS := \
  @lib/armeabi/libA3AEECD8.so \
  @lib/armeabi/libac_checker.so \
  @lib/armeabi/libaffinity.so \
  @lib/armeabi/libawp.so \
  @lib/armeabi/libc++_shared.so \
  @lib/armeabi/libcrash_collect.so \
  @lib/armeabi/libCtaApiLib.so \
  @lib/armeabi/libframesequence.so \
  @lib/armeabi/libframesequence_doutu.so \
  @lib/armeabi/libhookmem.so \
  @lib/armeabi/libkoom-java.so \
  @lib/armeabi/libkwai-linker.so \
  @lib/armeabi/liblogan.so \
  @lib/armeabi/libluajava.so \
  @lib/armeabi/libmarsxlog.so \
  @lib/armeabi/libmmkv.so \
  @lib/armeabi/libmultidex.so \
  @lib/armeabi/libnative-sec.so \
  @lib/armeabi/libopus_v1.so \
  @lib/armeabi/libQt.so \
  @lib/armeabi/libSGMtlgShell.so \
  @lib/armeabi/libsimple_vad.so \
  @lib/armeabi/libsimplevadwrapper.so \
  @lib/armeabi/libsogou_speex_nt_v01.so \
  @lib/armeabi/libSogouAgc_v1.so \
  @lib/armeabi/libsogouupdcore.so \
  @lib/armeabi/libtrace-canary.so \
  @lib/armeabi/libvivo_account_wave.so \
  @lib/armeabi/libweibosdkcore.so \
  @lib/armeabi/libwind.so \
  @lib/armeabi/libxgVipSecurity.so \
  @lib/armeabi/libxhook.so \
  @lib/armeabi/libxhook_lib.so \


include $(BUILD_PREBUILT)



语音输入好用了!

在frameworks/base/packages/SettingsProvider/res/values/defaults.xml最后加入

    com.sohu.inputmethod.sogou/.SogouIME
    com.sohu.inputmethod.sogou/.SogouIME

在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.def_enabled_input_methods);

你可能感兴趣的:(lineageOS,android)