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

Android13开机向导

文章目录

  • 前言
  • 需求-场景
  • 第三方资料说明
  • 需求思路
    • 按照平台 思路 从配置上去 feature
    • 换个思路,去feature。
      • SimMissingActivity 判断跳过逻辑
      • SetupWizardUtils 判断SIM 、 hasSystemFeature FEATURE_TELEPHONY
      • PackageManager.FEATURE_TELEPHONY
      • ApplicationPackageManager hasSystemFeature
  • 总结


前言

前面一篇文章在Android12 基础上已经分析了开机向导定制方案,这里再以实际案例在Android13 上面从另外一个思路来实现需求


需求-场景

去掉开机向导里面的SIM模块,Tel相关的全部去掉:比如 SIM 检测界面、紧急呼叫入口和界面
备注:在上一篇笔记中已经提到了思路,其实是无法去掉SIM界面和Tel 相关的,限制太多了。
下面我们从另外的角度来解决这个问题,换一个方向思考并解决问题。 去feature

第三方资料说明

高通C6490 android13 GMS 认证之CtsCarrierApiTestCases
附件WIFI——Only图片:MTK提供的WIFI Only方案
附件:FiseSetupWizard 自定义的一个开机向导源码
附件:CusSetupWizard 自定义的一个完整的开机向导原码
附件下载地址

在这里插入图片描述
备注:

  • 附件 两个开机向导可以直接放到系统里面进行编译,去掉平台自带的开机向导,然后在已有开机向导源码基础上更改。【比较早的开机向导,UI不咋样】
  • 在开机向导源码的基础上,分析已有部分的逻辑,针对性再定制自己需求,反推思考逻辑和业务,看能否实现自己定制的需求。
  • WIFI-Only图片,为平台提供的WIFI Only部分修改点,可以借鉴。
  • 特别提醒,不同平台和不同版本,以及
    手机和平板方案区别是很大的。所以,参考即可。【这里重点提一下,如果您的方案是手机方案,是无法实现更改为WIFI Only方案的】

需求思路

按照平台 思路 从配置上去 feature

下面自己在MTKAndroid13 中 去feature的一些流程,可参考 
 去tel 相关
