当前位置: 首页 > news >正文

AOSP内置搜狗输入并设置默认输入法

前期准备

AOSP分支:aosp13_r7
系统版本:Ubuntu 22.04.1 LTS

工具:手,vscode,winscp(因为我是用的服务器编译)

下载搜狗输入法

思路:

1.集成搜狗输入法到aosp

2.删除系统输入法

3.设置搜狗输入法为默认输入法

4.编译测试

5.问题整理

集成搜狗输入法到aosp

搜狗输入法的apk重命名为SougouInput.apk
连接上服务器,进入到
/packages/apps目录

cd /packages/apps/

新建一个命名为SougouInput的文件夹

mkdir SougouInput

将SougouInput.apk上传至SougouInput文件夹下
在这里插入图片描述

新建一个Android.mk文件

touch Android.mk

接着

vim Android.mk

将下面的内容粘贴到Android.mk里

LOCAL_PATH := $(my-dir)include $(CLEAR_VARS)
LOCAL_MODULE := SougouInput
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_PRIVILEGED_MODULE := false
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MULTILIB :=64
LOCAL_PREBUILT_JNI_LIBS := \@lib/arm64-v8a/libaffinity.so \@lib/arm64-v8a/libbugly_dumper.so \@lib/arm64-v8a/libBugly_Native.so \@lib/arm64-v8a/libc++_shared.so \@lib/arm64-v8a/libcleanmmap.so \@lib/arm64-v8a/libcrash_collect.so \@lib/arm64-v8a/libCtaApiLib.so \@lib/arm64-v8a/libframesequence.so \@lib/arm64-v8a/libframesequence_doutu.so \@lib/arm64-v8a/libhttpdns.so \@lib/arm64-v8a/libluajava.so \@lib/arm64-v8a/libmarsxlog.so \@lib/arm64-v8a/libMMANDKSignature.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/libsogou_speex_nt_v01.so \@lib/arm64-v8a/libsogouime.so \@lib/arm64-v8a/libsogouupdcore.so \@lib/arm64-v8a/libtma_blowing_sound_detection.so \@lib/arm64-v8a/libtrace-canary.so \@lib/arm64-v8a/libturingga.so \@lib/arm64-v8a/libvivo_account_wave.so \@lib/arm64-v8a/libweibosdkcore.so \include $(BUILD_PREBUILT)

保存Android.mk文件

接着打开文件/build/make/target/product/aosp_product.mk

#
# Copyright (C) 2019 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
## Includes all AOSP product packages
$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_product.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_product.mk)# Default AOSP sounds
$(call inherit-product-if-exists, frameworks/base/data/sounds/AllAudio.mk)# Additional settings used in all AOSP builds
PRODUCT_PRODUCT_PROPERTIES += \ro.config.ringtone?=Ring_Synth_04.ogg \ro.config.notification_sound?=pixiedust.ogg \ro.com.android.dataroaming?=true \# More AOSP packages
PRODUCT_PACKAGES += \messaging \PhotoTable \preinstalled-packages-platform-aosp-product.xml \WallpaperPicker \SougouInput \ #这里新加一行# Telephony:
#   Provide a APN configuration to GSI product
PRODUCT_COPY_FILES += \device/sample/etc/apns-full-conf.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/apns-conf.xml

保存文件后,搜狗输入法已经被我们集成到aosp中了

删除系统输入法

刚刚我们在/packages/inputmethods文件夹下的LatinIME就是系统默认的输入法
在这里插入图片描述

既然我们把搜狗输入法内置进去了,那么LatinIME就没有存在的必要了,删除的话需要找到使用LatinIME的地方

这里为了提高效率,使用vscode远程连接到aosp代码目录,全局搜索 LatinIME
在这里插入图片描述

从这里看到有很多个,询问度娘后注释handheld_handle.mk里的LatinIME
在这里插入图片描述

设置搜狗输入法为默认输入法

接下来把搜狗输入法设置为默认输入法

打开defaults.xml文件

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

在最后加上配置

    <!-- 设置默认输入法 --><string name="def_enabled_input_methods" translatable="false">com.sohu.inputmethod.sogou/.SogouIME</string>

在这里插入图片描述

打开DatabaseHelper.java文件

framwork/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java

搜索loadSecureSettings方法,定位到一个比较优雅的位置

