忒修斯科技

本文介绍如何接入SOT的网站版SDK,接入后即可使用本网站来管理补丁的分发,无需再自己搭建服务器。网站每月免费赠送价值100元的补丁流量,可以满足月活百万的App使用了。

这是一个很简单的工程,仅仅为了演示如何接入SDK,下载工程后,Xcode14直接打开应该就能编译成功和运行:

先运行一下xcode-select--install安装xcode命令行工具,然后运行sudoxcode-select--switchXcode.app的路径,把”xcode.app的路径“改成你mac上的xcode的路径,例如我的是/Applications/Xcode.app。

在terminal运行命令:sudosh/Applications/ShipOTDemo/sotsdk/compile-script/install.sh,会把SDK目录compile-script下的clang,libtool,swift等脚本安装到本地编译工具链里,需要输入root密码。/Applications/ShipOTDemo/是我放工程的目录,你按照自己的目录来。

可以自己检查一下是否安装成功,命令行运行:xcrun--findsot_link.sh,例如我的会得到结果/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/sot_link.sh,进入到该目录还能看到其余安装进去的脚本:

修改编译工具链不会影响正常项目的编译,假如不想接入SOTSDK了,要完全恢复原状,运行compile-script下的uninstall.sh就行。如在命令行输入sudosh/Applications/ShipOTDemo/sotsdk/compile-script/uninstall.sh。

注意,即使有多个项目接入SOT,也只有第一次需要运行install.sh脚本,不用每个工程都运行。

增加1个Configuration,只有切换到这个Configuration才使用SOT编译模式。这样我们平时还是用原来的Configuration做开发,等到真正要出包给到商店时,才切换到SOT编译模式,对项目影响达到最小,添加的步骤如下:

选中ShipOTDemoProject,然后选择Info面板,点击Configurations的下面加号,复制Release的编译配置,并且命名为SotRelease,别的名字也可以,但注意名字都不要留有空格:加完就是:注意:本例只有此处需要添加,但如果你应用到自己项目中时,需要把所有的Project都加上这个Configuration,否则编译会报找不到文件等等的错误。所以加完这个Configuration之后,就马上去EditScheme切换一下,然后Build和Run一下,看是否有编译错误。如果没有编译错误,正常运行的话,再进行后面的操作。如果有错误,请检查是否漏了一些工程没有添加上。

添加热更需要的编译选项,添加SOT虚拟机静态库等,步骤如下:

SDK里提供了一个便利脚本,可以sdk目录里找到的project-script/sot_package.sh,它会把生成的补丁拷贝到Bundle文件夹下,方便我们找到它上传到网站。需要在每次SotRelease编译时调用这个脚本,按下面步骤添加:

脚本内容为:if[["$CONFIGURATION"=="SotRelease"]];thensh"$SOURCE_ROOT/sotsdk/project-script/sot_package.sh""$SOURCE_ROOT/sotsdk/project-script/sotconfig.sh""$SOURCE_ROOT/sotsaved/$CONFIGURATION"ShipOTDemoSwiftTestfi

可以注意到脚本里有两个参数,分别是ShipOTDemo和SwiftTest,这个是跟前面添加的OtherCFlags里面的-sotmodule$(PRODUCT_NAME)对应的,因为$(PRODUCT_NAME)在这里会被Xcode替换成ShipOTDemo和SwiftTest,所以才能对应上了。如果是你自己的项目,这里要改成对应的名字。

并且把Basedondependencyanalysis的勾去掉,确保每次编译都会调用。

链接libz.tbd和libc++.tbd

还是在这个页面下,打开LinkBinaryWithLibraries页,加入下面这两个库

需要提前在代码里增加调用补丁同步API的代码:

打开ViewController.m文件,先增加引用SOT网站服务API的头文件的代码:#ifdefUSE_SOT#import"../sotsdk/libs/SotWebService.h"#endif

