ios开发

mac iOS 开发环境

最后都变了- 提交于 2019-12-05 06:55:38
一、安装 Xcode 1、通过 直接下载 或者Mac App Store 来安装最新稳定版 Xcode 2、通过在命令行中运行以下命令来配置 Xcode command-line tools: sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer $ sudo xcodebuild -runFirstLaunch 3、运行一次 Xocde 或者通过输入命令 sudo xcodebuild -license 来确保已经同意 Xcode 的许可协议 二、配置ios模拟器 open -a Simulator 三、运行一个flutter项目 flutter create my_app cd my_app flutter run 来源: https://my.oschina.net/u/2427561/blog/3132654

iOS开发Crash堆栈分析(Umeng)

≡放荡痞女 提交于 2019-12-05 06:49:41
一、先说对单个地址进行分析的方法: 命令行进入包含xxx.app.dSYM的路径,执行下面命令 dwarfdump --arch=arm64 --lookup 0x10051bc2c xxx.app.dSYM (dwarfdump的具体用法和原理,请自行百度,这里只是提供地址分析的操作方法) 其中,arm64针对具体crash对应的机型来改变,lookup后面的地址为具体的崩溃地址,xxx.app.dSYM为对应该崩溃信息的版本。 该命令会将地址对应的代码逻辑分析出来。 二、友盟分析工具 umcrashtool : 1、下载 umcrashtool工具 2、从友盟导出crash文件 xxx.csv 3、确保xxx.app.dSYM文件在 ~/Library/Developer/Xcode/ 或该路径的子目录下 4、终端运行umcrashtool: umcrashtool [export-file-path] ./umcrashtool -IOS_错误分析_20160104195346.csv 定位后的代码及行数会写入错误分析-symbol.csv文件,与原文件在同一目录下。用工具打开新生成的xxx-symbol.csv文件,便可查看错误发生的源码文件及行数。 来源: oschina 链接: https://my.oschina.net/u/1473377/blog/597238

iOS开发/App安全/代码自动混淆笔记

青春壹個敷衍的年華 提交于 2019-12-05 06:15:01
点击上方“ iOS开发 ”,选择“置顶公众号” 关键时刻,第一时间送达! 最近接触银行类项目,对app安全才有了些认识...比较尴尬,除了之前经常做的网络参数加密解密,以及防止数据重放之外,还提到了防范反编译的风险,其实Apple算比较安全的了,反编译过来也就看到.h文件....但把代码混淆还是会比较好些。 一、在项目根目录下新建confuse.sh 和 gbFunc.list 文件 说明: confuse.sh 文件在编译过程中会执行gbFunc.list 用于自动混淆代码时,存放过滤出来需要混淆的方法名 touch confuse.sh touch gbFunc.list 二、新建GBConfuse.h 说明: GBConfuse.h 是在自动混淆代码时,将会把自动生成的字符串定义成宏,存放在此文件,也便于查看。 注意:需要把.h文件移到项目文件外,因为放项目文件中,到时被反编译过来,还是能得到GBConfuse.h里面的东西的,就能通过比对,得到方法。(后面用class-dump反编译过来就明白了...) 三、在confuse.sh中添加如下代码 #!/usr/bin/env bash TABLENAME=symbols SYMBOL_DB_FILE="symbols" #func.list路径 STRING_SYMBOL_FILE="$PROJECT_DIR/GBFunc

iOS开发-项目的完整重命名方法,图文教程

你离开我真会死。 提交于 2019-12-05 06:08:00
文章来源: http://www.cnblogs.com/GarveyCalvin/p/4195745.html 前言:在IOS开发中,有时候想改一下项目的名字,都会遇到很多麻烦。直接改项目名吧,XCODE又不会帮你改所有的名字。总是有很多文件、文件夹或者是项目设置的项。而且都是不能随便改的,有时候改着改着,编译不了。所以各位重命名项目时,记得先备份好一份噢。本文我会介绍一种方法,是我自己参考了很多资料得出的总结。 为什么说是完整呢?因为改名之后,你不会再看到任何有关于之前的项目名字。 本文会把一个项目名叫“test233333333”改成“test”。 1)打开项目: 以上是目前的项目结构。 2)选中项目设置并按下回车,输入新的项目名字: 3)输入完后按回车,弹出改名前和改名后的文件对名,这时点击“Rename”: 4)这时会再弹出一个对话框,直接点击“Enable”: 5)这时你会发现,还有很多的“旧”项目名字的文件/文件夹: 不要紧,继续往下看,一起把这些“旧”名字消灭掉。 6)我们先把这两个文件夹改一下名字: 改前: 改后: 这里的testTests,原先为test233333333Tests,我们改名字时需要注意,只需要把旧名字(test233333333)替换成新名字(test)即可,不要把其它字符(Tests)删除! 7)选中这个类文件,更改类名字时不能直接重命名