private void loadSecureSettings(SQLiteDatabase db) {SQLiteStatement stmt = null;try {stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)"+ " VALUES(?,?);");// Don't do this.  The SystemServer will initialize ADB_ENABLED from a// persistent system property instead.//loadSetting(stmt, Settings.Secure.ADB_ENABLED, 0);省略.......loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_SPEAK_PASSWORD,R.bool.def_accessibility_speak_password);//添加到这里loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS,R.string.def_enabled_input_methods);省略.......
}

编译测试

回到aosp目录下,执行

source build/envsetup.sh
//这里的xxx自行选择,例如pixel4就选aosp_flame-userdebug 
lunch xxx
//输入-j32之前心里要对电脑配置有点数,没数的话可以只输入m,它会自己选择适当的核数
m -j32

two thousand years later …

在这里插入图片描述

问题整理

  1. 在执行lunch后发现毛都没有
    在这里插入图片描述

问题出在handheld_handle.mk中,#LatinIME \ 引起的错误,解决方法是把LatinIME \删掉
在这里插入图片描述

相关文章:

AOSP内置搜狗输入并设置默认输入法

前期准备 AOSP分支&#xff1a;aosp13_r7 系统版本&#xff1a;Ubuntu 22.04.1 LTS 工具&#xff1a;手&#xff0c;vscode&#xff0c;winscp(因为我是用的服务器编译) 下载搜狗输入法 思路&#xff1a; 1.集成搜狗输入法到aosp 2.删除系统输入法 3.设置搜狗输入法为默…...

ICCV 2023|通过慢学习和分类器对齐在预训练模型上进行持续学习

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 作者介绍 张耕维 悉尼科技大学在读博士生&#xff0c;研究方向为持续学习 报告题目 通过慢学习和分类器对齐在预训练模型上进行持续学习 内容简介 持续学习研究的目标在于提高模型利用顺序到达的数据进行学习的…...

蓝桥杯打卡Day5

文章目录 日志排序重复者 一、日志排序IO链接 本题思路:本题就是根据就是排序的知识点&#xff0c;在sort内部可以使用仿函数来改变此时排序规则。 #include <bits/stdc.h>const int N10010; int n; std::string logs[N];int main() {std::ios::sync_with_stdio(false)…...

QT for andriod

QT for andriod 开发 apk软件&#xff0c;因为一些特殊的原因&#xff0c;在这里简单的记录一哈自己开发apk的流程和心得。 首先说明我采用的环境有哪些&#xff1f; 1、QT的版本&#xff0c;个人建议5.15.2的版本及以上&#xff0c;我是用的5.15.2。 2、andriod studio 可以…...

【广州华锐互动】AR技术在配电系统运维中的应用

随着科技的不断发展&#xff0c;AR(增强现实)技术逐渐走进了我们的生活。在电力行业&#xff0c;AR技术的应用也为巡检工作带来了许多新突破&#xff0c;提高了巡检效率和安全性。本文将从以下几个方面探讨AR配电系统运维系统的新突破。 首先&#xff0c;AR技术可以实现虚拟巡检…...

TiDB 一栈式综合交易查询解决方案获“金鼎奖”优秀金融科技解决方案奖

日前&#xff0c;2023“金鼎奖”评选结果揭晓&#xff0c; 平凯星辰&#xff08;北京&#xff09;科技有限公司研发的 TiDB 一栈式综合交易查询解决方案获“金鼎奖”优秀金融科技解决方案奖 &#xff0c; 该方案已成功运用于 多家国有大行、城商行和头部保险企业 。 此次获奖再…...

《网络是怎样连接的》(六)

本文主要取材于 《网络是怎样连接的》 第六章。 目录 6.1 服务器概览 6.2 服务器的接收操作 6.3 Web服务器程序解释请求消息并作出响应 6.4 浏览器接收响应消息并显示内容 简述&#xff1a;本文主要内容是解释 网络包到达服务器之后&#xff0c;如何给客户端响应的。 服务…...

2023年高教社杯数学建模国赛 赛题浅析

2023年国赛如期而至&#xff0c;为了方便大家尽快确定选题&#xff0c;这里将对赛题进行浅析&#xff0c;以分析赛题的主要难点、出题思路以及选择之后可能遇到的难点进行说明&#xff0c;方便大家尽快确定选题。 难度排序 B>A>C 选题人数 C>A>B (预估结果&…...

使用QT操作Excel 表格的常用方法

