首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏王大锤

    iOS创建子工程

    创建子工程很简单: 1 假设你已经有了自己的工程demo.xcodeproj,首先我们需要创建一个子工程,(File->new->project),我们要选择静态库。如图 ? 到此,第一步就结束了,我们创建了一个子工程,而且也添加到了自己的工程里面,但是,这样在自己工程中还是无法引用子工程的类。我们还需要设置一下自己工程的环境变量。 2 设置环境变量: 自己的工程demo下,选择Bulid Settings ,找到User Header Search Paths。设置自己工程的绝对路径,然后设置递归查找文件夹。 ? 5 如果存在category的时候,在demo工程Other Linker Flags里面添加编译的命令: 注意:在ios5以及以上版本中,引入别的工程(如上)或者静态库, 并且StoryBoards 上面的意思是说 对于64位操作系统或者ios系统,-Objc存在一个bug,就是只包含categories ,而没有任何class的静态库,是不会被加载进来。

    1.1K100发布于 2018-05-17
  • 来自专栏青玉伏案

    iOS逆向工程之Theos

    如果你对iOS逆向工程有所了解,那么你对Tweak并不陌生。 安装的具体过程如下所示: image.png 2.安装ldid sudo brew install ldid 在Theos开发插件中,iOS文件的签名是使用ldid工具来完成的,也就是说ldid取代了 2.新建工程 $THEOS/bin/nic.pl 接下来我们就要使用theos来创建我们的工程了,创建工程也是比较简单的,就是调用我们theos目录中bin下的nic.pl命令。具体执行如下所示。 在选择模板后,紧接着会让你做一系列的操作,这一些列的操作和Xcode新建iOS工程的步骤类似。 2.Tweak工程创建 下方就是我们Tweak工程的创建,与上述工程的创建类似,不过我们在此选择的是Tweak模板。

    2K90发布于 2018-01-11
  • 来自专栏DevTips

    iOS逆向工程工具集

    本篇文章是我在学习逆向工程时整理的逆向工程工具集 只作为记录使用 并不是详细的教程 阅读本篇教程需要你有一定逆向工程知识 一,Cycript 介绍 iOS运行时工具 可hook运行时进程 并提供了以下能力 1,开发者可以在应用运行时查看和修改应用 得到所有正在使用的类名或方法名 2,运行时修改实例变量的值 3,Method Swizzling,替换特定方法的实现 4,运行时调用任意代码 当然Cycript iOS远程调试APP 1、将debug server文件从手机拷贝到mac scp root@192.168.31.154:/Developer/usr/bin/debugserver ~/ 2,瘦身 Code cd Code/ git clone https://github.com/stefanesser/dumpdecrypted.git cd dumpdecrypted/ make 2. 1.iOS-Runtime-Headers: https://github.com/nst/iOS-Runtime-Headers 2.OSXRuntimeBrowser: https://github.com

    1.4K10编辑于 2022-01-20
  • 来自专栏青玉伏案

    iOS逆向工程之App脱壳

    砸壳"在iOS逆向工程中是经常做的一件事情,,因为从AppStore直接下载安装的App是加壳的,其实就是经过加密的,这个“砸壳”的过程就是一个解密的过程。 当然,在iOS9.2.1上的越狱设备执行上述命令会报错,可能是目前Cycript这个强大的工具还不支持iOS9.2吧。所以我是在iOS7.2上做的该实验。 image.png 2.获取该进程的Document目录 [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains image.png 2.开始导出头文件 从上述截图中我们可看到,Headers文件夹中并没有生成相应的头文件。是我们解密的文件有问题吗?

    2.8K51发布于 2018-01-11
  • 来自专栏BIT泽清

    IOS马甲包混淆工程之修改Xcode工程名称

    如果新建工程的话,会有很多麻烦的问题: 1.虚拟文件夹无法拖拽到新的工程,导致文件杂乱的混在一起难以按模块区分(如果都是实体文件夹可忽略) 2.plis文件需要自己慢慢配置,容易遗漏 3.第三方的link 库需要自己一个一个添加,很多设置需要修改,容易遗漏 4.资源文件需要自己拖拽 新建项目虽然勉强完成修改工程名的过程,但是很多细节容易遗漏,导致后面开发过程中出现Bug很是费事,于是就自己参考网上资料,自己在现有的工程上面直接修改名字 ,步骤如下: 1.修改工程名字 .打开工程 点击工程名称 回车 直接修改 .此时会弹出一个对话框,点击Rename 2. 修改scheme名称 .点击Xcode上面的工具栏Product->Sechme->Edit Sechme .弹出对话框 会车直接修改 修改完成之后 点击Close 3.修改目录名称 .点击工程内需要修改名字的目录

    1.5K50发布于 2018-06-24
  • 来自专栏iOS开发攻城狮的集散地

    iOS 工程文件.xcodeproj无法打开

    暂停Bug 知识点:Xcode的工程文件是 工程名.xcodeproj,而它其实是个package目录,通过显示包内容,可以查看到它内部主要有project.pbxproj 和 xcuserdata。 而project.pbxproj 是工程描述文件,描述了工程里的源码文件、schema设置等。 ------- 摘自iOS 开发 xcode中的project.pbxproj--深入剖析 容我冷静一下 冷静想了一下,应该是因为我俩同时提交了图片,工程 GovCn.xcodeproj 文件冲突了 打开之后,工程里关于图片的配置信息都没了,但图片源文件还存在源目录下,重新导入一下就OK了。 直接把它覆盖掉,太粗暴了O(∩_∩)O 显示包内容,找到project.pbxproj 删除冲突标记内容 感谢以下大佬: https://www.jianshu.com/p/e82ec6a56fc2

    4K20发布于 2018-10-25
  • 来自专栏正则

    Flutter iOS 混合工程自动化

    整个文件会被引入到iOS工程的各个*.xcconfig配置文件中。这些配置信息,在xcode runscript中引入的flutter编译嵌入脚本xcode_backend.sh中会使用到。 ), binding) 2 添加Run script 脚本 "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build "$FLUTTER_ROOT line =~ /^\s*#{symbol}/ } plugin = line.split(pattern=separator) if plugin.length == 2 SCRIPT_OUTPUT_STREAM_FILE" ]]; then echo "$1" > $SCRIPT_OUTPUT_STREAM_FILE fi } EchoError() { echo "$@" 1>&2 image.png 混编方案 方案大概的解决方法就是: 完全脱离Flutter环境:(图中实线流程部分) 利用脚本将所有的依赖编译结果从Flutter工程中剥离出来,放到iOS工程目录下。

    2K40编辑于 2022-01-10
  • 来自专栏Molier的小站

    iOS 工程中 Cocoapods 的使用

    我们在开发 iOS 程序的时候,往往都会根据需要导入很多的第三方框架,但是不同的框架完成的功能不同,所以导入的方式也不同,并不是把它直接拖进工程中就完事了,我们需要配置各种环境,链接各种库文件等等。 以后打卡工程就直接打开这个文件就好啦 其中 podfile 文件中显示了我们这个工程中所以集成的第三方, 想修改版本的话就把后面的版本号改成你所需要的版本号就好,想删除的话就把这行删掉,想添加的话就用第五部的搜索命令去搜索然后同样把搜索结果中以 经常遇到的错误比如下面这个 通常出现在 OS X 10.11 系统上 这是由于从这个系统开始苹果开始使用无根安装,这时你再用这个方法就会报这个错,这时只需 这个命令就可以成功升级啦 # 值得注意 2 其实,从 pod search 的响应速度飞快,也可以猜出它并没有连接服务器,仅仅是搜索了本地的框架信息 [呵呵] 此外,如果你的框架更新比较慢,可以尝试执行下面 2 条指令更换镜像服务器 1:pod repo remove master 2:pod repo add master http://git.oschina.net/akuandev/Specs.git 更换镜像完毕后,以后执行 pod repo

    2K40编辑于 2022-11-03
  • 来自专栏Golang开发

    iOS音频(2)——Audio Unit

      3.2、串连的Audio node   3.3、数据的转换 四、附录    4.1、Audio Unit 示例 一、Audio Unit综述 相对于MacOS,Audio Unit在iOS)动态的配置,AUGraph可以动态的对音频数据的组合配置,改变音效。 (上述文字摘自KKBOX iOS/Mac OS X 基礎開發教材) 下图所示两路音频数据首先经过均衡器单元,然后再经过混音单元组合在一起, 最后经由输入输出单元传输到到扬声器。 ? 1.2 AuidoUnit类型 iOS提供了四大类别7种不同的AuidoUnit AudioComponentDescription对象来描述一个具体的AudioUnit: typedef struct AuidoUnit主要有四种大类型:均衡器/混音/输入输出/格式转换; componentSubType 指的四大类型对应的子类型 可以对照下面的表; componentManufacturer 目前iOS

    2.8K41发布于 2019-05-29
  • 来自专栏青玉伏案

    iOS逆向工程之KeyChain与Snoop-it

    Apple的开发着文档上有Keychain的完整使用实例(请参见iOS Keychain Services Tasks)。今天博客中用户名和密码的存储和更新就是使用的官方文档给的示例。 刚好我旁边就有越狱设备,下方就是keychain的存储位置,下方这个keychain-2.db正是钥匙串存储内容的数据库。 ? 下方是keychain-2.db这个数据库中的结构,其中有5张表,我们可以重点关注一下genp这张表的结构和内容。 ? 打开后,我们重新运行工程,然后再观察其效果。  ? 当然,我们对数据进行AES加密,使用Snoop-it监听到的就是加密后的数据,这样一来就增加了逆向工程的难度。 ?

    1.8K100发布于 2018-01-11
  • 来自专栏老沙课堂

    原生iOS嵌入Unity导出的Xcode工程

    一、准备工作 unity导出的xcode项目 二、开始倒腾 1、将Unity3D中的以下文件导入到工程目录下 Data Classes MapFileParser.sh Libraries MapFileParser 2、删除引用 删除Libraries->libil2cpp的引用 选项为Remove Refernces target -> Build Phases -> DynamicLibEngineAPI 移除 UIControlStateNormal]; btn.tag = 1; [self.view addSubview:btn]; UIButton * btn2 (test:) forControlEvents:UIControlEventTouchUpInside]; btn2.tag = 2; [btn2 setTitle:@"结束" forState delegate.unityWindow.hidden = YES; } } 三、添加Framework以及Run Script 添加这两项的时候注意和unity的工程中保持一致

    2.6K20发布于 2019-09-27
  • 来自专栏哈雷彗星撞地球

    你知道如何为iOS工程改名吗?

    我们在iOS开发中,难免会遇到项目做到一半要改名字的情况。如果项目名差的太大,工程名看起来总是不舒服的,有良心的开发者可能就会想着为工程改个贴切的名字,那么你就为用到本文记录的内容。 Rename后 2.修改文件夹名称 选中文件夹 单击文件夹名字 或者 选中文件夹 回车。 ? 修改文件夹 修改之后,回车是这样的: ? 修改真实目录名称 3.修改工程中文件夹的路径 在上一步修改玩真实文件夹的名字后,工程中所有的类都变成了红色(文件找不到)。如下图所示: ? 主要是因为工程中的文件夹指引的路径不对。 ? DB9337FB-35A2-4509-84EB-BDF17C9BEA8C.png 点击Replace All之后,大部分doutu都会被替换为shopping,但是还是有一些顽固的残留。 ? 修改大文件夹的名称 9.修改推送文件的配置(补充) 从iOS 10 开始,工程里多了一个entitlements文件,所以修改完其他之后,还需要修改一下 entitlements文件的路径。

    1.2K30发布于 2018-08-22
  • 来自专栏iOS开发~

    iOS_用SourceTree合并工程冲突,工程打不开时的操作

    1.右键工程 --> 显示包内容 2.打开project.pbxproj文件 3.command + F :搜索“<<<<<” 或“>>>>>” 4.删除这些符号所在的行就行,别删多了 删完之后,你的工程就能打开了

    71920编辑于 2022-07-20
  • 来自专栏我和未来有约会

    ios开发基础知识 - 2

    animationWithKeyPath:@"transform.translation.x"]; theAnimation.duration=1; theAnimation.repeatCount=2;

    63590发布于 2018-01-16
  • 来自专栏落影的专栏

    iOS开发-OpenGLES进阶教程2

    教程 OpenGLES入门教程1-Tutorial01-GLKit OpenGLES入门教程2-Tutorial02-shader入门 OpenGLES入门教程3-Tutorial03-三维变换 OpenGLES

    87370发布于 2018-04-27
  • 来自专栏猿人谷

    iOS Programming – 触摸事件处理(2

    iOS Programming – 触摸事件处理(2) 在上一篇《iOS Programming – 触摸事件处理(1)》中了解触摸、事件和响应者之后,接下去学习如何处理用户的触摸事件。 touches withEvent:(UIEvent *)event {     UITouch *touch =  [touches anyObject]; if(touch.tapCount == 2) {         [self performSelector:@selector(setBackground:) withObject:[UIColor blueColor] afterDelay:2] UIColor redColor];     } } 上面代码表示在第一次轻击之后,没有直接更改视图的背景属性,而是通过performSelector:withObject:afterDelay:方法设置2秒中后更改 touches withEvent:(UIEvent *)event {     UITouch *touch =  [touches anyObject]; if(touch.tapCount == 2)

    1.3K70发布于 2018-01-17
  • 来自专栏iOSer成长记录

    Unity与iOS交互,Unity脚本修改Xcode工程

    Unity与iOS交互 Unity调用iOS的方法,首先在Xcode中新建一个iOS的桥接类,并且将.m的后缀修改为.mm 在.h中加入以下代码,里面的函数包括 无返回,返回字符串,返回布尔,带参数的函数等 UNITY_EDITOR return IsFullSecreen(); #else return false; #endif } iOS通知Unity,iOS直接调用 Unity方法的实现是非常麻烦的,通常情况下,我们都使用通知的方法,常见的场景是Unity调用iOS方法需要异步返回时 在iOS类中加入下面代码,然后我们就可以给Unity发送通知了,如UnitySendMessage 通知 Debug.log(msg); } Unity脚本修改Xcode工程 Unity要在iOS平台发布,需要先生成Xcode工程,通常生成Xcode工程后我们还需要修改很多的配置,添加原生代码等 , 而这些是可以通过cs脚本修改的,比如修改Xcode工程的plist、添加Framework库、拷贝文件到iOS工程、插入代码等 自动pod 实现自动pod需要谷歌的一个插件https://github.com

    2.2K10发布于 2021-03-02
  • 来自专栏青玉伏案

    iOS逆向工程之Hopper中的ARM指令

    如果你想对iOS系统以及你的应用进一步的了解,那么对ARM指令集的了解是必不可少的,ARM指令集应该也算得上是iOS逆向工程的基础了。 所以对ARM指令的了解,是iOS逆向工程的基础呢。今天这篇博客就总结一下ARM指令集的基础指令。 ? (2)减法操作 SUB R0, R1, R2       ; R0 = R1 - R2 这个命名比较简单,就是使用R1寄存器中的值减去R2寄存器中的值,然后存储到R0中。 RSB R0, R1, R2       ; R0 = R2 - R1 反向减法 RSC R0, R1, R2       ; R0 = R2 - R1 - ! 十进制5的二进制数值是0101,进行逻辑左移2位就是0001_0100, 也就是十进制中的20。其实没逻辑左移1位就相当于原数值进行乘2操作,5逻辑左移2位其实就是5 x 2^2 = 20。

    1.7K70发布于 2018-01-11
  • 来自专栏一“技”之长

    iOS项目进行子工程化 原

    iOS项目进行子工程化     在iOS项目开发中,随着项目的越来越大,工程的结构化会变差,编译的速度也会越来越慢。 需要注意,Xcode只能创建MacOS下的Bundle模板,创建后需要将编译选项设置为iOS2.使用shell拷贝资源脚本     这种方式每次在编译时都会将资源进行拷贝,类似CocoaPods的管理模式,推荐使用。例如,在主工程的编译选项中新建一个脚本文件,如图: ? PROJECT_RESOURCE_DIR}/resources-to-copy.txt" > "$RESOURCES_TO_COPY" case "${TARGETED_DEVICE_FAMILY}" in 1,2) --target-device iphone" ;; 1) TARGET_DEVICE_ARGS="--target-device iphone" ;; 2)

    1.8K40发布于 2018-08-15
  • 来自专栏关键帧Keyframe

    iOS AVDemo(2):音频编码,采集 PCM 数据编码为 AAC丨音视频工程示例

    在音视频工程示例这个栏目,我们将通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发。 这里是第二篇:iOS 音频编码 Demo。 CMSampleBuffer 是 iOS 系统用来在音视频处理的 pipeline 中使用和传递媒体采样数据的核心数据结构。 我们在 《iOS 音频采集 Demo》 一文中介绍音频采集接口的时候详细介绍过 CMSampleBuffer,可以去看看回顾一下。 int profile = 2; // 2 表示 AAC LC。

    1.3K30编辑于 2022-06-13
领券