iOS开发-代码混淆

我怕爱的太早我们不能终老 提交于 2019-12-05 05:56:25
点击上方“ iOS开发 ”,选择“置顶公众号” 关键时刻,第一时间送达! 作者:张囧瑞 來源:简书 文:https://www.jianshu.com/p/864ce7dc9c25 iOS开发整理发布,转载请联系作者获得授权 iOS表面上看来是比android安全的多的,在网络上针对android的加密保护也比iOS多得多,但是这并不意味着iOS就是很安全的,如果在正常的设备上还好,但是在越狱的设备上,我们的代码信息就会暴露的一干二净,不仅可以被别人看到我们的方法是如何调用的,就连我们那些写的很垃圾的代码也会被人看的一清二楚,想想就是很丢人的事情,我这个菜鸡对iOS安全了解的也并不是很多,这篇文章也就仅根据念茜女神的博客对iOS中的代码混淆做一些初步的处理,如果你是稍微知道一点点iOS安全的东西,这时候就可以cmd+w拜拜了。 好了,开始正文。 class-dump This is a command-line utility for examining the Objective-C runtime information stored in Mach-O files.It generates declarations for the classes,categories and protocols.This is the same information provided by

iOS开发如何避免安全隐患

独自空忆成欢 提交于 2019-12-05 05:51:14
现在很多iOS的APP没有做任何的安全防范措施,导致存在很多安全隐患和事故,今天我们来聊聊iOS开发人员平时怎么做才更安全。 一、网络方面 用抓包工具可以抓取手机通信接口的数据。以Charles为例,用Charles可以获取http的所有明文数据,配置好它的证书后就可以模拟中间人攻击,获取https加密前的明文数据。 1.1 中间人攻击 先简要地说下什么是中间人攻击: ①客户端:“我是客户端,给我你的公钥” -> 服务端(被中间人截获)。 所以现在是: 客户端->中间人 ②然后中间人把消息转给服务端,也就是: 中间人->服务端 ③服务端把带有公钥的信息发送给客户端,但是被中间截获。所以是: 服务端-[服务端的公钥] ->中间人 ④中间人把服务端的公钥替换成自己的公钥,发送给客户端,声称是服务端的公钥: 中间人-[中间人的公钥] ->客户端 ⑤客户端用得到的公钥加密,实际是用中间人的公钥进行加密,所以中间人可以用自己的私钥解密,获取原始数据,然后再用服务端的公钥对原始数据(或者修改原始数据内容)加密后发送给服务端。 这样中间人就可以获取到双方的通信数据,并可以制造虚假数据。 1.2 如何防范中间人攻击? 下面开始说如何防范: 1.2.1 SSL Pinning SSL Pinning的原理就是把服务端的公钥存到客户端中,客户端会校验服务端返回的证书是否和客户端保存的一致

iOS开发系列--代码混淆

