中山市做网站实力数据库检索网站建设

news/2025/10/6 7:12:31/文章来源:
中山市做网站实力,数据库检索网站建设,荆门网站制作,京东方软件开发工程师待遇Rockchip平台Android应用预安装功能(基于Android13) 1. 预安装应用类型 Android上的应用预安装功能#xff0c;主要是指配置产品时#xff0c;根据厂商要求#xff0c;将事先准备好的第三方应用预置进Android系统。预安装分为以下几种类型#xff1a; 安装不可卸载应用安… Rockchip平台Android应用预安装功能(基于Android13) 1. 预安装应用类型 Android上的应用预安装功能主要是指配置产品时根据厂商要求将事先准备好的第三方应用预置进Android系统。预安装分为以下几种类型 安装不可卸载应用安装可永久卸载应用安装卸载后恢复出厂设置后自动恢复的应用 2. 功能启用说明 2.1 配置和使用 在进行以下操作之前首先需要输入命令 get_build_var TARGET_DEVICE_DIR 来找到对应的目标文件夹比如 device/rockchip/rk3126c/。 在目标文件夹下有三个文件夹分别为 preinstallpreinstall_del_foreverpreinstall_del 请将需要预置的应用放入对应的文件夹注意apk文件名尽量使用英文避免空格。 顺利的话执行make之后会在$OUT/oem目录生成对应的文件夹 bundled_persist-appbundled_uninstall_gone-appbundled_uninstall_back-app 仍旧对应概述中的几种类型。在烧录后系统会自动安装这些应用到对应目录。 注意不支持带systemuid应用的预制请使用Android原生方式编写mk文件。可参考vendor/rockchip/common/apps/RkDeviceTest/的集成方式。 2.2 编译结果 编译后配置文件将会输出到odm分区$OUT/oem/增加后请确认烧写了odm.img来使其生效。 3. 预编译脚本 预置应用编译脚本通过下面脚本完成 ifneq ($(strip $(TARGET_PRODUCT)), )$(shell python device/rockchip/common/auto_generator.py $(TARGET_DEVICE_DIR) preinstall bundled_persist-app $(TARGET_ARCH))$(shell python device/rockchip/common/auto_generator.py $(TARGET_DEVICE_DIR) preinstall_del bundled_uninstall_back-app $(TARGET_ARCH))$(shell python device/rockchip/common/auto_generator.py $(TARGET_DEVICE_DIR) preinstall_del_forever bundled_uninstall_gone-app $(TARGET_ARCH))-include $(TARGET_DEVICE_DIR)/preinstall/preinstall.mk-include $(TARGET_DEVICE_DIR)/preinstall_del/preinstall.mk-include $(TARGET_DEVICE_DIR)/preinstall_del_forever/preinstall.mk endif可以看到预置应用的Android.mk主要通过auto_generator.py完成 #!/usr/bin/env python import sys import os import re import zipfile import shutil import logging import stringtemplet include $(CLEAR_VARS) LOCAL_MODULE : %s LOCAL_MODULE_CLASS : APPS LOCAL_MODULE_PATH : $(TARGET_OUT_ODM)/%s LOCAL_SRC_FILES : $(LOCAL_MODULE)$(COMMON_ANDROID_PACKAGE_SUFFIX) LOCAL_CERTIFICATE : PRESIGNED LOCAL_DEX_PREOPT : false LOCAL_ENFORCE_USES_LIBRARIES : false LOCAL_MODULE_TAGS : optional LOCAL_MODULE_SUFFIX : $(COMMON_ANDROID_PACKAGE_SUFFIX) LOCAL_JNI_SHARED_LIBRARIES_ABI : %s MY_LOCAL_PREBUILT_JNI_LIBS : %s MY_APP_LIB_PATH : $(TARGET_OUT_ODM)/%s/$(LOCAL_MODULE)/lib/$(LOCAL_JNI_SHARED_LIBRARIES_ABI) ifneq ($(LOCAL_JNI_SHARED_LIBRARIES_ABI), None) $(warning MY_APP_LIB_PATH$(MY_APP_LIB_PATH)) LOCAL_POST_INSTALL_CMD : \mkdir -p $(MY_APP_LIB_PATH) \$(foreach lib, $(MY_LOCAL_PREBUILT_JNI_LIBS), ; cp -f $(LOCAL_PATH)/$(lib) $(MY_APP_LIB_PATH)/$(notdir $(lib))) endif include $(BUILD_PREBUILT)copy_app_templet LOCAL_PATH : $(my-dir) include $(CLEAR_VARS) LOCAL_APK_NAME : %s LOCAL_POST_PROCESS_COMMAND : $(shell mkdir -p $(TARGET_OUT_ODM)/%s/$(LOCAL_APK_NAME) cp $(LOCAL_PATH)/$(LOCAL_APK_NAME).apk $(TARGET_OUT_ODM)/%s/$(LOCAL_APK_NAME)/) def main(argv):preinstall_dir os.path.join(argv[1],argv[2])if os.path.exists(preinstall_dir):#Use to include modulesisfound not_found_libinclude_path preinstall_dir /preinstall.mkandroid_path preinstall_dir /Android.mktarget_arch argv[4]if os.path.exists(include_path):os.remove(include_path)if os.path.exists(android_path):os.remove(android_path)includefile file(include_path, w)androidfile file(android_path, w)androidfile.write(include $(call all-subdir-makefiles)\n\n)MY_LOCAL_PREBUILT_JNI_LIBS \\ \nfor root, dirs, files in os.walk(preinstall_dir):for file_name in files:p re.compile(r\S*(?.apk\b))found p.search(file_name)if found:include_apk_path preinstall_dir / found.group()makefile_path include_apk_path /Android.mkapk preinstall_dir / found.group() .apktry:zfile zipfile.ZipFile(apk,r)except:if os.path.exists(include_apk_path):shutil.rmtree(include_apk_path)os.makedirs(include_apk_path)apkpath preinstall_dir / found.group() /shutil.move(apk,apkpath)makefile file(makefile_path,w)makefile.write(LOCAL_PATH : $(my-dir)\n\n)makefile.write(templet % (found.group(),argv[3],None,MY_LOCAL_PREBUILT_JNI_LIBS,argv[3]))continuefor lib_name in zfile.namelist():include_apklib_path include_apk_path /lib /armif os.path.exists(include_apk_path):shutil.rmtree(include_apk_path)os.makedirs(include_apklib_path)makefile file(makefile_path,w)makefile.write(LOCAL_PATH : $(my-dir)\n\n)apkpath preinstall_dir / found.group() /if target_arch arm64:for lib_name in zfile.namelist():lib re.compile(r\A(lib/arm64-v8a/)?)find_name lib/arm64-v8a/if lib_name.find(find_name) -1:continuelibfound lib.search(lib_name)if libfound:isfound arm64-v8adata zfile.read(lib_name)string lib_name.split(libfound.group())libfile include_apklib_path / string[1]MY_LOCAL_PREBUILT_JNI_LIBS \t lib/arm64 / string[1] \\ \nif (os.path.isdir(libfile)):continueelse:includelib file(libfile, w)includelib.write(data)try:if cmp(isfound, not_found_lib):include_apklib_path_arm64 include_apk_path /lib/arm64os.rename(include_apklib_path, include_apklib_path_arm64)except Exception as e:logging.warning(rename dir faild for: e)if not cmp(isfound,not_found_lib):for lib_name in zfile.namelist():lib re.compile(r\A(lib/armeabi-v7a/)?)find_name lib/armeabi-v7a/#if not cmp(lib_name,find_name):# continueif lib_name.find(find_name) -1:continuelibfound lib.search(lib_name)if libfound:isfound armeabi-v7adata zfile.read(lib_name)string lib_name.split(libfound.group())libfile include_apklib_path / string[1]MY_LOCAL_PREBUILT_JNI_LIBS \t lib/arm / string[1] \\ \nif(os.path.isdir(libfile)):continueelse:includelib file(libfile,w)includelib.write(data)if not cmp(isfound,not_found_lib):for lib_name in zfile.namelist():lib re.compile(r\A(lib/armeabi/)?)find_name lib/armeabi/#if not cmp(lib_name,find_name):# continueif lib_name.find(find_name) -1:continuelibfound lib.search(lib_name)if libfound:data zfile.read(lib_name)string lib_name.split(libfound.group())libfile include_apklib_path / string[1]MY_LOCAL_PREBUILT_JNI_LIBS \t lib/arm / string[1] \\ \nif(os.path.isdir(libfile)):continueelse:includelib file(libfile,w)includelib.write(data)tmp_jni_libs \\ \nif not cmp(MY_LOCAL_PREBUILT_JNI_LIBS,tmp_jni_libs):nolibpath preinstall_dir / found.group() /libshutil.rmtree(nolibpath)makefile.write(templet % (found.group(),argv[3],None,MY_LOCAL_PREBUILT_JNI_LIBS,argv[3]))else:if isfound arm64-v8a:makefile.write(templet % (found.group(),argv[3], arm64, MY_LOCAL_PREBUILT_JNI_LIBS,argv[3]))else:makefile.write(templet % (found.group(),argv[3],arm,MY_LOCAL_PREBUILT_JNI_LIBS,argv[3]))shutil.move(apk,apkpath)isfound not_found_libMY_LOCAL_PREBUILT_JNI_LIBS \\ \nmakefile.close()breakfor root, dirs,files in os.walk(preinstall_dir):for dir_file in dirs:includefile.write(PRODUCT_PACKAGES %s\n %dir_file)breakincludefile.close()if __name____main__:main(sys.argv) 最终生成的Android.mk脚本如下 LOCAL_PATH : $(my-dir)include $(CLEAR_VARS) LOCAL_MODULE : MySysManager LOCAL_MODULE_CLASS : APPS LOCAL_MODULE_PATH : $(TARGET_OUT_ODM)/bundled_persist-app LOCAL_SRC_FILES : $(LOCAL_MODULE)$(COMMON_ANDROID_PACKAGE_SUFFIX) LOCAL_CERTIFICATE : PRESIGNED LOCAL_DEX_PREOPT : false LOCAL_ENFORCE_USES_LIBRARIES : false LOCAL_MODULE_TAGS : optional LOCAL_MODULE_SUFFIX : $(COMMON_ANDROID_PACKAGE_SUFFIX) LOCAL_JNI_SHARED_LIBRARIES_ABI : None MY_LOCAL_PREBUILT_JNI_LIBS : \MY_APP_LIB_PATH : $(TARGET_OUT_ODM)/bundled_persist-app/$(LOCAL_MODULE)/lib/$(LOCAL_JNI_SHARED_LIBRARIES_ABI) ifneq ($(LOCAL_JNI_SHARED_LIBRARIES_ABI), None) $(warning MY_APP_LIB_PATH$(MY_APP_LIB_PATH)) LOCAL_POST_INSTALL_CMD : mkdir -p $(MY_APP_LIB_PATH) $(foreach lib, $(MY_LOCAL_PREBUILT_JNI_LIBS), ; cp -f $(LOCAL_PATH)/$(lib) $(MY_APP_LIB_PATH)/$(notdir $(lib))) endif include $(BUILD_PREBUILT)PackageManagerService对预安装应用的处理 //PackageManagerService.javapublic static final String BUNDLED_PERSIST_DIR /odm/bundled_persist-app;public static final String BUNDLED_UNINSTALL_GONE_DIR /odm/bundled_uninstall_gone-app;//Environment.java private static final File DIR_PREBUNDLED_UNINSTALL_BACK_ROOT getDirectory(ENV_PREBUNDLED_UNINSTALL_BACK_ROOT, /odm/bundled_uninstall_back-app);private static final File DIR_PREBUNDLED_UNINSTALL_GONE_ROOT getDirectory(ENV_PREBUNDLED_UNINSTALL_GONE_ROOT, /odm/bundled_uninstall_gone-app);//InitAppsHelper.javapublic void preinstallThirdPartyAPK(PackageParser2 packageParser, ExecutorService executorService,int scanFlags){preinstallPrebundledpersist(packageParser,executorService,scanFlags);preinstallPrebundledUninstallBack(packageParser,executorService,scanFlags);preinstallPrebundledUninstallGone(packageParser,executorService,scanFlags);}private void preinstallPrebundledpersist(PackageParser2 packageParser, ExecutorService executorService,int scanFlags){scanDirTracedLI(new File(mPm.BUNDLED_PERSIST_DIR),null,mPm.getDefParseFlags() | ParsingPackageUtils.PARSE_IS_SYSTEM_DIR| ParsingPackageUtils.PARSE_IS_PREINSTALL,scanFlags | mPm.SCAN_AS_PREINSTALL| SCAN_AS_SYSTEM,packageParser, executorService);}private void preinstallPrebundledUninstallBack(PackageParser2 packageParser, ExecutorService executorService,int scanFlags){scanDirTracedLI(Environment.getPrebundledUninstallBackDirectory(),null,mPm.getDefParseFlags() | ParsingPackageUtils.PARSE_IS_PREBUNDLED_DIR,scanFlags | mPm.SCAN_AS_PREBUNDLED_DIR,packageParser, executorService);}private void preinstallPrebundledUninstallGone(PackageParser2 packageParser, ExecutorService executorService,int scanFlags){scanDirTracedLI(Environment.getPrebundledUninstallGoneDirectory(),null,mPm.getDefParseFlags() | ParsingPackageUtils.PARSE_IS_PREBUNDLED_DIR,scanFlags | mPm.SCAN_AS_PREBUNDLED_DIR,packageParser, executorService);}需要进一步了解预安装应用相关流程请查看preinstallPrebundled相关代码流程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/929058.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站自适应源码建网站要自己买服务器吗