frameworks/native/data/etc/Android.bp//prebuilt_etc {
//    name: "android.hardware.telephony.gsm.prebuilt.xml",
//    src: "android.hardware.telephony.gsm.xml",
//    defaults: ["frameworks_native_data_etc_defaults"],
//}//prebuilt_etc {
//    name: "android.hardware.telephony.ims.prebuilt.xml",
//    src: "android.hardware.telephony.ims.xml",
//    defaults: ["frameworks_native_data_etc_defaults"],
//}//prebuilt_etc {
//    name: "android.hardware.telephony.cdma.prebuilt.xml",
//    src: "android.hardware.telephony.cdma.xml",
//    defaults: ["frameworks_native_data_etc_defaults"],
//}屏蔽tel 和 修改sim 个数 
device/mediatek/vendor/mgvi_64_armv9/device.mk
device/mediatek/vendor/mgvi_64_nfc_armv82/device.mk
device/mediatek/vendor/mgvi_64_tee_armv82/device.mk
device/mediatek/vendor/mgvi_64_teei_armv82/device.mk
device/mediatek/vendor/mgvi_64_teei_armv82/device.mk
device/mediatek/vendor/mgvi_32_armv82/device.mk
device/mediatek/vendor/mgvi_64_armv82/device.mk
device/mediatek/vendor/mgvi_32_armv82_ago/device.mk
device/mediatek/vendor/mgvi_64_ww_armv82/device.mk#PRODUCT_COPY_FILES += $(LOCAL_PATH)/android.hardware.telephony.gsm.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.gsm.xml# set Telephony property - SIM count    默认是2 我们改为0 
SIM_COUNT := 0   屏蔽tel 相关
device/google_car/common/pre_google_car.mk
#$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_system_ext.mk)#$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_vendor.mk)PRODUCT_COPY_FILES += \frameworks/native/data/etc/car_core_hardware.xml:system/etc/permissions/car_core_hardware.xml \frameworks/native/data/etc/android.hardware.type.automotive.xml:system/etc/permissions/android.hardware.type.automotive.xml \# frameworks/native/data/etc/android.hardware.telephony.gsm.xml:system/etc/permissions/android.hardware.telephony.gsm.xml \#frameworks/native/data/etc/android.hardware.telephony.cdma.xml:system/etc/permissions/android.hardware.telephony.cdma.xml \device/google/coral/device.mk#frameworks/native/data/etc/android.hardware.telephony.gsm.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.gsm.xml \#frameworks/native/data/etc/android.hardware.telephony.cdma.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.cdma.xml \#frameworks/native/data/etc/android.hardware.telephony.ims.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.ims.xml \		#frameworks/native/data/etc/android.hardware.telephony.carrierlock.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.carrierlock.xml \device/google/cuttlefish/shared/phone/device_vendor.mk
device/google/cuttlefish/shared/slim/device_vendor.mk
device/google/cuttlefish/shared/wear/device_vendor.mk#ifneq ($(LOCAL_PREFER_VENDOR_APEX),true)
#PRODUCT_COPY_FILES += \
#    frameworks/native/data/etc/android.hardware.biometrics.face.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.biometrics.face.xml \
#    frameworks/native/data/etc/android.hardware.faketouch.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.faketouch.xml \
#    frameworks/native/data/etc/android.hardware.fingerprint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.fingerprint.xml \
#    frameworks/native/data/etc/android.hardware.telephony.gsm.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.gsm.xml \
#    frameworks/native/data/etc/android.hardware.telephony.ims.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.ims.xml
#endifdevice/mediatek/common/device.mk
# For C2K CDMA feature file
#ifeq ($(strip $(RAT_CONFIG_C2K_SUPPORT)),yes)
#PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.telephony.cdma.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.cdma.xml
#endif# Telephony
#PRODUCT_COPY_FILES += device/mediatek/config/apns-conf.xml:system/etc/apns-conf.xml:mtk
#PRODUCT_COPY_FILES += vendor/mediatek/proprietary/hardware/ril/fusion/mtk-ril/mdcomm/data/vendor-apns-conf.xml:$(TARGET_COPY_OUT_VENDOR)/etc/vendor-apns-conf.xml:mtk
#PRODUCT_COPY_FILES += device/mediatek/common/spn-conf.xml:$(TARGET_COPY_OUT_SYSTEM_EXT)/etc/spn-conf.xml:mtk#PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.telephony.ims.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.ims.xml屏蔽所有 PRODUCT_PROPERTY_OVERRIDES += ro.telephony.sim.count=? 选项device/mediatek/vendor/mgvi_64_armv9/VendorConfig.mk 
device/mediatek/vendor/mgvi_64_nfc_armv82/VendorConfig.mk
device/mediatek/vendor/mgvi_64_tee_armv82/VendorConfig.mk
device/mediatek/vendor/mgvi_64_teei_armv82/VendorConfig.mk
device/mediatek/vendor/mgvi_32_armv82/VendorConfig.mk
device/mediatek/vendor/mgvi_64_armv82/VendorConfig.mk
device/mediatek/vendor/mgvi_32_armv82_ago/VendorConfig.mk
device/mediatek/vendor/mgvi_64_ww_armv82/VendorConfig.mk
多卡 SIM 配置为no 
MTK_MULTI_SIM_SUPPORT=no

换个思路,去feature。

上面方案一去系统的feature ,经验上看,对于平板方案按照这个思路来更改是没有问题的,但是对于手机方案来做的平板产品来讲,是无法去除成功的,所以如果你是手机方案的大屏产品。无论怎么去就是去不掉。 如果从驱动层来去除feature+moden,将4G全部去掉又会发现各种报错。

还是先参考下 两套开机向导的源码吧,这里我们举例其中一个开机向导Sim界面的源码来参考 系统开机向导 可能存在的判断逻辑。