然后再在下面的函数SotUpdate添加下面的代码:#ifdefUSE_SOTSotApplyCachedResultApplyShipResult=[SotWebServiceApplyCachedAndPullShip:version_key_stris_dev:falsecb:^(SotDownloadScriptStatusstatus){if(status==SotScriptShipAlreadyNewest){NSLog(@"SyncOnlySotScriptShipAlreadyNewest");}elseif(status==SotScriptShipHasSyncNewer){NSLog(@"SyncOnlySotScriptShipHasSyncNewer");}elseif(status==SotScriptShipDisable){NSLog(@"SyncOnlySotScriptShipDisable");}else{NSLog(@"SyncOnlySotScriptStatusFailure");}}];if(ApplyShipResult.Success){if(ApplyShipResult.ShipMD5)NSLog(@"sotsuccessapplycachedshipmd5:%@",ApplyShipResult.ShipMD5);}#endif

这段代码用一个version_key_str做为唯一的Key向网站拉取补丁,如果拉取成功会把补丁保存下来,下次再调用该API时便能加载这个补丁。在这个示例程序中,version_key_str是通过一个文字输入控件获取的,后面会介绍如何在网站注册,然后获得VersionKey,等启动程序后输入到输入框里,就可以进行补丁拉取。

如果是用户自己的程序,在网站获得了VersionKey之后,调用API的代码直接写死对应的VersionKey就可以了,本文这里只是为了演示。

按上面配置完之后,还需要控制sotconfig.sh的开关,否则编译出来的APP是无法热更的,SOT热更流程分为两部分,一部分是热更注入,一部分是生成补丁。

打开sotconfig.sh,文件在sotsdk/project-script目录下,里面有两个开关,EnableSot和GenerateSotShip:

此时去看构建日志,能看到很多SOT输出的信息:

切记如果是自己的APP,要打包发商店,打包是Archive要切换到SotRelease,本文只是测试,不用改这一步也可以:

按上一步编译成功后,运行APP,点击Run按钮,看到输出的是helloSOT:接下来通过生成补丁,把helloSOT改成其它字。

运行APP,点击Run按钮,看到输出的是helloSOT。

此时把刚才在网站得到的VersionKey填入上面的控件中,并且点击SotSync按钮。

会在Xcode控制台得到类似下面的输出,意思是同步到了最新的补丁。

再点一次SotSync按钮,就会加载刚才下载好的补丁,并且会再次去同步补丁。

这时候去点击Run按钮,就得到了新的输出,

下次再打开APP,第一次点击SotSync按钮就会成功加载补丁,因为补丁被缓存了下来。如果接下来同步到最新的补丁,就会把缓存的补丁替换掉。

1:费用是多少?APP每同步一次补丁信息,则消耗1瓦力,1元能够买10000瓦力。同步补丁信息发现有新补丁要下载,则还需按补丁大小额外收费,补丁每100KB消费3瓦力,不足100KB按100KB计算。假如同步补丁信息后发现已经下载过此补丁,则不会重新下载了,只消耗同步补丁信息的费用。举个例子,每日10000用户使用APP,那每日同步补丁信息消耗10000瓦力,开发每5日发布一个新补丁,大小100KB,发布新补丁后,APP需要下载此补丁,第一次下载的时候消费3瓦力,此后不需要再消耗下载费用。

目前每月赠送用户100万瓦力,足够百万月活的App使用了,无需充值。

注意:此处的补丁大小并不是指用户上传的补丁的大小,而是上传后经过网站解析生成的产物,并且使用zlib压缩过的大小,上传后才可以看到,通常比用户生成的补丁大小要小一些。

3:网站版补丁支持多少并发?补丁信息都保存在CDN上,支持非常高的并发,即使本网站被攻击无法访问,也不影响APP同步补丁,所以可以放心使用。

4:如果欠费怎么办?如果账户瓦力值小于0时,则APP无法加载任何补丁,即使它们之前已经同步到了最新的补丁。可以在版本信息页面看到每个版本消耗的瓦力值,网站统计瓦力的消耗有几分钟的延迟。另外需要说明的是,欠费并且重新充值后,可能也会有几分钟延迟APP才能重新同步并加载补丁,此时如果着急,可以编辑一下版本信息,可能能让CDN更快的刷新缓存。

