RK356x Android11更换默认的Launcher
1、 开发环境
ubuntu版本:18.04
开发平台:RK356x
Android版本:android11
2、目的
android11 系统自带了一个启动器Launcher3,在android源码路径下的packages/apps/Launcher3下,现需要将我们自己开发的Launcher放到android源码上,让系统启动的时候自动运行我们的Launcher,从而达到想要的效果。
3、方法
1.在源码android\vendor\rockchip\common\apps\路径下新建一个目录hybLauncher
2. 将hybLauncher.apk软件包拷贝进去到hybLauncher文件夹中(文件夹名和apk的名需要一样)
3.在hybLauncher文件夹中新建一个Android.mk文件(相当于linux下的Makefile文件)
Android.mk内容如下,(可以参考一下apps目录下的其他程序Android.mk)
###############################################################################
# hybLauncher
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hybLauncher
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_BUILT_MODULE_STEM := package.apk
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
#LOCAL_PRIVILEGED_MODULE :=
LOCAL_CERTIFICATE := PRESIGNED
#LOCAL_OVERRIDES_PACKAGES :=
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
#LOCAL_REQUIRED_MODULES :=
#LOCAL_PREBUILT_JNI_LIBS :=
include $(BUILD_PREBUILT)
4. 修改apps目录下的app.mk文件
PRODUCT_PACKAGES += \ComAssistant \DoubleCameraTest \GPSTest \Presentation \RpGpio \TDGPSTest \+ hybLauncherPRODUCT_PACKAGES += \RKUpdateService
完成了以上四步后,重新编译,在Android系统启动后,在应用桌面上就应该可以查看得到了。如果想将hybLauncher程序变成默认桌面启动项,可以完成以下操作
源码路径:android\frameworks\base\core\java\com\android\internal\app\ResolverActivity.java
protected void onCreate(Bundle savedInstanceState, Intent intent,CharSequence title, int defaultTitleRes, Intent[] initialIntents,List<ResolveInfo> rList, boolean supportsAlwaysUseOption) {setTheme(appliedThemeResId());super.onCreate(savedInstanceState);if (mResolvingHome) {setDefaultLauncher();finish();return;}//省略......
}private void setDefaultLauncher() {try {final PackageManager pm = getPackageManager();String defPackageName = "包名";String defClassName = "类名";IntentFilter filter = new IntentFilter();filter.addAction("android.intent.action.MAIN");filter.addCategory("android.intent.category.HOME");filter.addCategory("android.intent.category.DEFAULT");Intent intent = new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_HOME);List<ResolveInfo> list = new ArrayList<ResolveInfo>();list = pm.queryIntentActivities(intent, 0);final int N = list.size();ComponentName[] set = new ComponentName[N];int bestMatch = 0;for (int i = 0; i < N; i++) {ResolveInfo r = list.get(i);set[i] = new ComponentName(r.activityInfo.packageName,r.activityInfo.name);if (r.match > bestMatch) bestMatch = r.match;}ComponentName preActivity = new ComponentName(defPackageName, defClassName);pm.addPreferredActivity(filter, bestMatch, set, preActivity);} catch (Exception e) {e.printStackTrace();}}
完成上述步骤后,重新编译,系统启动后就会自动启动hybLauncher。
4、扩展
软件包:7-zip.exe和AXMLPrinter2.jar
如果只有apk软件包,需要得到该apt中的packagename和classname的话,需要下载7-Zip.exe来打开apt并且提取里面的文件内容。

需注意的是AndroidManifest.xml文件,打开该文件是乱码,需要通过反编译出来。
在window上按下window键+R