SimMissingActivity 判断跳过逻辑

 if (!SetupWizardUtils.simMissing(this) || !SetupWizardUtils.hasTelephony(this))public class SimMissingActivity extends BaseSetupWizardActivity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (!SetupWizardUtils.simMissing(this) || !SetupWizardUtils.hasTelephony(this)) {// NetworkSetupActivity comes before us. DateTimeActivity comes after.// If the user presses the back button on DateTimeActivity, we can only pass along// that information to NetworkSetupActivity if we are still around. But if we finish// here, we're gone, and NetworkSetupActivity will get whatever result we give here.// We can't predict the future, but we can reasonably assume that the only way for// NetworkSetupActivity to be reached later is if the user went backwards. So, we// finish this activity faking that the user pressed the back button, which is required// for subactivities like NetworkSetupActivity to work properly on backward navigation.// TODO: Resolve all this.finishAction(RESULT_SKIP, new Intent().putExtra("onBackPressed", true));return;}getGlifLayout().setDescriptionText(getString(R.string.sim_missing_summary));setNextAllowed(true);}重点代码: if (!SetupWizardUtils.simMissing(this) || !SetupWizardUtils.hasTelephony(this)) {

如果当前 不支持SIM 或者 没有Tel模块,那么就下一页

SetupWizardUtils 判断SIM 、 hasSystemFeature FEATURE_TELEPHONY

SIM 判断:public static boolean simMissing(Context context) {TelephonyManager tm = context.getSystemService(TelephonyManager.class);SubscriptionManager sm = context.getSystemService(SubscriptionManager.class);if (tm == null || sm == null) {return false;}List<SubscriptionInfo> subs = sm.getActiveSubscriptionInfoList();if (subs != null) {for (SubscriptionInfo sub : subs) {int simState = tm.getSimState(sub.getSimSlotIndex());if (LOGV) {Log.v(TAG, "getSimState(" + sub.getSubscriptionId() + ") == " + simState);}if (simState != -1) {final int subId = sub.getSubscriptionId();final TelephonyManager subTm = tm.createForSubscriptionId(subId);if (isGSM(subTm) || isLteOnCdma(subTm, subId)) {return false;}}}}return true;}Tel的判断public static boolean hasTelephony(Context context) {PackageManager packageManager = context.getPackageManager();return packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY);}

PackageManager.FEATURE_TELEPHONY

packageManager 是一个抽象类,最终走到ApplicationPackageManager.java 实现类里面的 hasSystemFeature 方法,具体源码跟踪可以自行跟踪一下。

