ios 不采用三方框架热更新

iOS热更新方案(过AppStore审核) iOS热更新 阅读详情

核心功能在这里,其余步骤其实在另外一个FrameWorks工程,那边做的事情就是建立了一个HotUpdateControl对象 内部有一个方法getVcs 可以返回一个UIViewController数组

#import "TabController.h"  
//#import <HotUpdateMudel/HotUpdateControl.h>  
@interface TabController ()  

@end  

@implementation TabController  

-(instancetype)initWithCoder:(NSCoder *)aDecoder{  
    if (self = [super initWithCoder:aDecoder]) {  
        NSString *documentDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];  
        NSArray* arrFramework = [self getFilenamelistOfType:@"framework"  fromDirPath:documentDirectory];  
        NSLog(@"%@",arrFramework);  
        if (arrFramework.count==0) {  
             NSArray * arrTitle = @[@"首页",@"广场",@"朋友圈",@"我的",@"设置"];  
            NSMutableArray * arrVcs = @[].mutableCopy;  
            for (int i=0; i<arrTitle.count; i++) {  
                UIViewController * vcRoot = [[UIViewController alloc]init];  
                vcRoot.title = arrTitle[i];  
                vcRoot.view.backgroundColor = [UIColor whiteColor];  
                UINavigationController * navi = [[UINavigationController alloc]initWithRootViewController:vcRoot];  
                [arrVcs addObject:navi];  
            }  
            [self setViewControllers:arrVcs animated:YES];  

        }else{  

            NSString *bundlePath = [NSString stringWithFormat:@"%@/%@",documentDirectory,[arrFramework lastObject]];  

            if (![[NSFileManager defaultManager] fileExistsAtPath:bundlePath]) {  
                NSLog(@"file not exist ,now  return");  
                return self;  
            }  
            NSBundle *bundle = [NSBundle bundleWithPath:bundlePath];  

            if (!bundle || ![bundle load]) {  
                NSLog(@"bundle load error");  
            }  

            Class loadClass = [bundle classNamed:@"HotUpdateControl"];  
            if (!loadClass) {  
                NSLog(@"get bundle class fail");  
                return self;  
            }  
            NSObject *bundleObj = [loadClass new];              
            NSArray * arrVc = [bundleObj performSelector:@selector(getVcs)];  

            NSMutableArray * arrVcs = @[].mutableCopy;  
            for (int i=0; i<arrVc.count; i++) {  
                UIViewController * vcRoot =arrVc[i];  
                vcRoot.view.backgroundColor = [UIColor whiteColor];  
                UINavigationController * navi = [[UINavigationController alloc]initWithRootViewController:vcRoot];  
                [arrVcs addObject:navi];  
            }  

            [self setViewControllers:arrVcs animated:YES];  

        }  
    }  
    return self;  
}  

-(NSArray *) getFilenamelistOfType:(NSString *)type fromDirPath:(NSString *)dirPath  
{  
    NSArray *fileList = [[[NSFileManager defaultManager] contentsOfDirectoryAtPath:dirPath error:nil]  
                         pathsMatchingExtensions:[NSArray arrayWithObject:type]];  
    return fileList;  
}  

- (void)viewDidLoad {  
    [super viewDidLoad];  

}
C#hybridCLR热更新方案初探 暂时处于hybridCLR的初步研究状态,目前的框架使用还是尚少,本篇文章旨在同步给大家大概的使用流程和使用心得,在初步建立新项目时可以适当考虑。 阅读详情

相关推荐

iOS热更新避坑指南:绕过AppStore审核的正确姿势

在iOS开发中,热更新是一个非常实用的功能。它可以让开发者在不重新发布App到AppStore进行审核的情况下,对App的部分功能进行更新。我们这篇文章的目的就是要详细介绍iOS热更新的相关知识,以及如何正确地绕过AppStore审核,同时避免踩坑。范围涵盖了热更新的原理、实现方法、实际应用场景等方面。本文将首先介绍iOS热更新的核心概念和它们之间的联系,用通俗易懂的语言解释相关知识。接着详细讲解热更新的核心算法原理和具体操作步骤,包括使用代码示例。然后介绍热更新的数学模型和公式,并通过举例说明。

