创建子工程很简单: 1 假设你已经有了自己的工程demo.xcodeproj,首先我们需要创建一个子工程,(File->new->project),我们要选择静态库。如图 ? 点击下一步,给子工程起名字:subProject ? 点击下一步:选择Add to自己的工程 ? 到此,第一步就结束了,我们创建了一个子工程,而且也添加到了自己的工程里面,但是,这样在自己工程中还是无法引用子工程的类。我们还需要设置一下自己工程的环境变量。 5 如果存在category的时候,在demo工程Other Linker Flags里面添加编译的命令: 注意:在ios5以及以上版本中,引入别的工程(如上)或者静态库, 并且StoryBoards 上面的意思是说 对于64位操作系统或者ios系统,-Objc存在一个bug,就是只包含categories ,而没有任何class的静态库,是不会被加载进来。
公司的项目,临上线之前做了一下iOS10的适配,发现一大堆的坑,瞬间觉得苹果不友好了。 一、证书问题 打开xcode8.0时编译运行时出现下面问题: ? substringToIndex:1] intValue]>=10) 它会永远返回NO,substringToIndex:1在iOS 10 会被检测成iOS 1了,应该使用下面的这些方法: Objective-C 1144.17,在iOS 10(Xcode 8)中,苹果补充了缺少的数字,设置有未来的版本. 不过,WWDC 16 中,Apple 表示将继续在 iOS 10 和 macOS 10.12 里收紧对普通 HTTP 的访问限制。 九、字体变化 苹果的默认字体会随着iOS系统版本的不同而不同,iOS10中字体变大了。导致了原来的显示有问题,会造成...的出现。暂时没有好的解决办法,需要自己在一个个适配一下!
如果你对iOS逆向工程有所了解,那么你对Tweak并不陌生。 安装的具体过程如下所示: image.png 2.安装ldid sudo brew install ldid 在Theos开发插件中,iOS文件的签名是使用ldid工具来完成的,也就是说ldid取代了 在选择模板后,紧接着会让你做一系列的操作,这一些列的操作和Xcode新建iOS工程的步骤类似。 3.编译打包前的准备工作 export SDKVERSION=9.3 export THEOS_DEVICE_IP=ios_device_ip 接着我们要做一些编译打包前的准备工作,SDKVERSION 因为我本地的Xcode中是iOS9.3的SDK,所以下方指定的SDKVESION是9.3。 ?
本篇文章是我在学习逆向工程时整理的逆向工程工具集 只作为记录使用 并不是详细的教程 阅读本篇教程需要你有一定逆向工程知识 一,Cycript 介绍 iOS运行时工具 可hook运行时进程 并提供了以下能力 New password: Retype new password: root# 三,theos iOS越狱程序开发框架 简化了编写越狱程序的流程 四,lldb + debugserver iOS远程调试APP 1、将debug server文件从手机拷贝到mac scp root@192.168.31.154:/Developer/usr/bin/debugserver ~/ 2,瘦身 server : #lldb 执行lldb命令 #process connect connect://iOSIP:端口(该端口需要和debug server指定的端口一致) 五,dyld_decache 提取iOS 1.iOS-Runtime-Headers: https://github.com/nst/iOS-Runtime-Headers 2.OSXRuntimeBrowser: https://github.com
ios15适配 1、UITabar、NaBar新增scrollEdgeAppearance,来描述滚动视图滚动到bar边缘时的外观,即使没有滚动视图也需要去指定scrollEdgeAppearance, ATTrackingManager请求权限不弹框 4、iOS15终于迎来了UIButton的这个改动 ios14适配 1、更改了cell布局视图,之前将视图加载在cell上,将会出现contentView 3、IDFA必须要用户用户授权处理,否则获取不到IDFA 4、 UIPageControl的变化 具体参考iOS 14 UIPageControl对比、升级与适配 ios13适配 -1、 iOS 13 ios11适配相关 ios10适配 1、通知统一使用UserNotifications.framework框架 2、UICollectionViewCell的的优化,新增加Pre-Fetching预加载机制 3、苹果加强了对隐私数据的保护,要对隐私数据权限做一个适配,iOS10调用相机,访问通讯录,访问相册等都要在info.plist中加入权限访问描述,不然之前你们的项目涉及到这些权限的地方就会直接crash
砸壳"在iOS逆向工程中是经常做的一件事情,,因为从AppStore直接下载安装的App是加壳的,其实就是经过加密的,这个“砸壳”的过程就是一个解密的过程。 当然,在iOS9.2.1上的越狱设备执行上述命令会报错,可能是目前Cycript这个强大的工具还不支持iOS9.2吧。所以我是在iOS7.2上做的该实验。
一、iOS12(Xcode10) 1.1、升级Xcode10后项目报错 不允许多个info.plist Xcode10是默认选中的最新的New Build System(Default),在这个编译系统的环境下 使用prefs:root=bundleID ,bundleID是你第三方应用工程的唯一ID [x] iOS系统版本 >= iOS10,支持跳转到自己应用设置,不支持跳转到系统设置 3.5、字体变化 苹果的默认字体会随着 iOS系统版本的不同而不同,iOS10中字体变大了。 iOS 10相对之前的通知来说更加好用易于管理,并且进行了大规模优化,对于开发者来说是一件好事。 iOS 10开始对于权限问题进行了优化,申请权限就比较简单了(本地与远程通知集成在一个方法中)。 四、iOS9(Xcode7) 4.1、Bitcode Xcode7 默认启用 Bitcode,但是如果我们用到的第三方库编译时还没启用 Bitcode,主工程就会编译不过。
如果新建工程的话,会有很多麻烦的问题: 1.虚拟文件夹无法拖拽到新的工程,导致文件杂乱的混在一起难以按模块区分(如果都是实体文件夹可忽略) 2.plis文件需要自己慢慢配置,容易遗漏 3.第三方的link 库需要自己一个一个添加,很多设置需要修改,容易遗漏 4.资源文件需要自己拖拽 新建项目虽然勉强完成修改工程名的过程,但是很多细节容易遗漏,导致后面开发过程中出现Bug很是费事,于是就自己参考网上资料,自己在现有的工程上面直接修改名字 ,步骤如下: 1.修改工程名字 .打开工程 点击工程名称 回车 直接修改 .此时会弹出一个对话框,点击Rename 2. 修改scheme名称 .点击Xcode上面的工具栏Product->Sechme->Edit Sechme .弹出对话框 会车直接修改 修改完成之后 点击Close 3.修改目录名称 .点击工程内需要修改名字的目录
workspace中主工程文件GovCn目录没了 吓得我赶紧打开主GovCn.xcodeproj文件,结果。。。 暂停Bug 知识点:Xcode的工程文件是 工程名.xcodeproj,而它其实是个package目录,通过显示包内容,可以查看到它内部主要有project.pbxproj 和 xcuserdata。 而project.pbxproj 是工程描述文件,描述了工程里的源码文件、schema设置等。 ------- 摘自iOS 开发 xcode中的project.pbxproj--深入剖析 容我冷静一下 冷静想了一下,应该是因为我俩同时提交了图片,工程 GovCn.xcodeproj 文件冲突了 打开之后,工程里关于图片的配置信息都没了,但图片源文件还存在源目录下,重新导入一下就OK了。
一、iOS 11 scrollview,tabelview出现页面偏移问题 image.png 注:iOS11后导航栏和标签栏半透明时才有这样的偏移问题,不透明或者隐藏则没有; 若没有导航栏或标签栏 ,偏移量为安全顶部距离、安全底部距离 if #available(iOS 11.0, *) { tableView.contentInsetAdjustmentBehavior https://www.jianshu.com/p/b42030a37953 https://blog.csdn.net/weixin_34037977/article/details/91634236 二、iOS 之后sectionHeaderHeight和sectionFooterHeight默认是自动计算高度的,如果想让高度生效,"set to 0 to disable": @available(iOS (设置为0即自动计算高度,设置为非0数值,iOS13.2以下系统顶部有空白,iOS13.2及以上系统顶部无留白)
整个文件会被引入到iOS工程的各个*.xcconfig配置文件中。这些配置信息,在xcode runscript中引入的flutter编译嵌入脚本xcode_backend.sh中会使用到。 image.png 混编方案 方案大概的解决方法就是: 完全脱离Flutter环境:(图中实线流程部分) 利用脚本将所有的依赖编译结果从Flutter工程中剥离出来,放到iOS工程目录下。 直接依赖Flutter工程:(图中虚线流程部分) 直接依赖时,pod对Flutter的依赖都直接指向了Flutter工程;另外就是xcode_backend.sh会去重新编译Flutter代码,Flutter 方案存在的问题 直接依赖Flutter工程的方式,这个大同小异,都是直接或间接指向Flutter工程。这里重点讨论完全脱离Flutter环境的方案。 具体操作: 首先,每次需要构建纯粹Native工程前自动完成Flutter工程对应的远程库的编译发布工作,整个过程不需要人工干预。
我们在开发 iOS 程序的时候,往往都会根据需要导入很多的第三方框架,但是不同的框架完成的功能不同,所以导入的方式也不同,并不是把它直接拖进工程中就完事了,我们需要配置各种环境,链接各种库文件等等。 有的时候我们并不能一个不漏的完成导入,而一旦出了问题,尤其是那些需要框架比较多的工程 (比如早期的百度地图框架),将很难解决,而且,如果遇到了第三方库升级,更新了方法那么我们还需要把之前的旧版本删掉,再重复一下前面的工作 CocoaPods 就会自动将这些第三方开源库的源码下载下来,并且为我的工程设置好相应的系统依赖和编译参数,不管是导入还是更新或者移除,都是一句命令就搞定的。 ,这里建议直接右键你工程中.xcodeproj 文件选择在终端中打开,然后 在终端中输入命令 cd .. 以后打卡工程就直接打开这个文件就好啦 其中 podfile 文件中显示了我们这个工程中所以集成的第三方, 想修改版本的话就把后面的版本号改成你所需要的版本号就好,想删除的话就把这行删掉,想添加的话就用第五部的搜索命令去搜索然后同样把搜索结果中以
运行环境 DevEco Studio:4.0Release OpenHarmony SDK API10 开发板:润和DAYU200 目前我们能够看到的是鸿蒙已经到API10,甚至今天在看OpenHarmony 这个时候,我们最起码要将API 9工程转换为API 10工程。然后再慢慢的迁移到未来的11上。 接下来我们说一下如何迁移。 1.将工程级build-profile.json5文件中compileSdkVersion和compatibleSdkVersion字段从app下迁移到当前选中的product中。 , "compatibleSdkVersion": 10, "targetSdkVersion": 10, "runtimeOS": "OpenHarmony "targetSdkVersion": 10, //指定OpenHarmony应用/服务目标版本。
查了下资料,apple从iOS10之后,Expected App Behaviors(预期应用行为),对于用户的隐私更加重视,如果需要访问用户手机的相机、多媒体、蓝牙、通讯录、位置、健康、运动...等等 在项目工程配置文件info.plist添加时会自动提示的,截图如下: ? 查看info.plist的source code,展开如下: ?
楼主装逼,打他 背景 iOS10 新特性一出,各个大神就早已研究新特性能给场景智能化所带来的好处(唉,可惜我只是一个小白)。我也被安排适配iOS10的推送工作! 本文主要是针对iOS 10的消息通知做介绍,所以很多代码没有对iOS 10之前做添加适配。 _OR_LATER){ //iOS 8 - iOS 10系统 UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes 10之前接收通知的兼容方法 #pragma mark -iOS 10之前收到通知 - (void)application:(UIApplication *)application didReceiveRemoteNotification 1、运行工程则会拿到设备的Device Token,后面会用到。 device token.png 2、现在我们需要一个推送服务器给APNS发送信息。
概述 苹果在 iOS10 开放了 SiriKit 接口给第三方应用。目前,QQ已经率先适配了 Siri 的发消息和打电话功能。 这意味着在 iOS10 中你可以直接告诉 Siri 让它帮你发QQ消息和打QQ电话了,听起来是不是很酷炫? 那么第三方应用使用 Siri 的体验究竟如何?哪些应用可以接入SiriKit? SiriKit 接入 要实现 SiriKit 的功能需要在 Xcode 工程中添加 Intents Extension 的 target,和其他 extension一样, Intents Extension Custom UI 的实现相对较简单,和 iOS app 的开发一样,都是通过 UIViewController 的子类实现。
iOS10添加了新的权限控制范围 如果你尝试访问这些隐私数据时得到如下错误: This app has crashed because it attempted to access privacy-sensitive
不过,WWDC 16 中,Apple 表示将继续在 iOS 10 和 macOS 10.12 里收紧对普通 HTTP 的访问限制。 对于网页浏览和视频播放的行为,iOS 10 中新加入了NSAllowsArbitraryLoadsInWebContent键。 简单说,iOS 9 只看NSAllowsArbitraryLoads,而 iOS 10 会先看NSAllowsArbitraryLoadsInWebContent。 现在 (2016.06.17) 的 iOS 10 beta 和 Xcode 8 beta 版本中NSAllowsArbitraryLoadsInWebContent似乎还不能正确工作。 转自https://onevcat.com/2016/06/ios-10-ats/
Apple的开发着文档上有Keychain的完整使用实例(请参见iOS Keychain Services Tasks)。今天博客中用户名和密码的存储和更新就是使用的官方文档给的示例。 打开后,我们重新运行工程,然后再观察其效果。 ? 当然,我们对数据进行AES加密,使用Snoop-it监听到的就是加密后的数据,这样一来就增加了逆向工程的难度。 ?
一、准备工作 unity导出的xcode项目 二、开始倒腾 1、将Unity3D中的以下文件导入到工程目录下 Data Classes MapFileParser.sh Libraries MapFileParser delegate.unityWindow.hidden = YES; } } 三、添加Framework以及Run Script 添加这两项的时候注意和unity的工程中保持一致