iOS开发
TianBL2017
做一个能解决问题的人
展开
-
解决越狱iPhone USB 连接ssh报错 MuxError: Connect failed: error 3的问题
现象:Mac安装usbmuxd之后,越狱iPhone USB连接Mac,打开usbmuxd-1.0.8文件夹,执行tcprelay.py连接:报错:解决方法:1.检查设备是否真正的越狱,如非完美越狱重启设备后设备将恢复未越狱状态,如果处于非越狱状态,要重新进行越狱。2.如果设备已经越狱,检查openssh的安装状态,按需重新安装。重新连接后成功!...原创 2021-03-21 21:46:47 · 3219 阅读 · 0 评论 -
iOS-archive错误说缺少描述文件但是build正常的原因
只为debug模式配置了描述文件,点开All看看,是不是缺!原创 2020-09-07 12:09:53 · 504 阅读 · 0 评论 -
解决Xcode 真机调试报错“Unable to install XXXXXXXX Domain: com.apple.dt.MobileDeviceErrorDomain Code: -40262“
Unable to install XXXXXXXXDomain: com.apple.dt.MobileDeviceErrorDomainCode: -402620395--A valid provisioning profile for this executable was not found.Domain: com.apple.dt.MobileDeviceErrorDomainCode: -402620395User Info: { DVTRadarComponentKey.原创 2020-08-31 19:36:20 · 21546 阅读 · 0 评论 -
GCD笔记之->Dispatch Group->0
如果想让追加到派发队列中的多个处理全部结束后执行一个操作,在只使用一个 serical Dispatch Queue时,这种情况比较好处理,但是使用Concurrent Dispatch Queue或者同时使用多个serical Dispatch Queue时源代码就非常复杂。我们可以想一下生活中的例子:例如周末,家中有三个serical Dispatch Queue:1.微波炉按照步骤加热食物2.洗碗机按照步骤洗涤碗筷3.自己在按照步骤炒菜。这三个serical Dispatch原创 2020-08-23 12:19:28 · 175 阅读 · 0 评论 -
使用dispatch_after在一段时间后执行处理
想在指定时间后执行处理的情况,可以用dispatch_after函数实现。我们写一段在3秒后将指定的block追加到Main Dispatch Queue的代码: dispatch_time_t time=dispatch_time(DISPATCH_TIME_NOW, 3ull*NSEC_PER_SEC); dispatch_after(time, dispatch_get_main_queue(), ^{ NSLog(@"3 seconds"); });注意原创 2020-08-23 11:37:04 · 1090 阅读 · 0 评论 -
GCD笔记-dispatch_set_target_queue之变更派发队列的优先级
dispatch_queue_create函数生成的派发队列不管是Serial Dispatch queue还是Concurrent Dispatch Queue都使用与默认优先级Global Dispatch Queue相同执行优先级的线程。我们可以通过dispatch_set_target_queue函数变更生成的派发队列的优先级,代码如下:#define TEST_QUEUE @"com.test.queue0"#define TEST_QUEUE1 @"com.test.原创 2020-08-23 00:14:26 · 446 阅读 · 0 评论 -
GCD笔记:Main Dispatch Queue和Global Dispatch Queue
我们可以获取系统标准提供的派发队列,比如Main Dispatch Queue和Global Dispatch QueueMain Dispatch:是在主线程中执行的派发队列,因为主线程只有1个,所以MainDispatch Queue 是 Serial Dispatch Queue。追加到Main Dispatch Queue的处理在主线程的RunLoop中执行。由于在主线程中执行,因此要将用户界面更新等一些必须在主线程中执行的处理追加到Main Dispatch Queue中使用.原创 2020-08-22 20:46:24 · 744 阅读 · 0 评论 -
Dispatch queue的释放
在iOS6.0后 ,GCD对象使用ARC 的管理,ARC程序中不再需要调用dispatch_release来释放GCD对象,原创 2020-08-22 19:57:31 · 978 阅读 · 0 评论 -
GCD笔记2->派发队列的创建->1(生成Concurrent Dispatch Queue)
创建Serial Dispatch Queue的生成个数应当仅限所必须的数量,例如更新数据库时1个表生成1个Serial Dispatch Queue,更新文件时1个文件或是可以分割的1个文件块生成1个Serial Dispatch Queue。但是绝对不能大量生成Serial Dispatch Queue。当想并行执行不发生数据竞争等问题的处理时,使用Concurrent Dispatch Queue,而且对于Concurrent Dispatch Queue来说不管生成多少,由于XNU内核只原创 2020-08-22 18:53:28 · 208 阅读 · 0 评论 -
GCD笔记2->派发队列的创建->0
第一种方法:通过GCD的API生成派发队列通过dispatch_queue_create 函数可以生成派发队列,以下源代码生成了serial Dispatch Queue#define TEST_QUEUE @"com.test.queue0"dispatch_queue_t testQueue=dispatch_queue_create(TEST_QUEUE,NULL); dispatch_async(testQueue, ^(){ NSLog(@"0");原创 2020-08-22 15:57:17 · 166 阅读 · 0 评论 -
GCD笔记1->GCD的API
苹果官方对gcd的说明:Dispatch Queue开发者要做的只是定义想执行的任务并追加到适当的dispatch queue中。这句话用源代码表示如下: dispatch_async(queue, ^{ //想执行的任务 });该源代码使用block语法,定义想执行的任务,通过dispatch_async函数追加赋值在变量queue的dispatch queue(派发队列)中。仅这样就可以指定block在另一线程中执行。那么Dispatch Queue是原创 2020-08-22 15:12:19 · 130 阅读 · 0 评论 -
Grand Central Dispatch-(GCD)笔记0
Grand Central Dispatch-(GCD)是异步执行的技术之一。一般将应用程序中记述的线程管理用的代码在系统级中实现。开发者只需要自定义想执行的任务并追加到适当的Dispatch Queue中,GCD就能生成必要的线程并计划执行任务,这样就比以前的线程更有效率。dispatch_async(dispatch_queue_t queue, dispatch_block_t block);调用的伪代码如下:dispatch_async(queue, ^(){原创 2020-08-22 11:57:33 · 89 阅读 · 0 评论 -
解决“an existing transporter instance is currently uploading this package”
提交ipa到AppStore报错:Application Loader: “Cannot proceed with delivery: an existing transporter instance is currently uploading this package”请参考:https://stackoverflow.com/questions/3870082/application-loader-cannot-proceed-with-delivery-an-existing-trans转载 2020-06-22 14:11:15 · 568 阅读 · 0 评论 -
处理 “App Store Connect Operation ERROR ITMS-90771”
提交appstore 问题如下:发现是Background Modes的问题,勾选了Background processing:去掉,重新构建,上传,就好了。原创 2020-06-22 14:04:29 · 1430 阅读 · 0 评论 -
解决iOS 13的设备不能设置代理的问题
使用 charles,结果发现不能保存设置http 代理为手动,一点击存储就返回,代理状态重置为关闭。解决方案:把那个WiFi忽略掉,重新进入,就好啦原创 2020-06-10 22:33:30 · 2919 阅读 · 1 评论 -
iOS开发解决引入库文件导致Unknown type name NSString 问题
引入一个静态库,然后报错一片:原因:第三方静态库可能是C OC C++文件混编,而pch里面自加的头文件是全局性的,当在C文件或者C++文件遇到import时就会出问题,因此需要与ObjC分开编译解决方法:找到pch文件,如下图所示将<Foundation/Foundation.h>和<UIKit/UIKit.h>包裹住即可解决#ifdef __OBJC__#import <Foundation/Foundation.h>#import原创 2020-06-10 00:02:00 · 851 阅读 · 0 评论 -
解决iOS远程构建报错: Found an unexpected Mach-O header code的问题
iOS远程构建,claen成功,archive成功但是却在导出ipa文件时报错:exportArchive: Found an unexpected Mach-O header code这就很奇怪了啊,慢慢分析。首先,错误不在代码层面,因为如果代码有错不会archive成功;错也不在描述文件上,因为描述文件报错压根archive不了,那就是创建ipa出错,那错在哪了?ipa包除了二进制文件还有资源文件,我们看一下资源文件的列表又啥异常:在列表中,我发现了一个库文件,这个库文.原创 2020-06-09 23:47:10 · 581 阅读 · 0 评论 -
解决使用tfs的Xcode CLI构建工具在更新描述文件后构建iOS工程失败的问题
项目的工程代码置于远程服务器上,使用微软的tfs提供的Xcode CLI构建工具实现远程构建,最近项目的描述文件过期了,相关人员更换了描述文件后依旧报错过期,针对这一问题,其表示自己不会,无法提供帮助,投产在即,这一问题必须解决,只能靠自己了:现象1.拉取远程服务端的代码到本地,使用Xcode打开,观察其手动配置的描述文件,发现已显示过期,远程调用Xcode CLI 显示调用失败,错误提示描述文件过期。现象2.拉取远程服务端的代码到本地,使用Xcode打开,将手动配置描述文件的位置置空,再次提交,远原创 2020-06-07 10:58:44 · 937 阅读 · 0 评论 -
解决iOS工程因GLKit导致mPaaS获取模块信息失败的问题
今日欲使用mPaaS插件调整工程的一些配置,出现了问题:这是啥玩意???百度一下,发现均不能直接套用其它解决方案,只能一点点看报错信息了;这是啥玩意,依旧没见过?既然提到了Xcodeproj,那就看看其内容吧;果然,在其中发现了GLKit framework相关的内容后有一条,"platformFilter=>ios"的东西,而其他framework无,于是先去掉...原创 2020-05-06 14:10:57 · 505 阅读 · 0 评论 -
ionic工程报错->Current working directory is not a Cordova-based project的解决
构建ionic工程出错:奇怪了哎!代码没有动啊!于是重新拉取一份代码,构建发现可以的,于是用比较工具查看原来是误删了工程目录下的www文件夹导致不能识别:把它恢复就好啦。...原创 2020-05-03 15:13:05 · 6364 阅读 · 1 评论 -
ionic工程解决因Xcode CommandLineTools未配置导致npm install -g ios-deploy失败的问题
基于ionic的工程添加平台突然报错,现象如下图:首先,按照提示处理一下,执行脚本(别忘了加sudo)sudo npm install -g ios-deploy还是不行!,报错如下:粗略的百度一下,提示需要用:sudo npm install -g ios-deploy --unsafe-perm=true于是输入:sudo npm install -g io...原创 2020-05-03 10:55:01 · 292 阅读 · 0 评论 -
使用SmartPush集成消息推送(VoIP)
使用Xcode 11 不集成callKit 直接在iOS 13的设备上调试voip推送会闪退,因此还是用iOS 13以下的设备比较好;首先,下载一个SmartPush;运行:截图如下:左侧是SmartPush的运行图:我们要填写3个重要的信息:1.使用的推送证书(打开开发者账号,下载需要的推送证书)2.DeviceToken(设备的识别码,通过代码获取)3.推送的内容(...原创 2020-04-19 23:15:22 · 1084 阅读 · 0 评论 -
解决iOS加固中报错"/Library/Developer/CommandLineTools' is a command line tools instance"的问题
iOS加固又出了麻烦;因开发需要电脑上装了俩Xcode(一个Xcode11,另一个Xcode10.2);然后使用某加固平台加固,报错"/Library/Developer/CommandLineTools' is a command line tools instance"神奇啊!还是分析问题,此加固平台需要编译,但是并非调用Xcode图形化界面,而是命令行工具;因此,就是因为...原创 2020-03-20 18:18:53 · 3689 阅读 · 0 评论 -
mPaaS iOS框架笔记5->管理微应用之参数传递
根据阿里的文档:“将业务分割为微应用和服务后,不仅实现了不同模块之间的低耦合、高内聚,同时可以通过 mPaaS iOS 框架提供的框架上下文,进行微应用与服务的管理,包括微应用与微应用、服务与服务、微应用与服务之间的跳转和数据传递等”。当我们调用一个微应用的时候,代码如下:[DTContextGet() startApplication:@"66600001" params:...原创 2020-03-03 11:36:01 · 310 阅读 · 0 评论 -
mPaaS iOS框架笔记4->从服务看反射与控制反转
根据官方文档“在基于 mPaaS iOS 框架开发应用的过程中,没有 UI 界面且通用的功能,可以设置为服务(如登录服务),在整个 App 运行期可以方便地被其他微应用或服务获取。添加一个服务,您需要添加服务模板代码,并注册服务”所有的服务都是协议,由遵循改协议的类提供服务内方法的实现;所有定义服务的协议都继承自<DTService>我们来看一下它得源代码:...原创 2020-03-02 21:59:46 · 193 阅读 · 0 评论 -
mPaaS iOS框架笔记3->从微应用看委托模式
我们来看一下阿里提供的参考文档中的类图:参考这个UML图,我们可以看到;微应用的委托协议与微应用的类是聚合关系;我们根据这个图,来对委托模式进行一次梳理和理解:我们来看一下,DTMicroApplication类和DTMicroApplicationDelegate协议,个人理解如下:1.DTMicroApplicationDelegate协议中的方法与DTMicroApp...原创 2020-03-02 13:58:27 · 297 阅读 · 0 评论 -
mPaaS iOS框架笔记2->微应用和服务(以MPH5Demo_plugin为例)
由打断点调试,我们可以看到这些模块的加载顺序(如图所示):我们分析一下No.1的MPaaSInterface+MPH5Demo_plugin.h,看一下源代码://// MPaaSInterface+MPH5Demo_plugin.h// MPH5Demo_plugin//// Created by vivi.yw on 2019/03/28.// Copyrigh...原创 2020-03-02 11:00:58 · 829 阅读 · 0 评论 -
mPaaS iOS框架笔记1->mPaaS APMobileFramework (以MPH5Demo_plugin为例)
我们来分析一下 MPaaS这个 group里面重要的文件:参考官方文档:mpaas_sdk.config:当前工程添加的模块信息,包括版本、添加时间、资源文件等,由 mPaaS 插件自动维护,不得手动修改。mPaaSDemo-mPaaS-Headers.h:当前工程依赖的 mPaaS 模块的头文件,由 mPaaS 插件自动维护,不得手动修改。mPaaSDemo-Pref...原创 2020-03-02 00:06:05 · 920 阅读 · 0 评论 -
mPaaS iOS框架笔记0->mPaaS iOS 框架初探(以MPH5Demo_plugin为例)
1. mPaaS iOS 框架介绍mPaaS iOS 框架源自支付宝客户端的开发框架,基于 Framework 的设计思想: 1.将业务隔离成相对独立的模块 2.着力追求模块与模块之间高內聚、低耦合。 mPaaS iOS 框架直接接管应用的生命周期负责:1.整个应用启动托管、2.应用生命周期管理、处理与分发3.UIApplication 的代理事件、统一...原创 2020-03-01 19:58:40 · 1322 阅读 · 2 评论 -
解决某iOS加固平台客户端突然没反应的问题
接入的iOS加固平台客户端突然不能用了,现象是:1.点击登陆按钮之后没有反应。2.使用抓包工具查看,请求和返回的报文都很正常。3.其它同事的客户端正常。4.拿一个之前没有按过客户端的新电脑,安装客户端正常。确认是我的电脑的问题,于是重新安装客户端,但是还是不正常;真是奇葩!在打开客户端时,我发现即使是卸载之后重新安装,之前的一些配置(如记住密码的设置)都会保留,卸载...原创 2020-01-02 09:43:24 · 233 阅读 · 0 评论 -
解决某加固平台不能成功编译ionic工程的问题
因项目需要,将ionic工程接入某加固平台,发现加固报错,但是直接建立的原生工程就不会有这个问题,我们观察一下项目结构:这个项目有两个xcodeproj组成,编译时会先编译CordovaLib.xcodeproj,将编译好的静态库文件(libCordova.a)文件引入到tabs.proj中,经过多次对比试验;不成功问题的症结在于双xcodeproj,因此,我们可以将双xcodeproj改...原创 2019-11-21 10:41:55 · 198 阅读 · 0 评论 -
真机Build iOS项目出现“XXX的 iPhone has denied the launch request”的报错的解决
iOS工程真机运行报错:真机并未锁屏或者设置为不信任次计算机,但是模拟器可以正常运行:问题根源在于:手动配置描述文件时,描述文件选错了!在真机上build应该选择开发用描述文件,不是发布类描述文件!描述文件选择正确后,调试运行即正常!...原创 2019-11-18 15:10:13 · 607 阅读 · 0 评论 -
知识积累->目标文件里有什么(2)->解析一段代码
编译一段具有代表性的代码:int printf(const char *format,...);int global_init_var=84;int global_uninit_var;void func1(int i){ printf("%d\n",i);}int main(void) { static int static_var=85; int sta...原创 2019-11-03 18:08:18 · 115 阅读 · 0 评论 -
基于ionic+Cordova框架的iOSApp的构建过程简介
1.编译准备2.编译Cordova源码,形成一个静态库文件:CordovaLib.a3.编译工程的源代码(包括Cordova插件),输出大量的.o文件4.链接:将Cordova插件里的Lib(包括framework里的静态库)以及第二步形成的CordovaLib.a以及第三步形成的.o文件们链接在一起并形成可执行文件。5.签名,认证。...原创 2019-10-28 22:28:41 · 196 阅读 · 0 评论 -
iOS开发之解决奇葩报错之突然找不到framework
项目集成某第三方framework,一直以来一切正常,今天突然接到求助:打包构件时链接报错!情景如下图:开始以为是EmbededBinaries没有添加,但是已经添加了!这个问题就很奇怪了!把这个framework删掉,再打包!问题依旧!即这个EmbededBinaries添加与否没有区别!于是打开这个framework仔细看!发现了问题所在!这个...原创 2019-10-28 15:28:28 · 2303 阅读 · 0 评论 -
知识积累之:iOS里的动态库和静态库(0)
最近在自己封装openssl库的基础上做开发,但是发现与现有的一些模块依赖的静态库有冲突,最后使用封装动态库(framework)解决了这一问题,现将学到的知识记录下来。简介: 动态库形式:.dylib和.framework 静态库形式:.a和.framework framework为什么既是静态库又是动态库? 系统的.framework是动态库,我们自己建...转载 2019-10-26 19:42:02 · 143 阅读 · 0 评论 -
ionic+Cordova工程iOS平台解决需要引入大量头文件的情况
ionic+Cordova工程中,需要在Cordova插件的配置文件中引入所需的头文件。但是,在引入一些第三方库(例如openssl)的情况下,调用所需的头文件可能非常多,将其写在配置文件中工作量较大,如下图所示:这种情况,我们可以将存储头文件的文件夹复制到项目中,通过调整编译时的“Header Search Paths”来将其链接到项目中;使得项目可以找到相关的头文件:步骤如下图...原创 2019-10-21 13:54:07 · 166 阅读 · 0 评论 -
iOS如何编译OpenSSL静态库(openssl版本:1.1.1b)
第一步:下载一份OpenSSL,网址:https://www.openssl.org/source/第二步:解压文件第三步:进入文件目录,创建所需要的的库的路径:# 制定CPU的架构(armv7,arm64和整合后的库)$ mkdir openssl_arm64 openssl_armv7 openssl_lib第四步:进入文件目录,创建所需要的的库的路径#--pre...原创 2019-10-15 22:38:51 · 1817 阅读 · 0 评论