移动开发前沿的博客 1967

iOS热更新-8种实现方式

因为 打包发到AppStore的ipa安装包 里的每个动态库 都有唯一的编码,iOS系统会进行验证,所以动态通过网络获取 新的动态库 也用不了。滴滴iOS的一个框架,准备在2017年初开源,与JSPatch比更加智能化,用OC在XCode中写完代码,用工具可以自动生成可以更新的js文件。react模板JSX有一定的学习成本,vue和常用的web开发类似,模板是普通的html,数据绑定用mustache风格,样式直接使用css。因为是国外的网站,然后呢,要FQ才能使用。热更新时,从服务器拉去js脚本。

lmrylll的博客 3968

IOS 热更新,实时代码更新,动态更新,动态库framework

IOS 热更新,实时代码更新,动态更新,动态库framework http://blog.youkuaiyun.com/jianrenbubai/article/details/50351507

iOS远程hot patch的优点和风险

Fnut · 2016/03/01 13:35原文地址:www.fireeye.com/blog/threat…0x00 前言苹果做了非常多的努力来建造和维持一个健康并且干净的应用环境。其中对现在的现状起到很大作用的部分就是苹果APP STORE,它是被一个十分周密的对所有提交的应用进行检查的审批程序所保护的。尽管这个程序是被设计为用来保护IOS用户并且确保应用程序符合苹果的安全性和完整性的要求,...

weixin_34072857的博客 398

Windows 11/10系统盘被BitLocker锁了别慌!手把手教你用manage-bde命令找回密钥并解锁

本文详细介绍了当Windows 11/10系统盘被BitLocker锁定后的恢复方法,重点讲解了如何使用manage-bde命令行工具找回密钥并解锁加密驱动器。通过进入Windows恢复环境、诊断锁定状态、提取恢复密钥ID以及执行解锁操作等步骤,帮助用户有效解决BitLocker锁定问题,同时提供了后续防护优化建议和高级故障排除技巧。

weixin_42542669的博客 1461

RHCSA Linux环境搭建

安装Linux操作系统一般有三种方式:为了便捷方便高效,因此本人选择通过虚拟机来使用Linux操作系统。先在官网(Download VMware Workstation Pro)下载好VMware workstation pro软件,下载安装完成后,需要激活打开。下载版本不同,所需激活码也不同(激活码可在网络上查找)

weixin_68256171的博客 1419

[iOS]原生swift的hotpatch可行性初探

0x0 引子 最近在iOS群里面看到某应用因为Hotpatch审核被拒绝, 如果Hotpatch全面被封禁, 那还不如全切swift, 又能提高性能, 又能减少编码中犯的错误. 仔细想想如果swift也有办法被Hotpatch, 不就更加完美了?Hotpatch是无法被全面封禁的, 可爱的程序猿们总能有应对的办法 0x1 swift的方法调用方式 swi...

weixin_34356555的博客 311

战舰V3移植CANopenNode并驱动电机全流程

第三部分是电机的对象字典(也就是节点的OD)中的索引,长度2个字节。索引发送的是小段模式,比如这一部分为0X40 0X60,实际操作的索引地址为0X6040。第一部分是COB-ID,长度1个字节,电机的node-ID默认为0x01,所以报文ID一直是601。第五部分是要写入的数据,数据发送的时候是小端模式,低字节数据先发送,长度由第二部分决定。配置定时器6,时间为1ms,根据公式计算得到参数PSC取72-1,ARR取1000-1。第二部分是CMD,长度1个字节,其实就是数据部分的长度,

qq_50526837的博客 3044

[iOS]原生swift的hotpatch可行性初探 续1

0x0 引子 之前在<原生swift的hotpatch可行性初探>对swift hotpatch的原理做一个简单的介绍和简单的示例, 但基础的原理分析并不能确定真实的可行性. 为此想通过这篇文章来做一个更复杂的例子. 0x1 先来一个简单的例子 来一个例子, 实现用js patch swift的方法, 功能包括: 在js中通过类名/方法名/...

weixin_33816611的博客 222

SpotBugs使用