柔情痞子 提交于 2019-12-05 05:50:07
由于iOS系统的封闭性,相对于安卓来说,iOS开发过程中代码混淆可能就显得并不是得非有不可了。但是在安全性(可通过 class-dump 反编译暴露出类的方法名)和特殊需求上(例如马甲包的混淆过审)还是有一定需求的! 此脚本借鉴于 kaich/codeobscure 。在使用原作者脚本的过程中,发现了一些BUG和不足,比如正则表达式的判断不准确,生成过多无用的替换宏,需要花费过多时间去人工排错... 由于本人对python并不是很熟,所以只是在原作者的基础上作了一些完善修改。 优化内容: 修改正则表达式,更精准地找出关键词。 替换规则更改:随机字符串==>随机生成2个单词拼接。防止苹果审核过程被误认加入混淆乱码。 增加-k选项,通过ignoreKey.txt文件添加需要过滤的关键词,可避免每次生成都要手动删除部分关键词的麻烦。 增加property关键词、懒加载方法名过滤,减少无用宏的生成。 增加IBAction方法关键词的二次过滤(原脚本存在自定义方法跟IBAction方法重名,无法排除的情况)。 以下内容大部分来源于 kaich/codeobscure 实现原理 其实插件的实现方式十分简单,提取用户编写的文件中的方法名,使用宏定义将其更换为任意的无规则字符串。但这种方式有一些需要注意的点: 对于系统库产生的方法名,不可替换;对于系统使用到的关键字,也不可以替换;否则会报错;

iOS开发UI篇—CAlayer(创建图层)

非 Y 不嫁゛ 提交于 2019-12-05 05:26:50
iOS开发UI篇—CAlayer(创建图层) iOS开发UI篇—CAlayer(创建图层) 一、添加一个图层 添加图层的步骤: 1.创建layer 2.设置layer的属性(设置了颜色,bounds才能显示出来) 3.将layer添加到界面上(控制器view的layer上) // // YYViewController.m // 01-创建一个简单的图层 // // Created by apple on 14-6-21. // Copyright (c) 2014年 itcase. All rights reserved. // #import "YYViewController.h" @interface YYViewController () @end @implementation YYViewController - (void)viewDidLoad { [super viewDidLoad]; //1.创建一个layer // 使用对象方法创建 // CALayer *layer=[[CALayer alloc]init]; //使用类方法创建 CALayer *layer=[CALayer layer]; //2.设置layer的属性(一定要设置位置,颜色属性才能显示出来) layer.backgroundColor=[UIColor brownColor]

ios开发小经验--适合初学者

℡╲_俬逩灬. 提交于 2019-12-05 03:59:18
1, NSComparisonResult的值有哪些 比对的enum NSComparisonResult,不容易记忆,列粗来,看吧: 大于它的话就是一个负值哦。 typedef NS_ENUM(NSInteger, NSComparisonResult) { NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending }; 2, initialize和load执行几次 objective c中有各种运行时, 每个类都有+ (void)initialize, 这个方法每个类只调用一次,但是: 如果它的子类没有自定义这个方法的话,它会代替子类被调用一次哦。 initialize 有可能被调用多次哦 一些一次性初始化的方法可以用这个方法来做。比如用来做程序appDelegate全局的初始化。 比如,单例 static Manager +theManager = nil; + (void) initialize { if (self == [Manager class]) { theManager = [[Manager alloc] init]; } } + (Manager *)sharedObj { return theManager; } 补充一下:今天才知道还有个+(void)load方法,据说load方法在

第八次讨论--平台

心已入冬 提交于 2019-12-05 03:10:31
讨论 时间:2019.11.20 地点:应用楼 讨论主题 项目的平台是什么,是移动端应用程序,还是基于小程序,如果是基于小程序,应该依附于那个平台。 讨论内容 如果是运行在移动端的应用程序,需要同时在Android 平台和IOS 平台上开发。特别是在IOS 平台上,开发费用高,学习成本高。Android 平台也会有适配难的问题,不同的手机品牌有着不同的情况,为了使用体验必然需要适配。 如果是开发基于小程序的应用,只需要开发一次,同时可以在Android 和IOS 平台上运行。在多个平台上支持自带的账号管理功能,便于用户和员工的登录和管理。可选的平台有微信小程序,支付宝小程序,百度小程序,和快应用。 如果是开发网页程序,不便于在手机上使用,也没有其他平台的优势。和小程序的优势是不需要提前安装。 还有一个选择是开发嵌入式设备,更便于手持操作,坏境适应能力更高,可以随处放置,不用担心手机误操作,也不用担心电脑体积过大,无处安放。但也有着学习成本。 场景图片 总结 开发多个平台,适用于不同的场景,使用不同的人群,适合不同的时刻。 开发多个平台,也含有更多的优势。 来源: https://www.cnblogs.com/yaoluoxiaodui/p/11901444.html