THE END
1.C++游戏与小程序开发:跨平台与智能化体验整合在现代游戏与小程序开发领域,C++以其高性能和灵活性成为开发者的首选语言之一。随着跨平台和智能化体验的需求不断提升,如何有效整合这些特性成为开发成功的关键。本文将深入探讨C++在游戏与小程序开发中的应用,分析跨平台开发的挑战与解决方案,并探讨智能化体验的整合方法。 https://www.8kiz.cn/archives/25116.html
2.C++游戏开发探秘2C++游戏开发需要学习的内容包括基础知识、游戏开发环境搭建、游戏开发概念、数据结构和算法、网络编程、多线程编程、数据库管理、内存管理和性能优化、操作系统知识等。 一、基础知识 在开始游戏开发之前,你需要掌握C++的基本语法和一些计算机科学的基础知识。这包括数据类型与变量、控制结构(如if语句、循环)、函数https://blog.csdn.net/zhaoylzy/article/details/144383652
3.Android使用jni调用c++/c方法详解Android编写好jni加载类之后,就要开始生成.h文件了,此文件相当于一个声明文件,起到jni连接c++源代码的桥梁作用(我猜的)。 具体步骤: part1:编译项目,生成.class文件,打开android studio 的Terminal工具,cd 到app/build/intermediates/classes/debug目录下,输入命令 1 javah -jni 包名.JniTest part2:然后你会看到app/buhttps://www.jb51.net/article/143360.htm
4.c++如何使用C++打开%appdata%中的文件夹?众所周知,appdata文件夹是这个 C:\Users\*Username*\AppData\Roaming 在Windows 7 上 由于我的应用程序将部署在各种 Windows 操作系统上,因此我需要能够 100% 地获取文件夹。问题是你如何在 C++ 中做到这一点?因为我不知道确切的 Windows 操作系统,它可能是 XP、Vista 或 7,最重要的是我不知道 用户名 是https://segmentfault.com/q/1010000042729265?utm_source=sf-similar-question
5.C++可以用来开发iOSapp与Androidapp吗?容易吗?C++ 可以用来开发 iOS app 与 Android app吗? 容易吗?手机 Moto Moto Droid 查看全部8条评论回答 写回答 869346779 C++可以用于开发iOS和Android应用程序,但需要使用一些第三方框架来适配不同平台的特性。相对于其他语言来说,C++更加容易掌握,并且具有更高的性能和灵活性。在开发过程中,开发者需要熟悉iOS和https://wap.zol.com.cn/ask/details_22233483_1098436_3.html
6.创建博客阅读器通用Windows平台应用(C++)下面将详细介绍如何使用 C++ 和 XAML 开发 可以部署到 Windows 10 的通用 Windows 平台 (UWP) 应用。该应用阅读来自 RSS 2.0 或 Atom 1.0 源的博客。该教程假定你已熟悉使用 C++ 创建你的首个 Windows 应用商店应用中的概念。要研究该应用的已完成版本,你可以 从 MSDN 代码库网站下载它。在https://go.microsoft.com/fwlink/p/?linkid=255556
7.ASP.NETCore适用于.NET的开源Web框架用于使用 .NET 和 C# 构建 Web 应用和服务的框架。 开始 Windows、Linux 和 macOS 上均支持 使用一个堆栈快速生成 Web 应用 ASP.NET Core 附带生成 Web 应用所需的一切内容,其中包括 Web UI 框架 Blazor,可用于快速创建在任何位置运行的快速、安全且可靠的 Web 应用。 https://asp.net/
8.C++编译器app下载C++编译器安卓版下载[考试学习]C++编译器是一款面向初学者的便携式APP,集成了基础的编辑与编译功能,让用户能够随时编写和测试小规模C++代码,有效辅助学习过程。此外,它还支持从文件管理器直接打开代码文件,便捷地在移动设备上进行代码查看和运行测试。 应用介绍 C++编译器是一款精简但是功能完善的APP,主要为C++初学者提供核心的编辑、https://www.downza.cn/soft/10432004.html
9.AIDEAIDE- IDE for Android Java C++ appfour Reviews: 36179 | Score: 4 | Price: Free InstallAIDE is an integrated development environment (IDE) for developing real Android apps directly on your Android device. Follow interactive coding lessons and step-by-step become an expert app developer. https://www.androidwearcenter.com/androidwear/app/AIDE-+IDE+for+Android+Java+C++/1161?lang=zh
10.c++可以开发安卓app吗?2. 创建项目:打开 Android Studio,创建一个新项目。在创建过程中,选择“Native C++”模板。这将生成一个包含 C++ 原生代码和 Java 代码的项目。其中,Ja安卓APP开发va 代码负责与 Android 系统进行交互,C++ 代码用于实现应用程序的核心功能。 3. 编写 C++ 代码:在项目中,你可以找到一个名为 `native-lib.cpp` https://www.yimenapp.com/kb-yimen/26419/
11.App用户新体验——AgoraNativeSDK3.4.0声网Agora Native SDK 3.4.0 已正式上线。新版本不仅增加了更丰富的实时美声音效、屏幕共享、虚拟节拍器等功能,同时在 SDK 的稳定性、兼容性及安全合规上做了大幅度升级,希望为 App 用户带来更顺畅、舒适的互动新体验。 3.4.0版本 更新了什么? 功能新增 https://open.pgyer.com/h0z59L
12.c++编译器手机版官方版app2024免费下载安装C++编译器app下载安装失败或使用异常,请 -> 一键举报猜你喜欢 文件管理 文件管理软件排行榜 文件管理软件是只能对磁盘上的文件进行管理的软件,他能让你的手机瞬间变成电脑。手机文件管理软件哪个好用?小编悉心整理了手机文件管理软件排行榜、企业文件管理软件、微信文件管理软件。小编为用户推荐各种文件管理软件,让手机操https://m.liqucn.com/rj/771305.wml
13.AppStore上的“C++IDE清新版”打开Mac App Store 购买和下载 App。 C++ IDE 清新版17+ 边学习边直接运行代码实例,一切尽在掌握之中…… 娜陈 专为iPad 设计 “软件开发工具”类第 185 名 4.5 ? 243 个评分 免费 提供App 内购买项目 截屏 iPad iPhone 简介 ***语法高亮的学习资料让您学习更轻松。 **https://itunes.apple.com/cn/app/id1397406762
14.C++App::Initialize方法代码示例本文整理汇总了C++中App::Initialize方法的典型用法代码示例。如果您正苦于以下问题:C++ App::Initialize方法的具体用法?C++ App::Initialize怎么用?C++ App::Initialize使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类App的用法示例。 https://vimsky.com/examples/detail/cpp-ex---App-Initialize-method.html
15.c+开发安卓app一般用什么工具?技术博客打开Android Studio,点击”Create New Project”创建一个新项目,选择安卓app开发工具“Native C++”模板,然后按照向导输入项目名称、存储路径、设备支持等信息。 3. 配置Gradle文件 配置项目的build.gradle文件,添加NDK插件和配置C++编译参数,例如: “` android { https://www.yimenapp.net/knowledge/blog-10874.html
16.libappc首页文档和下载应用容器的C++库OSCHINA干不动了伙计们,老板说每天导它个 5000 App 下载 libappc 是一个 C++ 库用来操作应用容器。该库的目标是提供一个灵活的工具包来实现 manifest 解析、创建,可嵌入式的发现、映像的创建提取和缓存,以及一个简单文件系统等等。 代码 Gitee 极速下载/libappc Star 0 | Fork 0 libappc 是一个 C++ 库用来https://www.oschina.net/p/libappc
17.鸿蒙应用NativeSDKC++(JNI)开发实战2.1 创建第一个HamonyOs Native C++项目 2.2 Native C++项目的文件分析 2.2.1 build.gradle 鸿蒙app项目配置 路径entry/build.gradle 配置编译的CPU对应的架构 arm64-v8a 配置C++项目编译用的cmake文件 src/main/cpp/CMakeLists.txt 配置C++ 编译参数-指定C++ 版本 -std=c++17 https://www.51cto.com/article/683198.html
18.推荐几款可以直接在手机上编程的app(包含JavaCPython等三.C4droid是一款C/C++程序集成开发环境,默认使用tcc为编译器,可以选择安装gcc插件(需要root) 选用gcc后,可以用sdl(简单直控媒体层库,需安装sdl plugin for c4droid)和qt(nokia官方开发库,需安装sdl plugin for c4droid)。也可以开发native android app(需安装sdl plugin for c4droid),就像google ndk一样。软件支持https://cloud.tencent.com/developer/article/2054590