spotbugs命令行参数解析

javajingling的专栏 2946

虚拟机VirtualBox下载与安装、安装Ubuntu超详细图文步骤,对一些配置问题也有所写。

自己使用过两款虚拟机,相较于VMware虚拟机来说,virtuabox虚拟机所占内存更小,只有几十兆,且完全开源不收费,里面的功能与VMware基本差不多(在日常开发、学习使用完全够用)。最主要的是,在博主自己使用VMware时经常出错,而virtualbox就更稳定一些,所以这篇是针对virtualbox的安装与一些细节部分。

l1015649309的博客 4万+

U3D热更新技术

🕐:开发者将测试好的代码,发布到应用商店的审核平台,平台方会进行稳定性及性能测试。👉 测试成功后,用户即可在 👉 如苹果的AppStore看到应用的更新信息,用户点击应用更新后,需要先关闭应用,再进行更新。👉 人话:重装🕐:什么是热更新❓🤷‍♂️广义:无需关闭应用,不停机状态下修复漏洞,指软件不通过运营商店的软件版本更新审核,直接通过应用自行下载的软件数据更新资源的行为,重点是更新逻辑代码。

m0_61490399的博客 7179

【FPGA教程案例89】编译码2——使用vivado核实现RS信道编译码

RS编码,又称里所码,即Reed-solomon codes,是一种前向纠错的信道编码,对由校正过采样数据所产生的多项式有效。当接收器正确的收到足够的点后,它就可以恢复原来的多项式,即使接收到的多项式上有很多点被噪声干扰失真。

FPGA/MATLAB学习教程/源码/项目合作开发 3540

iOS 热更新/热修复

