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

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"
http://www.lryc.cn/news/107775.html

相关文章:

  • Python 操作 MySQL 数据库
  • 脑电信号处理与特征提取——6.运用机器学习技术和脑电进行大脑解码(涂毅恒)
  • 腾讯云COS+PicGO+截图工具+Obsidian+Typora+蚁小二:打造丝滑稳定的Markdown写作和分发环境
  • LeetCode--HOT100题(18)
  • ES6的语法兼容IE浏览器
  • 【opencv学习】鼠标回调函数、鼠标控制画矩形
  • Typescript面试题
  • GB28181智能安全帽方案探究及技术实现
  • 【css】解决元素浮动溢出问题
  • SOC FPGA之流水灯设计
  • 无涯教程-Lua - Iterators(迭代器)
  • HTML+CSS+JavaScript:实现B站评论发布效果
  • 实战 - 利用 ThreadLocal 线程局部变量实现数据缓存
  • wxwidgets Ribbon使用简单实例
  • 2023年第四届“华数杯”数学建模思路 - 案例:最短时间生产计划安排
  • LeetCode404. 左叶子之和
  • Nginx 高性能内存池 ----【学习笔记】
  • iOS--frame和bounds
  • docker logs 使用说明
  • Ceph入门到精通-Ceph PG状态详细介绍(全)
  • 【数据结构】二叉树、二叉搜索树、平衡二叉树、红黑树、B树、B+树
  • 【JVM】(二)深入理解Java类加载机制与双亲委派模型
  • npm i 报错项目启动不了解决方法
  • 【从零开始学习JAVA | 第三十七篇】初识多线程
  • 微信新功能,你都知道吗?
  • Android 中 app freezer 原理详解(二):S 版本
  • Vue3_04_ref 函数和 reactive 函数
  • 05 Ubuntu下安装.deb安装包方式安装vscode,snap安装Jetbrains产品等常用软件
  • 性能测试jmeter连接数据库jdbc(sql server举例)
  • 8.3 C高级 Shell脚本