ApplicationPackageManager hasSystemFeature

  @Overridepublic boolean hasSystemFeature(String name) {return hasSystemFeature(name, 0);}@Overridepublic boolean hasSystemFeature(String name, int version) {//wangfangchen add if(name.contains("android.hardware.telephony")){Log.d("wangfangchen","hasSystemFeature  name:"+name+"    return false");return false;}//wangfangchen end .....return mHasSystemFeatureCache.query(new HasSystemFeatureQuery(name, version));}所以,最终对于 android.hardware.telephony 相关的全部返回false 

总结

  • 编译源码,SIM界面 真的跳过了,实现了需求;紧急呼叫也没有了,实现了需求。
  • 这种方法区别于上一篇官网方法,其实是从底层触发来解决问题,这个并不是谷歌提倡的,但是能够解决实际问题,且解决方便。
  • 再次强调,不同平台不同安卓版本不同产品方案实现方法可能不一样,但是思路一样。

相关文章:

Android13开机向导

文章目录 前言需求-场景第三方资料说明需求思路按照平台 思路 从配置上去 feature换个思路&#xff0c;去feature。SimMissingActivity 判断跳过逻辑SetupWizardUtils 判断SIM 、 hasSystemFeature FEATURE_TELEPHONYPackageManager.FEATURE_TELEPHONYApplicationPackageManage…...

软件测试丨Appium 源码分析与定制

在本文中&#xff0c;我们将深入Appium的源码&#xff0c;探索它的底层架构、定制化使用方法和给软件测试带来的优势。我们将详细介绍这些技术如何解决实际问题&#xff0c;并与大家分享一些实用的案例&#xff0c;以帮助读者更好地理解和应用这一技术。 Appium简介 什么是App…...

1.网络知识-IP与子网掩码的关系及计算实例

IP与子网掩码 说实话&#xff0c;之前没有注意过&#xff0c;今天我打开自己的办公地电脑&#xff0c;看到我的网络配置如下&#xff1a; 我看到我的子网掩码是255.255.254.0&#xff0c;我就奇怪了&#xff0c;我经常见到的子网掩码都是255.255.255.0啊&#xff1f;难道公司配…...

Android中Gradle常用配置

前言 本文记录了一些常用的gradle配置&#xff0c;基本上都是平时开发中可能会使用到的&#xff0c;如果有新内容会不定时更新&#xff0c;附官网 1.依赖库版本写法 不推荐写法&#xff1a; dependencies {compile com.example.code.abc:def:2. // 不推荐的写法 }这样写虽然可…...

Linux操作系统3-文件与IO操作2(文件描述符fd与文件重定向)

上篇文章&#xff1a;Linux操作系统3-文件与IO操作1(从C语言IO操作到系统调用)-CSDN博客 本篇代码Gitee仓库&#xff1a;myLerningCode 橘子真甜/Linux操作系统与网络编程学习 - 码云 - 开源中国 (gitee.com) 本篇重点&#xff1a;文件描述符fd与文件重定向 目录 一. 文件描述…...

k8s调度策略

调度策略 binpack&#xff08;装箱策略&#xff09; Binpacking策略&#xff08;又称装箱问题&#xff09;是一种优化算法&#xff0c;用于将物品有效地放入容器&#xff08;或“箱子”&#xff09;中&#xff0c;使得所使用的容器数量最少&#xff0c;Kubernetes等集群管理系…...

uniapp中父组件传参到子组件页面渲染不生效问题处理实战记录

上篇文件介绍了,父组件数据更新正常但是页面渲染不生效的问题,详情可以看下:uniapp中父组件数组更新后与页面渲染数组不一致实战记录 本文在此基础上由于新增需求衍生出新的问题.本文只记录一下解决思路. 下面说下新增需求方便理解场景: 商品信息设置中添加抽奖概率设置…...

螺丝螺帽缺陷检测识别数据集,支持yolo,coco,voc三种格式的标记,一共3081张图片

螺丝螺帽缺陷检测识别数据集&#xff0c;支持yolo&#xff0c;coco&#xff0c;voc三种格式的标记&#xff0c;一共3081张图片 3081总图像数 数据集分割 训练组90&#xff05; 2781图片 有效集7% 220图片 测试集3% 80图片 预处理…...

一个简单带颜色的Map

越简单 越实用。越少设计&#xff0c;越易懂。 需求背景&#xff1a; 创建方法&#xff0c;声明一个hashset&#xff0c; 元素为 {“#DE3200”, “#FA8C00”, “#027B00”, “#27B600”, “#5EB600”} 。 对应的key为 key1 、key2、key3、key4、key5。 封装该方法&#xff0c…...

kubeadm安装K8s集群之基础环境配置

系列文章目录 1.kubeadm安装K8s集群之基础环境配置 2.kubeadm安装K8s集群之高可用组件keepalivednginx 3.kubeadm安装K8s集群之master节点加入 4.kubeadm安装K8s集群之worker1节点加入 kubeadm安装K8s集群基础环境配置 1.首先确保所有机器可以通信&#xff0c;然后配置主机host…...

前端实现在线预览excel文件

在前端开发中&#xff0c;经常会遇到需要在线预览各种文件的需求。本文将介绍如何使用前端技术实现在线预览 Excel 文件的功能。 一、基于微软office服务的excel预览 获取要预览的 Excel 文件的 URL&#xff08;例如存储在 OneDrive 或 SharePoint 上的文件&#xff09;。 使…...

关于idea-Java-servlet-Tomcat-Web开发中出现404NOT FOUND问题的解决

在做web项目时&#xff0c;第一次使用servlet开发链接前端和后端的操作&#xff0c;果不其然&#xff0c;遇到了诸多问题&#xff0c;而遇到最多的就是运行项目打开页面时出现404NOT FOUND的情况。因为这个问题我也是鼓捣了好久&#xff0c;上网查了许多资料才最终解决&#xf…...

SCRM私域流量管理工具助力企业微信电商转型升级

内容概要 在当今数字化时代&#xff0c;SCRM&#xff08;社交客户关系管理&#xff09;私域流量管理工具正逐渐成为企业转型的重要助力。尤其是在电商领域&#xff0c;企业微信的兴起为许多公司打开了新的销售渠道&#xff0c;通过SCRM系统的高效整合&#xff0c;企业能够更加…...

三相异步电动机为什么能够旋转?

三相异步电动机&#xff0c;作为一种广泛应用于工业、农业及其他领域的电动机&#xff0c;其工作原理的理解对于工程技术人员以及相关从业者来说至关重要。 一、三相异步电动机的基本结构 三相异步电动机主要由定子、转子和机壳组成。定子是电动机的静止部分&#xff0c;包含…...

优化移动端H5:常见问题与解决方案

移动端H5开发中的“坑”与解决方案 本文介绍了开发中遇到的几个关于移动端H5开发中的小问题&#xff0c;以及解决的方法。 一、iOS滑动不流畅问题 在iOS设备上&#xff0c;H5页面的滑动效果有时会出现不流畅的情况&#xff0c;特别是在页面高度超过一屏时。这通常是由于iOS的…...

TM1不藏私系列——#10. TM1快速运算的秘密武器-Feeder

与其他BI产品对比&#xff0c;TM1的快速运算能力一骑绝尘。 但是在多维度的数据组合下&#xff0c;TM1是依据什么进行运算的呢&#xff1f; 今天将和大家一同了解TM1快速运算的秘密武器-Feeder。 上期我们提到通过配置维度中的元素权重&#xff0c;可以在合并层级加总计算。除…...

【Python】【Conda 】Conda vs venv:Python开发者的虚拟环境选择指南

目录 引言一、概述1.1 Conda 虚拟环境1.2 Python venv 虚拟环境 二、安装与设置2.1 安装 Conda 虚拟环境2.2 安装 Python venv 虚拟环境 三、依赖管理3.1 Conda 依赖管理3.2 Python venv 依赖管理 四、适用场景五、性能与资源占用5.1 Conda 性能与资源占用5.2 Python venv 性能…...

【从0学英语】06.时态 - 一般过去时

一般过去时&#xff08;Past Simple Tense&#xff09;是表达过去发生的动作、状态或事实的核心时态。这一时态都扮演着不可或缺的角色&#xff0c;本篇文章将全面讲解一般过去时的定义、结构、用法以及常见的动词变化&#xff0c;通过例句和详细的解释帮你理解这一时态。 文章…...

获取cpu序列号-python实现

DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 需要更多数据资源和技术解决方案&#xff0c;知识星球&#xff1a; “DataBall - X 数据球(free)” -------------------------------------------------------------…...

文献分享: PLAID——为ColBERT架构设计的后期交互驱动器

&#x1f449;前情提要&#xff1a; 神经网络自然语言模型概述 Transformer \text{Transformer} Transformer与注意力机制概述 &#x1f4da;相关论文&#xff1a; BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding \text{BERT: Pre-train…...

IMX6ULL开发板、PC机上的USB网卡、VMware中的Ubuntu的桥接网卡三者互Ping设置及设置

连上PC机上的USB网卡配置 首先打开Windows设备管理器&#xff0c;截图记录下当前的网络适配器&#xff0c;作为插上USB网卡后的对比&#xff1a; 然后打开“更改适配器选项”&#xff0c;也截张图&#xff0c;作为插上USB网卡后的对比&#xff1a; 插上USB网口&#xff0…...

孚盟云 MailAjax.ashx SQL漏洞复现

0x01 产品描述: ‌孚盟云‌是由...

前端 mp4 视频改成 m3u8 流模式

前端 mp4 视频改成 m3u8 流模式 mp4 视频的问题 1、mp4 视频通常对应一个文件&#xff0c;播放时需要加载全部文件&#xff0c;消耗网络资源。如果用户从中间某个时间访问&#xff0c;也会从头开始下载&#xff0c;浪费服务器性能。 2、mp4 视频文件容易被用户下载到本地。有…...

聚焦港口智能接处警,开启平安海运之门

一、概述 港口作为海运的关键枢纽&#xff0c;安全保障至关重要。港口智能接处警系统凭借智能化、数字化、信息化手段&#xff0c;融合 AI 与大数据等前沿技术&#xff0c;旨在实现对港口各类警情的快速、精准处理&#xff0c;有效提升港口应急响应能力&#xff0c;开启平安海…...

`yarn list --pattern element-ui` 是一个 Yarn 命令,用于列出项目中符合指定模式(`element-ui`)的依赖包信息

文章目录 命令解析&#xff1a;功能说明&#xff1a;示例输出&#xff1a;使用场景&#xff1a; yarn list --pattern element-ui 是一个 Yarn 命令&#xff0c;用于列出项目中符合指定模式&#xff08; element-ui&#xff09;的依赖包信息。 命令解析&#xff1a; yarn list…...

ElementEye,网页分析器

介绍 我们经常使用Python写爬虫&#xff0c;爬到网页数据之后&#xff0c;就需要用beautifulSoup进行解析。因为写爬虫并不是我的主营工作&#xff0c;大多数只是用来分析一下想要的数据而已&#xff0c;所以经常会忘记beautifulSoup的用法。 同时&#xff0c;我们总是分析页面…...

健康管理系统(Koa+Vue3)

系统界面(源码末尾获取) 系统技术 Vue3 Koa Nodejs Html Css Js ....... 系统介绍 系统比较简单,轻轻松松面对结业课堂作业.采用的是基于nodejs开发的Koa框架作为后端,采用Vue框架作为前端,完成快速开发和界面展示. 系统获取 啊啊啊宝/KoaVue3https://gitee.com/ah-ah-b…...

智创 AI 新视界 -- AI 助力金融风险管理的新策略(16 - 10)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

Linux内核 -- 字符设备之read write poll基本实现

Linux字符设备&#xff1a;read、write和poll函数实现及完整代码 1. read函数 原型 ssize_t read(struct file *file, char __user *buf, size_t count, loff_t *pos);实现步骤 检查用户缓冲区&#xff1a;使用copy_to_user将数据从内核空间复制到用户空间。返回已读取的字…...

腾讯微信C++面试题及参考答案

64 匹马 8 个赛道,找出前四名,最少赛多少场 为了找出64匹马中的前四名,我们可以按照以下步骤来组织比赛,尽量减少所需要的比赛次数: 初步分组: 将64匹马分成8组,每组8匹马。分别为A、B、C、D、E、F、G、H这8组。每组进行一次比赛来确定各组的速度排序。每个组比赛一次总…...

网站关键词代码怎么做/百度浏览器app

来源 &#xff1a;http://www.cnblogs.com/excelib/p/5150647.html 原文地址&#xff1a;http://www.excelib.com/article/287/show firewalld简介 Centos7中默认将原来的防火墙iptables升级为了firewalld&#xff0c;firewalld跟iptables比起来至少有两大好处&#xff1a; 1、…...

新网网站空间购买/珠海seo排名收费

在VueJS中&#xff0c;v-for 循环是每个项目都会使用的东西&#xff0c;它允许您在模板代码中编写for循环。在最基本的用法中&#xff0c;它们的用法如下{{ product.name }} 但是&#xff0c;在本文中&#xff0c;我将介绍六种方法来使你的 v-for 代码更加精确&#xff0c;可预…...

大数据平台网站建设/软件注册推广平台

1.实现目标&#xff1a; 选择用户角色&#xff0c;自动勾选权限。 2. (1)MySQL数据库的建立 (2)ng-repeat指令显示用户权限 (3)ng-checked指令控制用户权限 3.实例 (1)MySQL数据库的建立 t_role表 id rolename 1 系统管理员 2 总经理 r_right表 id …...

政协网站 两学一做专题研讨/中国营销网站

2019独角兽企业重金招聘Python工程师标准>>> 随着《愤怒的小鸟》的发布所受到了广大游戏爱好者的好评&#xff0c;从而大多数游戏开发者在看到《愤怒的小鸟》时&#xff0c;肯定非常想知道该游戏的开发技术&#xff0c;为了满足网友的需求&#xff0c;于是推出了《盛…...

吉首自治州住房和城乡建设局网站/网上销售方法

————— 第二天 —————举个例子&#xff0c;给定如下数组&#xff1a;要删除哪个元素&#xff0c;才能使得剩余元素的乘积最大呢&#xff1f;显然应该删除元素2&#xff1a;剩余元素的乘积 5 X 8 X 6 X9 X 7 15120————————————小灰把面试题目告诉给了大…...

敦煌做网站 条件/已备案域名30元

React Hooks+Laravel 前端博客实战 阐述用create-next-app快速创建项目建立博客首页按需加载 Ant Design配置文件 blog\package.json阐述 我们先完成博客的前端界面的制作,主要完成的功能就是用户的访问,文章列表和文章详情页面。 因为Blog的前台需要SEO操作,所以我们一定…...