用TyporapicgocloudflareTelegraph-image的免费,无需服务器,无限空间的图床搭建(避坑指南) 前提:有github何cloudflare (没有的话注册也很快) 首先,是一个别人写的详细的配置流程,傻瓜式教程&am…

河北建设厅官方网站网站设计便宜

gcc的流程 预处理 -E .i 编译 -s .s 把c语言编译为汇编 汇编 -c .o 把汇编编译为二进制 链接工程管理软件,它可以根据文件的时间戳进行编译,根据文件结构编译 app:main.o add.o gcc main.o add.o -o appmain.o:main.c gcc -c main.c -o main.oadd.o:…

新网站做百度百科竞价托管魏大帅

spingboot整合Swagger教程 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,我将和大家分享一项对于Java后端开发极为重要的技术——“Spring Boot整…

成都可以做网站的公司成都设计公司第一名

一. IIS各版本间的区别 IIS 5.0 IIS 5.1 IIS 6.0 平台 Windows 2000 Windows XP Professional Windows Server 2003 家族 体系结构 32 位 32 位和 64 位 32 位和 64 位 应用程序进程模型 TCP/IP 内核 DLLhost.exe(处于中等或高应用程序隔离模式下的多个…

企业网站框架图wordpress 4.01

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 认识QtSDK中的重要工具 文章编号:Qt 学习笔记 / 03 文章目…

网站建设 数据库购买做富集的网站

决策树(Decision Tree)常用于研究类别归属和预测关系的模型,比如是否抽烟、是否喝酒、年龄、体重等4项个人特征可能会影响到‘是否患癌症’,上述4项个人特征称作‘特征’,也即自变量(影响因素X),‘是否患癌…

基于jsp网站开发参考文献济南 手机网站制作

权限目录 1. 前言2. 权限2.1 修改权限2.2 有无权限的对比2.3 另外一个修改权限的方法2.3.1 更改用户角色2.3.2 修改文件权限属性 3. 第一个属性列4. 目录权限5. 默认权限 1. 前言 在之前的一篇博客中分享了关于权限的一些知识,这次紧接上次的进行,有需要…

怎样进入网站管理系统哪些网站可以查企业信息

GPU作为渲染领域的核心硬件,对于提高渲染速度和质量起着决定性作用。尽管购买高性能GPU的成本相对较高,但是通过GPU云渲染平台,用户可以以较低的成本享受到高效渲染服务的便利。现在,探索一些提供免费试用的GPU云渲染服务网站&…

dede网站怎么备份百事可乐运用了哪种网络营销方式

1. jieba分词 import jiebatext在中国古代文化中,书法和绘画是艺术的重要表现形式。古人常说,‘文字如其人’,通过墨迹可以窥见作者的性情和气质。而画家则以笔墨搏击,表现出山川河流、花鸟虫鱼的灵动。这些艺术形式不仅仅是技艺…

移动建站模板网站建设活动策划

错误码 意义 一般 0x800C01310x800C013E 可能是 Folders.dbx 档案属性错误或损坏. 0x800CCC00 身份验证(Authentication)未载入 0x800CCC01 认证(Certificate)内容错误 0x800CCC02 认证日期错误 0x800CCC03 使用者已联机 0x800CCC…

做网站怎么弄模板数据型网站 建设方案

非常奇怪的一个报错,在查找资料无果的情况下选择了重装keras(应该是版本对应出现了问题),报错解决

免费网站域名和空间交通建设门户网站

Magnet 是一款针对 MacOS 系统的窗口管理工具软件。它能够帮助用户更加高效地管理和组织桌面上的窗口,通过简单的快捷键操作,可以将窗口自动调整到指定的位置和大小,实现多窗口快速布局。Magnet 还支持多显示器环境下的窗口管理,可…

2025钻机厂家最新推荐榜:岩芯钻机,勘探钻机,地质钻机,取样钻机,空气反循环钻机公司推荐

当前基础设施建设、矿产勘探与工程施工领域持续扩容,钻机作为核心设备,其性能稳定性、技术先进性与全周期服务质量直接决定项目效率与成本。但市场品牌数量激增,既有老牌企业也有新锐力量,产品质量参差不齐:部分品…

建个大型网站要多少钱网站建设多少钱一平米

一、 场景 新购置一台MAC mini盒子作为开发使用,系统版本为macOS Sonoma 14.2, 由于是新机器,从新开始安装开发工具,从AppStore中获取XCode 15.3 版本,编译现有工程项目,报如下错误: SDK does not contai…

网站制作流程分为哪七步免费培训seo网站

IP分组就是根据Ip地址来进行分组,目的可以是为了对不同 的地址组分配不同的带宽(限速)配置地址组时,其输入格式为A.B.C.D-A.B.C.E,例如:192.168.1.1-192.168.1.250

江门网站建设公司华安网站建设

博主介绍:✌专注于前后端领域开发的优质创作者、秉着互联网精神开源贡献精神,答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战,深受全网粉丝喜爱与支持✌有需要可以联系作者我哦&…

做网站用模版坊子网站建设

目录 字节填充: 比特填充: 数据链路有三个基本问题 1.封装成帧 2.透明传输 3.差错检测 首先介绍一下PPP的帧结构: 首部的第一个字段和尾部的第二个字段都是标志字段F(Flag),规定为0x7E (符号“0x”表示它后面的字符是用十六…

一般网站的优缺点免费访问国外网站的应用

在Qt环境中,要为QLineEdit控件设置数值输入的精度为0.5,即允许用户输入以0.5为步进单位的数值,通常并不直接通过QLineEdit本身来实现,因为QLineEdit默认用于接收任意文本输入。为了达到您的需求,您可以采取以下两种方法…

网站网址更新了怎么查广东东莞智通人才市场

问题来自一个线上GC频繁的应用&#xff0c;观察到老年代一直gc下不去导致应用被gc STW卡主假死&#xff0c;检查代码发现这样一段代码&#xff0c;感觉可疑代码如下&#xff1a;public class WriteEsWork {public static void write(List<EsIndexInfo> esList, String in…

深圳市建设局工程交易中心网站唐山网站建设价格

生命周期 &#xff08;1&#xff09;组件的生命周期&#xff08;created、attached、ready、moved、detached&#xff09; created 触发时机&#xff1a;组件实例刚刚被创建好时&#xff0c; created 生命周期被触发。 此时&#xff0c;组件数据 this.data 就是在 Component …