###进入到AndroidManifest.xml所在的目录#######
C:\Users\Administrator>cd Desktop
C:\Users\Administrator\Desktop>java -jar AXMLPrinter2.jar AndroidManifest.xml
java -jar AXMLPrinter2.jar AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifestxmlns:android="http://schemas.android.com/apk/res/android"android:versionCode="1"android:versionName="1.0"package="com.screen.hybLauncher"><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="16"></uses-sdk><applicationandroid:theme="@7F060001"android:label="@7F050000"android:icon="@7F020000"android:clearTaskOnLaunch="true"android:stateNotNeeded="true"android:launchMode="2"><activityandroid:label="@7F050000"android:name="com.screen.hybLauncher.HomeScreen"android:excludeFromRecents="true"android:launchMode="2"android:screenOrientation="5"><intent-filter><actionandroid:name="android.intent.action.MAIN"></action><categoryandroid:name="android.intent.category.HOME"></category><categoryandroid:name="android.intent.category.DEFAULT"></category></intent-filter></activity></application>
</manifest>
从上述可以得到包名和类名
package="com.screen.hybLauncher"
android:name="com.screen.hybLauncher.HomeScreen"相关文章:
RK356x Android11更换默认的Launcher
1、 开发环境 ubuntu版本:18.04 开发平台:RK356x Android版本:android11 2、目的 android11 系统自带了一个启动器Launcher3,在android源码路径下的packages/apps/Launcher3下,现需要将我们自己开发的Launcher放到a…...
Python 操作 MySQL 数据库
Python 操作 MySQL 数据库 Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。 Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: GadFlymSQLMySQLPostgreSQLMicrosoft SQL Se…...
脑电信号处理与特征提取——6.运用机器学习技术和脑电进行大脑解码(涂毅恒)
目录 六、运用机器学习技术和脑电进行大脑解码 6.1 前言 6.2 基于脑电数据的机器学习基础分析 6.3 基于脑电数据的机器学习进阶分析 6.4 代码解读 六、运用机器学习技术和脑电进行大脑解码 6.1 前言 6.2 基于脑电数据的机器学习基础分析 6.3 基于脑电数据的机器学习进阶分…...
腾讯云COS+PicGO+截图工具+Obsidian+Typora+蚁小二:打造丝滑稳定的Markdown写作和分发环境
背景 很久很久以前,我写过一篇《有道云笔记EverythingTyporaGitHub图床PicGojsDelivr加速截图工具——创造丝滑免费的Markdown写作环境》(https://blog.csdn.net/qq_43721542/article/details/9685957),当时的目的是打造一个云同…...
LeetCode--HOT100题(18)
目录 题目描述:73. 矩阵置零(中等)题目接口解题思路1代码解题思路2代码 PS: 题目描述:73. 矩阵置零(中等) 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都…...
ES6的语法兼容IE浏览器
案例1 zdsxData.zdsxData.forEach(el>{let str <tr> <td><a href${el.url} target"_blank"><font color"#79EEFF">${el.sxms}</font></a></td> <td>${el.gjjd}</td> <td>${el.zrr}<…...
【opencv学习】鼠标回调函数、鼠标控制画矩形
#include <iostream> #include <opencv2/opencv.hpp> using namespace cv; #define WinDow "程序窗口"void MouseHandle(int event, int x, int y, int flags, void* param);//鼠标回调函数 void Drawrectangle(cv::Mat& img, cv::Rect box);//矩形绘…...
Typescript面试题
文章目录 了解过TS吗?使用ts写一个对象属性约束说一下typescript中的泛型如何在TS中对函数的返回值进行类型约束ts和js相比有什么区别 了解过TS吗? ts是一种基于静态类型检查的强类型语言 let num:number20 console.log(num) console.log("str&qu…...
GB28181智能安全帽方案探究及技术实现
什么是智能安全帽? 智能安全帽是一种集成先进科技的安全帽,可基于GB28181规范,适用于铁路巡检、电力、石油化工等高风险行业的作业人员,以及消防、救援等紧急情况下的安全防护。 智能安全帽通常具有以下功能: 实时…...
【css】解决元素浮动溢出问题
如果一个元素比包含它的元素高,并且它是浮动的,它将“溢出”到其容器之外:然后可以向包含元素添加 overflow: auto;,来解决此问题: 代码: <!DOCTYPE html> <html> <head> <style>…...
SOC FPGA之流水灯设计
一、DS-5简介 Altera Soc EDS开发套件的核心是Altera版ARM Development Studio 5(DS-5)工具包,为SoC器件提供了完整的嵌入式开发环境、FPGA自适应调试和对Altera工具的兼容。 1.1 DS-5 eclipse破解 首先下载破解器 然后进入cmd运行,进入到破解器所在文…...
无涯教程-Lua - Iterators(迭代器)
迭代器是一种构造,使您可以遍历所谓的集合或集合的元素。在Lua中,这些集合通常引用表,这些表用于创建各种数据结构(如数组)。 通用迭代器 通用的 for 迭代器提供集合中每个元素的键值对。下面给出一个简单的示例。 array{"Lua",…...
HTML+CSS+JavaScript:实现B站评论发布效果
一、需求 1、用户输入内容,输入框左下角实时显示输入字数 2、为避免用户输入时在内容左右两端误按多余的空格,在发送评论时,检测用户输入的内容左右两端是否带有空格,若有空格,发布时自动取消左右两端的空格 3、若用…...
实战 - 利用 ThreadLocal 线程局部变量实现数据缓存
文章目录 1. 利用 ThreadLocal 缓存 AssetBranchCache 数据1. 定义 AssetBranchCache 类2. 定义 BranchContext 类操作 AssetBranchCache 对象3. 配置拦截器实时更新和清除缓存数据4. 定义 SaasThreadContextDataHolderBranch 类持有 AssetBranchCache 对象5. 定义 SaasThreadC…...
wxwidgets Ribbon使用简单实例
// RibbonSample.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <wx/wx.h> #include "wx/wxprec.h" #include "wx/app.h" #include "wx/frame.h" #include "wx/textctrl.h" #include "…...
2023年第四届“华数杯”数学建模思路 - 案例:最短时间生产计划安排
文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 0 赛题思路 (赛题出来以后第一时间在CSDN分享) 最短时间生产计划模型 该模型出现在好几个竞赛赛题上&#x…...
LeetCode404. 左叶子之和
404. 左叶子之和 文章目录 [404. 左叶子之和](https://leetcode.cn/problems/sum-of-left-leaves/)一、题目二、题解方法一:递归方法二:迭代 一、题目 给定二叉树的根节点 root ,返回所有左叶子之和。 示例 1: 输入: root [3,9…...
Nginx 高性能内存池 ----【学习笔记】
跟着这篇文章学习: c代码实现一个高性能内存池(超详细版本)_c 内存池库_linux大本营的博客-CSDN博客https://blog.csdn.net/qq_40989769/article/details/130874660以及这个视频学习: nginx的内存池_哔哩哔哩_bilibilihttps://w…...
iOS--frame和bounds
坐标系 首先,我们来看一下iOS特有的坐标系,在iOS坐标系中以左上角为坐标原点,往右为X正方向,往下是Y正方向如下图: bounds和frame都是属于CGRect类型的结构体,系统的定义如下,包含一个CGPoint…...
docker logs 使用说明
docker logs 可以查看某个容器内的日志情况。 前置参数说明 c_name容器名称 / 容器ID logs 获取容器的日志 , 命令如下: docker logs [options] c_name option参数: -n 查看最近多少条记录:docker logs -n 5 c_name--tail与-n 一样 &#…...
AMD Ryzen终极调试指南:如何精准控制硬件性能与稳定性
AMD Ryzen终极调试指南:如何精准控制硬件性能与稳定性 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…...
如何用Mermaid Live Editor轻松创建可视化图表:5个步骤告别复杂绘图工具
如何用Mermaid Live Editor轻松创建可视化图表:5个步骤告别复杂绘图工具 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/me…...
Z-Image-Turbo-辉夜巫女入门指南:专为辉夜主题设计的轻量级文生图LoRA模型解析
Z-Image-Turbo-辉夜巫女入门指南:专为辉夜主题设计的轻量级文生图LoRA模型解析 1. 模型简介 Z-Image-Turbo-辉夜巫女是一款基于Z-Image-Turbo模型的轻量级LoRA变体,专门针对"辉夜巫女"主题进行优化。这个模型能够根据简单的文字描述…...
千问3.5-9B Visual Studio Code高效插件配置与AI编程工作流
千问3.5-9B Visual Studio Code高效插件配置与AI编程工作流 1. 为什么需要AI辅助编程工作流 现代软件开发面临诸多挑战:代码复杂度不断提升、技术更新迭代加快、文档维护成本居高不下。传统开发方式下,程序员需要花费大量时间在重复性工作上࿰…...
告别IO口焦虑:用74HC595驱动8x8点阵屏,51单片机也能玩转动态显示
告别IO口焦虑:用74HC595驱动8x8点阵屏,51单片机也能玩转动态显示 当你在面包板上搭建第一个流水灯时,74HC595可能只是让LED依次点亮的工具。但这款售价不到1元的芯片,其实藏着更强大的潜力——它能让你用51单片机的3个IO口&#x…...
dotfiles核心组件详解:Brewfile、Shell别名与路径管理
dotfiles核心组件详解:Brewfile、Shell别名与路径管理 【免费下载链接】dotfiles Get started with your own dotfiles. 项目地址: https://gitcode.com/gh_mirrors/dotfiles6/dotfiles dotfiles是管理个人开发环境配置的强大工具,通过集中管理配…...
如何使用Datasets库实现物联网设备上的边缘AI实时数据处理
如何使用Datasets库实现物联网设备上的边缘AI实时数据处理 【免费下载链接】datasets 🤗 The largest hub of ready-to-use datasets for AI models with fast, easy-to-use and efficient data manipulation tools 项目地址: https://gitcode.com/gh_mirrors/da/…...
Tangram-Android性能优化终极指南:构建流畅滚动体验的10个技巧
Tangram-Android性能优化终极指南:构建流畅滚动体验的10个技巧 【免费下载链接】Tangram-Android Tangram is a modular UI solution for building native page dynamically including Tangram for Android, Tangram for iOS and even backend CMS. This project pr…...
终极Fiji科学图像处理完整指南:从零开始掌握开源图像分析平台
终极Fiji科学图像处理完整指南:从零开始掌握开源图像分析平台 【免费下载链接】fiji A "batteries-included" distribution of ImageJ :battery: 项目地址: https://gitcode.com/gh_mirrors/fi/fiji Fiji作为ImageJ的"电池全包"增强发行…...
PCIe硬件电路设计实战:从理论到PCB布局的关键要点
1. PCIe硬件设计基础:从总线标准到实战需求 我第一次接触PCIe设计是在2013年,当时被主板上那些黑色插槽的复杂布线难住了。现在回想起来,理解PCIe的本质确实需要从最基础的总线演变开始。PCIe全称Peripheral Component Interconnect Express&…...
