导航:首页 > 源码编译 > iOS编译work

iOS编译work

发布时间:2022-12-06 04:53:14

❶ iOS开发WorkSpace多工程联合编译

先创建Workspace文件。

创建Project文件。

在创建工程的过程中有个主意点:将新建Project添加的目标和组 都是workspace。如图4

多个工程间文件互相引用问题:多个工程间的文件引用方法:在工程A的Setting选项下的Header Search Paths 下添加“$(SRCROOT)/../B”。
这个工程A中即可引用工程B的文件,不过导入文件的方式是:#import <xxxxx.m>

如上设置,多个工程间的类就可以共享使用了。

使用 pod 问题 创建的 Podfile 文件要与 xxxWorkspace.xcworkspace 文件在同一个文件目录下, 贴出 Podfile 文件内容。

在执行完 pod install指令后报下面的警告,则在header search paths中添加$(inherited)即可。

❷ 如何使用xcodebuild在命令行编译iOS工程

、准备工作 1、jenkins环境。搭建jenkins环境可以参考jenkins平台搭建和配置一节。需要注意的是,虽然涉及iOS开发,但是jenkins平台却不必搭建在mac机器上,只要在jenkins上添加mac节点就可以了。 2、iOS开发环境。iOS开发环境主要是指Xcode开发环境,Xcode是免费的,只要在苹果应用商店里下载一个就可以了。当然,还有重要的一点儿---开发者证书,现在个人也已经有免费的证书了,没有证书的话,只能打模拟器用的包了。 3、git项目。强烈建议把代码放在git上,这样便于团队开发。当然,不放git上也可以。 4、jenkins Xcode持续集成插件。常用的插件Xcode integration,这个插件能够快速的帮助我们进行Xcode打包配置,当然,只用纯shell脚本也是可以的。 在jenkins上打包之前,我们最好手工测试一下可以打包成功,首先用Xcode图形界面进行测试,然后用命令行测试,如果都能打包成功就可以挂在jenkins上运行了,毕竟jenkins的原理也是通过执行一系列命令来完成的。 三、jenkins配置 1、创建一个任务,创建任务的时候最好选自由风格的软件项目,这样配置起来比较方便,如果有需要,也可以选择其他的风格。 2、描述

❸ 如何把iOS代码编译为Android应用

看开发时使用的什么模式。
如果是使用object C,那没法跨平台编译,也就无法直接转换。
如果使用的一些支持跨平台的第三方库,比如cocos2dx,那在安卓和ios下都是可以编译的。

一款名为“J2ObjC”的源代码转换工具,可将Java语言编写的程序转换称Object-C语言,并直接使用iOS框架,这意味着Android上的程序可以直接转换成iOS App。

❹ iOS开发之条件编译

#if  (条件语句)

条件符合执行的语句

#elif (条件语句)

条件符合执行的语句

#else

所有条件不符合时,执行的语句

#endif