热更新/热修复(调研的可能不全) 热更新 1、* Flutter * 由于渲染的基础(gdi)是自己实现的,所以实现跨平台、性能优化、摆脱平台约束方面的裕度更大。从实际体验来看, Flutter 的性能比 RN 要高不少。优点可能是性能,但由于它完全自定义了一套 ui 系统,这也是它的限制。热更新可使用[code-push](codepush https://githu...

srxboys的博客 1万+

Halcon那些事:Halcon非常核心的1个概念reduce_domain算子的理解和1个详细的使用示例

Reduce是减少的意思。并不是真的去裁剪图像,而是定义一个“感兴趣的区域(Region of Interest, ROI)”。后续的图像处理算子将只在这个定义的区域内有效,区域外的像素将被忽略。在一张白纸(完整图像)上放一张镂空的纸板(Domain)。我们后续的绘画(图像处理操作)只会透过镂空的部分影响到下面的白纸。镂空纸板之外的部分保持不变,也不会被处理。关键步骤:使用ReduceDomain,将图像的域限制为ROI区域,图像在原来图像基础上存在图像区域。

十多年IT经验,专注机器视觉,智能制造半导体行业 577

VxWorks系列 快速导航

Vxworks系列快速阅览导航

Mr.Sugarcane 1308

iOS的热更新:OC热更新、Swift热更新、SwiftUI样式的热更新、OC与Swift对比

通过JSExport协议暴露 Swift 方法给 JS:swift// 定义协议(需继承 JSExport)// 暴露给 JS 的方法:显示弹窗// 暴露数据给 JS:当前用户信息// 实现桥接类// 持有视图控制器用于操作UI// 实现弹窗方法alert.addAction(UIAlertAction(title: "确定", style: .default))// 用户信息return ["name": "张三", "age": 25]

idealPC的专栏 1128

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

iOS 如何用原生代码实现app的热更新,且能顺利通过app store审核

目前,流行的热更新框架绝大多数都被Apple审核团队给禁止使用。为了能更好的实现app的热更新功能,现基于iOS纯原生代码书写了一套热更新功能。具体的实现思路如下: 下面我是按照基于Cordova的混合式开发项目实现的app热更新功能 这种热更新的思路适用于所有的iOS app开发。上面只是我举的一个例子,具体大家可以根据我这个思路举一反三,不同的项目实现的方式上都是大同小异。注:请大家不要用这种热更新方法去上架一些违规的app,我之所以把这种思路和源码贡献出来是当一个线上的项目出...

cxiao_11的博客 3619

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

PureScript:Unity3D的C热更框架,开启iOS平台的热更新新时代

PureScript:Unity3D的C#热更框架,开启iOS平台的热更新新时代 项目介绍 PureScript是一款专为Unity3D设计的C#热更框架,基于Mono的MONO_AOT_MODE_INTERP模式,为开发者提供了在iOS平台上进行热更新的强大工具。PureScript不仅支持在iOS平台上进行Assembly.Load操作,还能在构建时自动绑定Unity的Il2cpp代码,确保了...

gitblog_00731的博客 955

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Unity为什么ios不能热更新

2、AOT(Ahead Of Time 运行前编译)模式——在编译成CIL之后,会把CIL再处理一遍,编译成原生码,在运行的时候交给CPU直接执行,Mono下的AOT只会处理部分的CIL,还有一部分CIL采用了JIT的模式;但是对于Jit来说,要动态生成代码并且执行,则需要在运行是动态分配内存来存放生成的代码,并通过这块内存来执行对于的代码逻辑。还有一种对Jit的理解是:一个程序在它运行的时候创建并且运行了全新的代码,而并非那些最初作为这个程序的一部分保存在硬盘上的固有的代码, 就叫Jit。

Sevol_Y 2123

iOS热更新实现方式

转发 链接:https://www.jianshu.com/p/00111d447e7e 苹果静止热更新,可惜我的是企业app,没有这些约束了,随便用。(当然有些热更新已经可以通过苹果审核了,比如JSPatch)官网说的: JSPatch 平台 SDK 1.7.2 以上版本可以通过苹果审核,可以正常使用。Github 开源版本暂不可用。 最近公司要添加热修复BUG,其实早之前本人就有简单实现过,刚...

哈皮吖的博客 2300

iOS热更新技术要点与风险分析

iOS热更新的核心在于平衡动态化需求与苹果政策限制。推荐优先使用资源更新或React Native/Weex等框架,避免直接修改原生代码。若需原生热修复,可评估企业级证书或分阶段审核策略,同时关注苹果政策动态以避免违规风险。

baidu_30087715的博客 1517

基于Unity的手游热更新方案

现状 Unity目前在手游平台的更新方式主要为脚本更新和C#更新,脚本更新使用比较广泛和稳定的为Tolua和xLua,C#主要为ILRuntime,而且都支持Android和iOS平台。 Tolua Tolua是jarjin写的开源热更新框架,到目前为止有许多成功的项目案例,是一款不错的框架。 tolua:https://github.com/topameng/tolua 框...

折羽 3938

热更新的限制

iOS平台禁止JIT,Unity在iOS上只能AOT编译,无法运行时加载和执行新C#代码,这就是Unity官方没有直接提供C#热更新方案的主要原因。需要热更新的项目,通常要借助第三方方案或脚本语言实现。接下来我将详细介绍。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 1242

IOS 2020 热更新

先夸夸JSPatch,平台 SDK 1.7.2 以上版本可以通过苹果审核,可以正常使用。Github 开源版本暂不可用。 暂时1.8.0 是需要付费使用的.还需要联系获得,跟阿里的热更新差不多. 阿里的热更新需要月活20万才可以接入,才给SDK包.如果需要自己做热更新的, 还是企业账号的可以使用1.7.2的包自己做更新,1.8.0还会自己弹框应该是交钱才能去掉测试弹框. 一、JSPatch http://www.jspatch.com/ https://github.com/bang590/JSPa

u013712343的博客 1338

Unity应用的iOS热更新

Unity应用的iOS热更新 作者:丁治宇 Unity TechnologiesChina Agenda •什么是热更新 •为何要热更新 •如何在iOS上对Unity应用进行热更新 •支持Unity iOS热更新的各种Lua插件的对比 什么是热更新 •广义定义 •无需关闭服务器,不停机状态下修复漏洞,更新资源等,重点是更新逻辑代码。 ...

aikb6223的博客 298
上一篇: swift 为方法追加代码
下一篇: pod 上传命令备注
PandaDevelop
博客等级 码龄10年 0粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值