-
Flutter升级AGP&Gradle&Kotlin
AGP & Gradle & Kotlin 关系跨平台扫盲,不熟悉这几样的同学了解一下。非 Android 开发出身,有总结错误的地方,谢谢指正。 Android Studio,开发 Android 的 SDK,大家都不陌生,对应 iOS 开发中 Xcode; AGP(Android Gradle Plugin),用于扩展 Gradle 功能的插件,以支持 Android 项目的构建; Kotlin 开发语言,是一种与 Android 兼容的语言,类似 iOS 开发中...…
-
XCFramework 是用来干什么的
我们先看一个 Xcode 12 编译时的常见错误,GMObjC.framework 同时包含 x86_64 arm64 架构,在 Xcode 12 之前的版本,编译时并不会报错,但现在却报错如下:# 当在真机运行时,编译报错xx.xcodeproj Building for iOS, but the linked and embedded framework 'GMObjC.framework' was built for iOS + iOS Simulator.# 当在模拟器运行时,编译...…
-
GitHub Actions 监测网站在线
GitHub ActionsGitHub Actions 是 GitHub 的持续集成服务,如果接触过 Jenkins 或 Travis CI,那么对持续集成不会陌生。我们经常使用的功能,在 push 代码到仓库时,或定时抓取代码、自动打包、自动部署到服务器、自动化测试等,都属于持续集成类。GitHub Actions 功能更强大,不仅可以自己添加脚本,而且允许开发者分享自己的脚本到Actions 应用市场,其他人使用时直接引用即可。通过一个示例工作流程,对 GitHub Actions ...…
-
iOS 手机号一键登录
什么是一键登录iOS 无法直接获取当前设备手机号码(不包含使用私有 API),但电信服务运营商(移动/联通/电信等)是知道流量哪张手机卡消耗的,结合运营商的网关认证能力,就可以识别出当前使用的手机卡号码。通常说的场景是指一键登录和本机号码认证两个不同的功能,使用场景不一样,无需一起使用。一键登录使用场景:用户无需输入手机号码,SDK 会拉起授权页,用户确认授权后,SDK 会获取 token,服务端携带 token 到运营商网关获取用户当前上网使用的号码(eg. 服务端调用 GetMobil...…
-
开发者快速配置环境指南
前言开发配置环境或更新时,经常被网络搞得精疲力竭,403 Forbidden、443 Timeout,SSL_ERROR_SYSCALL等各种错误,不经历如小媳妇盼夫归般的等待进度条######## 9.1%慢慢爬行,clone至 99% 时突然error的绝望心情,是不会理解这种心情的 😤 。究其原因,是国外网络被屏蔽、速度慢,掉线等各种因素造成的;想学习时,可能花了一天配置环境,环境配置好早已没了心情。幸运的是国内高校和大公司都提供了镜像源,速度和稳定性都大幅度提升,国内直连,比...…
-
SonarQube 自动化扫描 iOS 项目
自动扫描概述SonarQube 是一款用于代码质量管理的开源工具,它主要用于管理源代码的质量。SonarQube 全自动化扫描,主要利用 Jenkins 检测 Git 代码更新,定时拉取代码,然后配合 oclint 及 SonarQube 实现自动化扫描展示。oclint 负责扫描项目,SonarQube 负责将扫描结果存储到数据库,并提供数据可视化。主要步骤 Jenkins 定时检测 Git 分支更新,并执行脚本(只有此操作使用 Jenkins,以下步骤使用脚本); 脚本检测本地是否...…
-
iOS 使用 SM2 SM4 加解密 SM2 签名验签及 SM3 摘要
前言 国密全家桶 SM2 算法原理 集成 OpenSSL 国密的 Objective-C 封装 参考前言对于开发人员,开发中加解密是经常用到的,常见的密码算法 MD5、SHA、AES、DES,RSA 等等,这些无一例外都是国外的加密算法。基于安全和宏观战略考虑,我国从 2010 年先后推出了 SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、ZUC(祖冲之密码算法)等密码算法,本文主要讨论 SM2 算法原理,iOS 端如何使用 SM2、SM4 加解密、SM2 签名验...…
-
iOS 如何准确显示角标
本地设置角标iOS 显示角标很容易,在 App 中任意地方调用如下方法都可设置,根据自己的需要设定即可。// 显示角标,传入待显示角标的数字[[UIApplication sharedApplication] setApplicationIconBadgeNumber:(int)value];// 清除角标,传入 0 即可[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 不精确显示角标普通 App 对角...…
-
自建局域网 OTA 服务器
第一步 编辑前的准备 第二步 配置Http服务 第三步 生成自签名证书 第四步 配置HTTPS服务 第五步 放置资源文件 参考链接第一步 编辑前的准备1.1 Mac自带 Apache 服务器Mac 自带 Apache 服务器,我们在终端输入 sudo apachectl -k start 打开网页输入 localhost,发现网页会显示如下:It works!Apache 服务器启动成功。1.2 修改系统文件前先备份例如需要修改 /etc/apache2 文件夹下 http....…
-
记一些印象深刻的 Bug
目录一、iOS 加载超大尺寸图片 Crash 的调研及解决方案二、夏令时引起某些时间段转换为 NSDate 为 nil 问题的解决方案三、日期格式 YYYY-MM-dd 和 yyyy-MM-dd 区别四、iOS 局部 BOOL 变量随机值五、iPhone 用户名包含特殊符号引起的后台 Crash六、参考链接 一、iOS 加载超大尺寸图片 Crash 的调研及解决方案 1.1、问题描述前段时间遇到一个工单,客户反馈,只要进入订单列表界面 1~2 秒,客户端就会 Crash,订单列表界面示意如...…
-
cocoapods 发布库
安装 cocoapods首次安装 cocoapods 建议升级 Ruby,防止 Ruby 版本过低出现的一些错误。# 查看当前 Ruby 版本ruby -v# 联网升级为 Ruby 最新稳定版本,需要几分钟时间curl -L get.rvm.io | bash -s stable # 激活环境变量source ~/.bashrcsource ~/.bash_profile# 查看升级后的 Ruby 版本ruby -v更换安装源,Ruby 官方库 https://rubygems.org/ ...…
-
宏与内联函数
宏与内联函数区别在 iOS 开发中宏似乎是不可缺少的,尤其是替换一些重复文本字段时,简单实用。那内联函数呢,如果一些简单却需要频繁调用的函数,不断地有函数入栈,即函数栈,会造成栈空间或栈内存的大量消耗。C++ 语言为了解决这个问题,特别的引入了 inline 修饰符,表示为内联函数,内联扩展是用来消除函数调用时的时间开销。宏定义和内联函数有什么区别?对比一下。 内联函数在编译时展开,宏在预编译时展开; 内联函数直接嵌入到目标代码中,宏是简单的做文本替换; 内联函数有类型检测、语法判断...…
-
ZipperDown 漏洞修复
ZipperDown漏洞是由盘古实验室发现的,该漏洞是盘古团队针对不同客户的iOS应用安全审计的过程中发现的,大约有10%的iOS应用会受到此漏洞的影响。类似解压等通用功能的漏洞,一个平台爆出了漏洞,其他平台往往也受到牵连,不久前Android平台上的unZip解压文件漏洞,和这个漏洞几乎是完全一样,只是平台和第三方解压库不同而已。危害利用此漏洞可以做很多事情,例如实现目录遍历攻击和App沙盒目录中任意文件覆盖风险,影响究竟有多大,取决于具体App。例如,如果集成了热修复,且未做相应的安全...…
-
iOS 组件化方案选型
一、组件化概念 1.1、项目目前现状 1.2、解决方案 1.3、正确的组件化解耦 二、组件化主流方案 2.1、url-block (代表:蘑菇街组件化方案MGJRouter) 2.2、Protocol方案(代表:阿里的BeeHive) 2.3、Target-Action方案(casatwy组件化方案) 三、组件化方案对比 3.1、url-block方式 3...…
-
Python 虚拟环境配置
总结一些使用 Python 开发过程过程中的环境配置,常用操作,常见错误处理等等。虚拟环境搭建(virtualenv)Python 开发过程中,经常需要安装各种依赖库,Python 的第三方包成千上万,在一个 Python 环境下开发时间越久、安装依赖越多,就越容易出现依赖包冲突的问题。为了解决这个问题,开发者们开发出了 virtualenv,可以搭建虚拟且独立的 Python 环境。virtualenv 为每个项目提供了隔离的 Python 运行环境,解决了不同项目间多版本的冲突问题。而...…
-
iOS 快速添加新功能提示
iOS快速添加新功能提示当App迭代版本,增加新功能时,往往会在用户点进相应界面的时候,高亮显示新功能,并配上相应的图片文字吸引用户注意。例如XX功能更新了,办理什么业务再也不用排队了;通过XX新功能可以直接查询什么功能了…,如图简易提示:NOTE: 上图提示简易,实际需求由UI设计漂亮醒目的图片文字(点击上面的小图片可查看高清大图)。方法思考通常比较懒的做法,是由UI做出全屏的新功能提示图片,由开发人员控制进入相应界面时,全屏展示相应提示图片。这样做的缺点主要有2个: 我们全屏添加到视...…
-
iOS 获取硬件信息
iOS 获取硬件信息 iOS 系统总以保护用户隐私标榜,从禁止获取 Mac 地址,禁止获取 UDID,禁止获取手机号码,禁止获取IMEI等等。。。,iOS 开发人员总是在苹果限制的道路上斗智斗勇! 下表中不包括用私有API获取硬件信息,因为使用私有API会被禁止上架。 信息类型 类型说明 能否获取 示例 备注 设备型号 具体那一款手机 支持 iPhone,iPa...…
-
LLDB 常用命令总结
LLDB 是 Xcode 的默认调试器,支持在桌面和 iOS 设备和模拟器上调试 C,Objective-C 和 C ++。此文总结常用的一些 LLDB 命令。查看命令 print && po && v && frame variable查看打印变量的值可以使用print、po、v 和 frame variable 命令。如果打印的是简单类型,print、v 、frame variable 命令会列出简单类型的类型和值,po 只会打印值;如果...…
-
iOS 图像识别
前言目前的计算机图像识别,透过现象看本质,主要分为两大类: 基于规则运算的图像识别,例如颜色形状等特征匹配。 基于统计的图像识别,例如机器学习自动提取特征,并通过级联多特征匹配。 场景:特征匹配方法适合固定的场景或物体识别,机器学习方法适合大量具有共同特征的场景或物体识别。 优劣:无论从识别率,准确度,还是适应多变场景来讲,机器学习都是优于特征匹配方法的,前提你有大量的数据来训练分类器。如果是仅仅是识别特定场景、物体或者形状,使用模板匹配方法更简单更易于实现。本文目标,实现在iOS...…
-
iOS 集成 OpenCV
CocoaPods方式集成编辑 Podfile 文件,添加 pod 'OpenCV2',保存执行 pod install 即可。也许你会问,为什么不是 pod 'OpenCV'?OpenCV 版本于2006年面世,主要基于C语言;2009年发布 OpenCV2,主要基于C++,目前最新版本是基于 OpenCV2 的。使用 CocoaPods 集成 OpenCV1.0 有头文件重复等问题,但集成 OpenCV2 是没有问题了,所以推荐使用 CocoaPods 集成 OpenCV2。改为 Ob...…