关于开发鸿蒙APP的建议
发表于|更新于
|浏览量:
背景
实现
参考
文章作者: 今是昨非
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 今是昨非的博客!
相关推荐
2023-04-06
Xcode 创建项目默认文案修改
背景最近需要修改Xcode创建项目默认文案修改,就是每次创建最上面默认生成的注释说明。想起来之前看原Raywenderlich(现在是Kodeco)网站下载的代码时,每个已存在的文件里都有一长串自定义的说明,而且新建文件的时候也是带有同样的自定义的说明,有过疑惑,但是没有仔细研究,今天研究下怎么实现的: Kodeco文件自定义的说明如下: 实现通过Customize text macros和Text macros reference 可以看出,Xcode默认头部文字注释默认定义如下: 12345678// ___FILENAME___// ___PACKAGENAME___//// Created by ___FULLUSERNAME___ on ___DATE___.// ___COPYRIGHT___// 然后参考Customizing the file header comment and other text macros in Xcode 9 可以确定修改的步骤是: 创建IDETemplateMacros.plist 添加或修改Root对应的type为...
2020-07-12
iOS14适配一查找哪些SDK使用剪切板
iOS14适配一查找哪些SDK使用剪切板背景iOS14公测版发出之后,我们app出现了从后台唤起会弹出 读取剪切板的 提示,安全要求要赶紧查,全局搜索了我们APP,发现并没有读取剪切板的代码,比窦娥还冤,只能是第三方SDK的问题了,但是项目里集成了十几个第三方SDK,一个个排查删除,万一两个SDK都有,这个排列组合可能性就太多了。 脑壳疼了好几天,求助万能的V友和群友,然后找到了好的办法 步骤1: 用Xcode的Symbolic breakpoint,调试[UIPasteboard generalPasteboard],按照重现步骤,例如,我们APP是从后台唤起来会有这个提示,就打断点,然后走这个流程。 步骤2: 断点会停在调用到这个方法的地方,然后上下查看,如果还不能确认是哪个SDK的话,就单步向下走几步,然后就会出现调用方 步骤3:具体调用的类已经暴露了之后,怎么确定这是哪个SDK的呢?在工程目录中使用命令(来自群友的帮助):12find . -type f | grep -e ".framework" | xargs grep -s...
2021-08-02
iOS 启动时间优化
iOS 启动时间优化——相关背景iOS的启动时间优化有很多相关的文章,本来不打算写,但是总归是自己整理一遍印象更深刻。这里打算从原理-实践-面试相关三个方面来入手。首先要理解APP启动的原理,启动做了什么?然后针对启动过程中的事件哪些是开发可以进行优化的,去实践?最后则是,面试相关,与启动优化相关的面试有很多,笔者打算列举一下,分别涉及到启动的哪些问题。 启动原理启动分为冷启动和热启动。冷启动指的是APP进程被杀掉后,从零打开;热启动指的是,APP进入后台,再切换到前台唤起到过程。这里通常说的启动优化,指的是冷启动优化。(Ps: 这里某些版本会出现,刚杀掉的APP,立即再次打开,会直接闪退的问题,是系统的Bug)。 冷启动的过程分为main函数之前(pre-main)和main函数之后两个阶段。 pre-main阶段就如很多文章说的: pre-main阶段的过程分为dylibs loading ——> rebase/binding ——> ObjC setup ——> initializer四个部分。每个部分吧啦吧啦…但每次问到这个时候,死记硬背出来真的累人...
2022-09-27
Xcode 14新建项目 Pod init失败
Xcode 14新建项目 Pod init失败背景使用Xcode 14.0(14A309)新建了一个项目,然后运行Pod init,就报错,[Xcodeproj] Unknown object version (56). (RuntimeError)和can't modify frozen String (FrozenError)。 排查一开始看报错以为是cocoapods出问题了,最坏的打算是重装CocoaPods,但是先去搜索一下,看是否是其他原因导致的,或者有没有遇到同样错误的。 搜索can't modify frozen String (FrozenError),搜出来都是m1芯片怎么怎么的,但是我的电脑不是m1芯片的,所以不是这个问题。 搜can't modify frozen String (FrozenError),发现了pod init cause RuntimeError - [Xcodeproj] Unknown object version 和 RuntimeError - [Xcodeproj] Unknown object ...
2022-12-06
部网络货运信息交互系统位置信息插件SDK接入总结
背景APP接入部网络货运信息交互平台,这里记录一下接入想法和过程。 实现iOS SDK提供的方法,共有下面6个 init start send pause restart stop 看起来很简单,但是需要考虑SDK某个方法可能会失败,而且可能会有同一个司机多个托运单、或者同一托运单分段多个司机运输以及托运过程中换车、司机运输中换手机等场景,想要持续记录位置信息,完成完整的一个单据链路就不那么容易了。 而这些场景的处理,需要服务端的协助,但是服务端没有和部网络货运信息平台直接交互的接口,无法直接从货运信息平台读取状态和数据,所以处理就显得麻烦了。 我们的设想是,服务端兜底处理异常,所以,首先要让服务端知道当前处理的单据和步骤,故而需要一个记录接口,每次执行SDK的方法后,成功或失败都同步给服务端。 为了避免出现其他手机或其他用户或后台手动关闭单子的情况,需要服务端提供另一个查询是否有待结束运单的接口,同样,这个接口在每次执行SDK的方法后,都要调用,用于获取是否有待关闭的运单。 而还有一种情况,即用户开始运单后,APP被杀掉了再次打开时,这时候应该执行SDK的什么方法?或者...
2022-09-14
Xcode14编译失败修改
背景升级Xcode 14后,项目编译失败修改,共修改了两种编译错误: 一种是bundle code sign error,Xcode 14 needs selected Development Team for Pod Bundles 一种是Module compiled with Swift 5.6.1 cannot be imported by the Swift 5.7 compiler 其中第一种比较容易解决,第二种稍微麻烦点,解决方案如下: 解决Xcode 14 bundle code sign error这个的解决方案,直接Google,第一个stackoverflow的链接是Xcode 14 needs selected Development Team for Pod Bundles,这里面给出的解决方法是,在Podfile里增加下面代码,然后运行Pod install,设置Pod库的DEVELOPMENT_TEAM是开发者账号的team。 笔者有两个项目,其中一个是Swift为主,用下面的设置方法试了,可以解决。要注意的是如果项目有多个target,ta...