VBA 简介 Microsoft Office软件通常使用VBA来扩展Windows的应用程序功能&#xff0c;Visual Basic for Applications&#xff08;VBA&#xff09;是一种Visual Basic的一种宏语言。 在VBA的参考手册中就可以看到具体函数、属性的用法&#xff0c;Qt操作Excel主要通过 QAxObj…...

vue前后端端口不一致解决方案

在config index.js文件中 引入如下代码即可 const path require(path) const devEnv require(./dev.env) module.exports {dev: {// PathsassetsSubDirectory: static,assetsPublicPath: /,proxyTable: devEnv.OPEN_PROXY false ? {} : {/api: {target: http://localhos…...

springcloudSeata处理分布式事务之1.7.0

1.5.0之后版本发生了很大改变 1.seata安装 1.1官网地址 http://seata.io/zh-cn/ 1.2下载地址 https://github.com/seata/seata/releases 下载的是seata-server-1.7.0.zip 1.3seata相关配置的修改 seata-server-1.7.0\seata\conf下的application.yml进行修改 server:por…...

每日刷题|回溯法解决全排列问题

​ 食用指南&#xff1a;本文为作者刷题中认为有必要记录的题目 前置知识&#xff1a;回溯法经典问题之组合 ♈️今日夜电波&#xff1a;爱人错过—告五人 1:11 ━━━━━━️&#x1f49f;──────── 4:52 …...

10-JVM调优工具详解

上一篇&#xff1a;09-JVM垃圾收集底层算法实现 前置启动程序 事先启动一个web应用程序&#xff0c;用jps查看其进程id&#xff0c;接着用各种jdk自带命令优化应用 1.Jmap 此命令可以用来查看内存信息&#xff0c;实例个数以及占用内存大小 jmap -histo 14660 #查看历史…...

东方博易oj——3119 - 约瑟夫问题2(链表)

文章目录 题目题目描述输入输出样例输入 输出标签 AC代码 题目 题目描述 约瑟夫问题&#xff1a;有 &#xff4e; &#xff4e; &#xff4e;只猴子&#xff0c;按顺时针方向围成一圈选大王&#xff08;编号从 &#xff11; &#xff11; &#xff11;到 &#xff4e; &#…...

C++,day0907

#include <iostream>using namespace std; struct stu { private:int num; private:double score[32];public:void setNum(){cout <<"请输入学生人数:";cin >>num;}void input(){cout<<"请输入学生的成绩:"<<endl;for(int i…...

孤儿僵尸守护进程的简单理解

孤儿进程&#xff1a; 一个父进程退出&#xff0c;而它的一个或多个子进程还在运行&#xff0c;那么那些子进程将成为孤儿进程。孤儿进程将被init进程所收养&#xff0c;并由init进程对它们完成状态收集工作。 如何模仿一个孤儿进程&#xff1a; 答案是&#xff1a; kill 父…...

学习笔记——Java入门第一季

1.1 Java的介绍与前景 Java语言最早期的制作者&#xff1a;James Gosling&#xff08;詹姆斯高斯林&#xff09; 1995年5月23日&#xff0c;Sun Microsystems公司宣布Java语言诞生。 1.2 Java的特性与版本 跨平台 开源&#xff08;开放源代码&#xff09; Java代码&#xff…...

更改注册表exe值后的惨痛经历

装软件时由于执行性文件打不开&#xff0c;搜索教程更改了exefile的值&#xff0c;最后整个电脑崩了&#xff0c;所有EXE都打不开&#xff0c;折腾了5个小时&#xff0c;什么办法都试了&#xff0c;甚至重置电脑都不让&#xff0c;打算拿电脑城修电脑了&#xff0c;突然搜到了一…...

stable diffusion实践操作-LyCORIS

系列文章目录 stable diffusion实践操作 文章目录 系列文章目录前言一、LyCORIS是什么&#xff1f;二、使用步骤1.下载2.安装3 使用 二、整理模型1.LoHa-v1.0-pynoise 总结 前言 LyCORIS&#xff0c;可以理解为lora的加强版本。 LyCORIS - Lora beYond Conventional methods,…...

无需公网IP教你如何外网远程访问管家婆ERP进销存

文章目录 前言 1.管家婆服务2. 内网穿透2.1 安装cpolar内网穿透2.2 设置远程访问 3. 固定访问地址4. 配置固定公网访问地址 前言 管家婆辉煌系列产品是中小企业进销存、财务管理一体化的典范软件&#xff0c;历经十余年市场的洗礼&#xff0c;深受广大中小企业的欢迎&#xff…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...