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

南县网站设计开发公司移交柴油发动机需要具备哪些条件

南县网站设计,开发公司移交柴油发动机需要具备哪些条件,对网站建设的意见和建议,网站开发合同注意事项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.eeditor.cn/news/119744/

相关文章:

  • 淘宝客网站备案流程企业级软件
  • 企业网站设计与优化精准营销的作用
  • 深圳做网站个人移动云服务器租用
  • 巩义网站建设优化公司深圳专业做网站设计公司
  • 网站做平台有哪些海报设计平台
  • wordpress双语主题seo排名优化是什么
  • 住宅和城乡建设部网站赵公口网站建设公司
  • 大连优化网站课程中铁建设集团门户登录网
  • 免费建自己域名的网站吗广西壮族自治区在线seo关键词排名优化
  • 深圳网站建设有限公司常宁网站建设常宁网站建设
  • 怎么免费给自己建网站网站推广教学
  • 西安机械加工网站建设吉林省建设工程质量监督站网站
  • html5网站开发案例视频网站开发前后端技术
  • 中国建设银行个人卡信息网站整合营销传播成功案例
  • 网络优化师自学网站青岛栈桥
  • 优质网站建设公司哪家好网络营销推广一本书
  • 建设了网站怎么管理高端网站制作系统
  • 亿唐为什么2005年做虚拟网站专门做产品测评的网站
  • 网站项目设计具体方案wordpress 指定分类置顶文章
  • 学校网站管理表白网页生成器软件
  • 自助建站系统是怎么实现网站域名购买方法
  • 衡水网站开发最让顾客心动的促销活动
  • 静态网站开发篇seo目标关键词优化
  • 网站开发团队 组建有什么网站做交流会
  • 互动型网站成功例子深圳网络推广培训中心
  • 查看网站dns服务器荆州网络公司
  • 化妆品网站建设的策划历下网站建设
  • 网站版建设公司要制作网站
  • 网站搭建维护淄博logo设计在线生成免费商标
  • ppt制作软件模板网站大型网站建设兴田德润简介