在条件编译中,只编译条件满足时,之后的语句,其余语句不编译。(这里指#if和#endif之间的语句)

条件语句一般使用宏定义

例1:在iOS10及iOS10以上运行

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0

#endif

例2:在宏定义DEBUG时执行执行,没有则不执行

#define DEBUG

#ifdef DEBUG

条件符合执行的语

#endif

❺ 记录ios项目运行、编译的错误

1.Pods-xxxxxxx-resources.sh: Permission denied

解决办法:打开项目中xx/Pods/Target Support Files/Pods-xx文件夹,cd到该目录下

输入终端命令:chmod a+x Pods-xx-resources.sh

chmod 用户 操作 权限 文件名用户:

"a" 表示全部用户操作

"+"表示增加权限权限

"x"表示可执行权限文件名

2.Reason: image not found

首先翻译一下字面意思:找不到图片(镜像)了,这里指的是名为Qucore-ThirdParty.framework寻找不到镜像了。

查阅资料,发现framework的Status非为两种:

Required:强引用(一定会被加载到内存)

Optional:弱引用(在被需要的时候才会被载入到内存)

在遇到错误,例如:ld:Library not found......的时候,说明你的某些/个Framework不应该被强引用(例如:你的某个Framework是在iOS8.0+之后可用,那如果你运行到iOS7.0的手机上,你就需要把这个Framework的Status设置为Optional)。

如果使用了Cocoapods后,且Library Binary With Libraries中没有该FrameWork只需要将pod.FrameWork设置为Optional

注:如pod.FrameWork在Library Binary With Libraries中不存在,只需要在终端cd到项目文件夹后pod install下,就会在Library Binary With Libraries中出现。

❻ 如何编译OpenCV进行IOS7

编译的Xcode项目失败,出现以下错误: “缺少必需的架构arm64在文件/用户/ * / Git/ocr/opencv2。 它运作良好,如果我改变架构(构建设置下)(ARMv7的,armv7s),而不是(ARMv7的,armv7s)。 如何更改opencv的python构建脚本,添加arm64支持opencv2。
1. micahp的回答几乎是完美的,但错过了模拟器版本。因此,修改平台/ IOS /到: targets = ["iPhoneOS", "iPhoneOS", "iPhoneOS", "iPhoneSimulator", "iPhoneSimulator"]
archs = ["armv7", "armv7s", "arm64", "i386", "x86_64"]

你需要下载行工具Xcode的5.0.1,然后运行 python opencv/platforms/ios/build_framework.py ios

2. 我修改了以下内容,使之建立,虽然我还没有得到一个arm64 iOS设备进行测试的 编辑:我也只好跟着 假设“OPENCV”是包含从Github上的opencv源文件夹: 在每个gzlib.c, gzread.c, gzwrite.c位于opencv/3rdparty/zlib/地址: #include <unistd.h>

在顶部后,原有的包括。 另外开opencv/platforms/ios/cmake/Moles/Platform/iOS.cmake并从改线88: set (CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_BIT)" CACHE string "Build architecture for iOS")

到: set (CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_INCLUDING_64_BIT)" CACHE string "Build architecture for iOS")

在另外改变buildscriptopencv/platforms/ios/build_framework.py在99线和100从: targets = ["iPhoneOS", "iPhoneOS", "iPhoneSimulator"]
archs = ["armv7", "armv7s", "i386"]

到: targets = ["iPhoneOS", "iPhoneOS", "iPhoneOS", "iPhoneSimulator", "iPhoneSimulator"]
archs = ["armv7", "armv7s", "arm64", "i386", "x86_64"]

所得到的库将包括以下内容: $ xcrun -sdk iphoneos lipo -info opencv2
Architectures in the fat file: opencv2 are: armv7 armv7s i386 x86_64 arm64

虽然我有一个关于剩余的关注opencv/platforms/ios/cmake/Toolchain-iPhoneOS_Xcode.cmake它定义了一个数据指针的大小为4的行14和17。它应该是8的64位我想,这样我没有测试过,如果库工作arm64我会建议进一步研究在这一点上,如果它不能正常运行。

3. 尝试等待下个月。将发布新的XCode具有更强大的32/64位支持。

4. 修改“到: def build_framework(srcroot, dstroot):
"main function to do all the work"

targets = ["iPhoneOS", "iPhoneOS", "iPhoneOS", "iPhoneSimulator"]
archs = ["armv7", "armv7s", "arm64", "i386"]
for i in range(len(targets)):
build_opencv(srcroot, os.path.join(dstroot, "build"), targets[i], archs[i])

put_framework_together(srcroot, dstroot)

❼ iOS 编译报错怎么办

1.编译iPad真机时,选择了 Architetures:Standard(armv6) BaseSDK:iPhoneDevice3.2 TargetDeviceFamily:iPad.

若编译出现如下错误:

Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1

则修改 GCC4.2CodeGeneral区域中的ComplieForThumb为非选中.

已经有了开发者证书及私钥后,可直接在越狱的手机上调试.

2. 编译链接时, "_OBJC_CLASS_$_xxx", referenced from:可能需要重新建立某个类的文件.

或者:选择项目名,在detail列表中的target列(显示为一个又圆圈),把这个文件的复选选中,或者再次选中.以把它加入到这个target里面来.

3.在sdk4.0及以上使用RegexKitLite报'captureCount' was not declared in this scope错误,是在非.m文件中使用了它的原因.

4.there is no sdk with the name or path.

从网上down的开源代码,结果运行的时候常出现这样的错,并且在deployment中没有iosdeploymenttarget选项.

尝试 Project/Edit Active Target/ 及 Set Active SDK菜单项,来回切换一下Active Configuration。

5. EXEC_BAD_ACCESS,EXC_BAD_INSTRUCTION错误,意味着这个app有内存管理的问题,一般是因为访问野指针对象造成的。

一个和内存相关的崩溃一般很难定位到源代码,因为这个恶魔可能很早就在程序中做了坏事了。假如一段有问题的代码混乱了内存结构,这样产生的蝴蝶效应可能会在之后很久才表现出来,并且总在不同的地方。所以,若有指针类型出现了不可能的变化,很可能就是因为内存结构被野指针调用混乱了。

修复一些警告后,可能就能预防一些内存错误。警告在左边靠近行号的黄色三角指出一个编译警告,你点击那个黄色的三角形,xcode可能会弹出一个“Fix-it”的建议。

EXC_BAD_ACCESS崩溃不像SIGABRT,将不会得到很明朗的错误消息。然而可以使用一个让人看到曙光的调试工具:Zombies!死亡对象工具。打开这个项目的scheme editor,选择Run 选项,然后选择Diagnosics标签。勾上Enable Zombie Objects选项。当这个zombie工具被启用之后,即使这个对象被释放了,这个对象的内存也不会被清理。所以,那块内存将会被标记为“长生不死的”。假如你试着之后又去使用这块内存,这个app能够意识到你的错误操作,并且app将会抛出“messagesent to daellocated instance”错误并且终止运行。

在工程中加入NSZombieEnabled 环境变量,并设为启用,则在 EXC_BAD_ACCESS 发生时,XCode 的 Console 会打印出问题描述中,设置方法:双击Executables 下的 可执行模组,在弹出窗口中,Variables to be set in the environment,添加 NSZombieEnabled,并设定为 YES,点击选中复选框启用此变量。

可以再加入 MallocStackLogging 来启用malloc记录,以获得更多的提示来帮助定位问题。

在gdb窗口输入 (格式: shell malloc_history <id> <address>) shellmalloc_history1436 0x5f7fcf0, 也可以在终端中去运行 就要去掉以上的shell 指令 如 malloc_history <id> <address>

应该仅当需要调试内存时,才设置上述环境变量。

注意一点:不应该一直启用zombie objects。因为这个工具将永远不会释放内存,只是简单标记一下这个内存是不死的,你最终将会在某个时候耗尽所有的内存,因为所有分配过的内存都不会得到重用。因此应该在排查内存相关的错误的时候才开启zombie objects,其他时候应该关闭它。

在xcode4中,To edit environment variables, go to Menu Proct / Edit Scheme…, select the desired configuration (you probably want 'Run') from the left sidebar first and then click on the Arguments tab. Environment variables are configurable there.

6.运行一个IPhone程序时,弹出窗口说“程序运行失败,预置描述文件已过期” 。 解决办法是,在Xcode中, window-> Orgnazier -> 你的iphone ->删除带有红*的该程序之前的Profile 。 然后从Xcode运行该程序.

7.真机编译时报 Code Sign error: The identity doesn't match any valid certificate/private key pair in the default keychain

修改工程和Targets的get infouild 中的code signing identity为空

8.调试打印

CFShow(coreFoundationThingy) will print out a description of coreFoundationThingy to the console. Output looks something like: {value = w:1186.000000 h:687.000000 type = kAXValueCGSizeType}

If NSLog() is printing something out as an NSCFType, try CFShow().

9. 编译时报 Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang failed with exit code 1,修改C/C++ Compiler Version为gcc4.2

10.this class is not key value coding-compliant for the key viewController

可能在创建了一个基于view的工程,而后把生成的viewcontroller删除了,但是在.xib中还有对它的引用,在IB中直接用delete键删除掉它就行了。

11.这台电脑上已经存在一个名为“embedded.mobileprovision”的预置文件,您是否要替换么?

http://blog.sina.com.cn/s/blog_6907b67f0100o2vw.html

12.真机调试时报failed to upload *.app

http://hi..com/%CB%E6%B7%E7_1989/blog/item/9649f49f805f05aec8eaf466.html

http://www.shouyanwang.org/thread-462-1-1.html

13.记的release时,先置delegate为nil。

一个节点不应该保留任何对不属于它的节点的引用。

14.模拟器

将xcode升级到4.3.1以后发现,ipad的模拟器,没有Home键了。Command+Shift+H就可以实现类似点击Home键的效果了。

❽ ios 怎么选择podfie进行编译

iPhone何打包通用静态库文件(模拟器真机都用)1.先必须命令:~/Library目录lion默认隐藏便用命令使其显示:chflagsnohidden~/Library想再让其隐藏:chflagshidden~/Library2.静态库工程建立:XcodeNew新project选择IOS面Framework&Library面CocoaTouchStaticLibrary直接next建立MtimeLibrary工程(面功能要关注简单2数相加)?3.工程建立删除默认.h.m文件自创建CountNumbers..hCountNumbers..m文件图:4.OK选择iPhone5.1Simulator,Command+B编译我Procts面找我编译模拟器运行libMtimeLibrary.a文件,选择真机(图)再编译真机运行libMtimeLibrary.a库?5.libMtimeLibrary.a右键OpeninFinder找libMtimeLibrary.a所路径、面我新建项目添加.a文件测试打终端:输入命令(路径根据自决定)cd/Users/cash/Library/Developer/Xcode/DerivedData/MtimeLibrary-amyqbnwwzcivnyeijggzaorseihj/Build/Procts/Procts目录ls看:?再输入命令:cdDebug-iphonesimulator/通面命令查看libMtimeLibrary.a信息命令:lipo-infolibMtimeLibrary.a显示:cashmatoMacBook-Pro:Debug-iphonesimulatorcash$lipo-infolibMtimeLibrary.ainputfilelibMtimeLibrary.aisnotafatfileNon-fatfile:libMtimeLibrary.aisarchitecture:i386i386mac架构再输入面命令:cd../cdDebug-iphoneos/继续通命令查看lipo-infolibMtimeLibrary.a显示:cashmatoMacBook-Pro:Debug-iphoneoscash$lipo-infolibMtimeLibrary.ainputfilelibMtimeLibrary.aisnotafatfileNon-fatfile:libMtimeLibrary.aisarchitecture:armv7armv7iOSjia'ge架构我明白真机使用能模拟器使用吧我要做要让libMtimeLibrary.a文件同i386armv7信息通用静态库文件6.新建MtimeLibraryDemo应用真机或者模拟器libMtimeLibrary.aCountNumbers.h文件引入进图:?添加CountNumbers.h文件需要调用类面调用libMtimeLibrary.a面////AppDelegate.m//MtimeLibraryDemo////Createdbycashon12-3-23.//Copyright(c)2012__MyCompanyName__.Allrightsreserved.//#import"AppDelegate.h"#import"CountNumbers.h"@implementationAppDelegate@synthesizewindow=_window;-(void)dealloc{[_windowrelease];[superdealloc];}-(BOOL)application:(UIApplication*):(NSDictionary*)launchOptions{self.window=[[[UIWindowalloc]initWithFrame:[[UIScreenmainScreen]bounds]]autorelease];//.CountNumbers*cn=[[CountNumbersalloc]init];intcount=[cnaddTwoNumbers:10:20];NSLog(@"count:%d",count);self.window.backgroundColor=[UIColorwhiteColor];[self.windowmakeKeyAndVisible];returnYES;}7.OK编译运行应用程序错误篇文档关键.?我找刚才真机模拟器libMtimeLibrary.a目录debug-iphoneos面基于arm6arm7编译库文件debug-iphonesimulator文件夹面基于i386编译文件?10.关键步骤:通lipo-create命令合并2静态库文件(-output面/Users/cash/Desktop/test/libMtimeLibrary.a合并路径文件名字)lipo-create"/Users/cash/Library/Developer/Xcode/DerivedData/MtimeLibrary-amyqbnwwzcivnyeijggzaorseihj/Build/Procts/Debug-iphonesimulator/libMtimeLibrary.a""/Users/cash/Library/Developer/Xcode/DerivedData/MtimeLibrary-amyqbnwwzcivnyeijggzaorseihj/Build/Procts/Debug-iphoneos/libMtimeLibrary.a"-output"/Users/cash/Desktop/test/libMtimeLibrary.a"功通命令lipo-infolibMtimeLibrary.a知道文件已经i386armv7信息cashmatoMacBook-Pro:testcash$lipo-infolibMtimeLibrary.aArchitecturesinthefatfile:libMtimeLibrary.aare:i386armv7cashmatoMacBook-Pro:testcash$w

❾ iOS 在编译时出现 framework not found XXXX框架

iOS 在编译时出现 framework not found xxxx框架主要是由于你在添加框架时后期移除这个框架虽然被删除了但是还是被引用了,在Other Linker Flags中被引用,所以在编译时就会出现找不到这个框架

这时只要进入项目的Build Settings 找到Other Linker Flags中找到你的那个XXXX框架然后删除,重新编译就可以成功。

❿ iOS一键自动编译打包提交

在开始之前先唠叨两句自己对iOS自动化打包的接触,觉得没啥看头滴老铁可以略过直接从第二部分开始。项目自动打包提交的优势不用说了,很高效便捷的东西,很早就接触到了,但是一直没有用到项目中,分析一下主要有以下几个原因:

总结以上原因,一直没有用到自动打包技术。而现在的情况是,

基于以上的情况,所以想自己写一个自动打包的脚本,能够实现 只运行一句命令就自动编译打包发布 ,啥都不要做,挂着就行,打包完自动打开页面提醒。

打包所需要的文件已经挂在 Github 上了。只需要把 BuildTool 文件夹 复制 到 项目主目录 ,注意是复制!不是拖入项目主目录,因为苹果审核有屏蔽fir关键词。然后打开终端, cd 到 BuildTool 文件夹,输入 sh build.sh 命令,回车,开始执行此打包脚本。

具体的使用方法和参数配置 shell脚本 里面已经有非常详细的注释。

有 AppStoreExportOptions.plist 和 AdHocExportOptions.plist 两个plist文件,分别对应发布到AppStore和AdHoc(蒲公英、fir)。简单说一下里面的属性:

写完脚本后,发现已经有老铁对打包脚本做了很详细的分析了: 详解Shell脚本实现iOS自动化编译打包提交 。也有老铁早就写了iOS自动打包的脚本: xcode_shell 。

看了一下,功能也比较全,比如上传包到自己的服务器、上传完成发邮件测试人员。但是现在已经有第三方平台也做到了比这更多的功能,比如蒲公英,还可以手机短信通知测试人员,有专门的页面外链,支持持续集成等。

老铁们如果还有什么建议,欢迎在下面给我留言或私信。🤗 🤗 🤗

问题一(更新于2018年11月14日):

升级 Xcode 10 以上版本,苹果采用新的构建系统,之前的 xcodebuild clean 命令已经无法使用,如果用这个命令的话会报错,苹果给的建议是删除根目录下的 build 目录文件夹,删除就可以完整打包了。但是每次打包都需要再删除一遍,由于这个目录的主要作用就是存储 该项目的历史构建包(Archive归档文件和iPA包) ,所以解决办法是:

参考资料: build_system_release_notes_for_xcode_10

阅读全文

与iOS编译work相关的资料

热点内容
如何删掉多余的服务器 浏览:220
c编程算法 浏览:833
堵车如何缓解压力 浏览:17
喜鹊快贷app怎么了 浏览:263
海龟编辑器积木编程怎么安装 浏览:185
程序员理发店生意怎么样 浏览:603
程序员罗技 浏览:180
软考初级程序员课程2021下载 浏览:491
杭州程序员奶奶 浏览:880
不听命令造成错误 浏览:981
kool系统源码 浏览:610
流氓app在哪里看 浏览:98
域名购买了怎么指向服务器 浏览:121
安卓手机如何让照片颜色反转 浏览:859
怎么下载卓睿安手机版 浏览:514
h3crange命令 浏览:468
php前景和python 浏览:338
php压缩图片内存大小 浏览:495
在哪里可以查看云服务器的信息 浏览:70
python读取非txt文件 浏览:799