我们有一个XCode项目,它首先构建为一个通用应用程序,然后在路上我们改变了我们的想法,让两个应用程序在同一个二进制文件中,所以我们创建了两个目标.
现在已经有几个星期了,我们可以轻松构建这些平台,并能够在iPad和iPhone上进行部署.
现在我们准备提交到应用程序商店,我担心可能会拒绝代码.我们现在想要提交仅限iPad的应用程序,但我环顾四周,itunesconnect网站上没有任何地方我可以指定目标设备,并且项目的结构首先是一个通用应用程序.我想知道他们如何确定在哪个设备上测试二进制文件.
有关架构的更多信息:我们正在为两个目标使用默认生成的info.plist文件.我们是否应该为每个目标设置单独的info.plist?两个.plist文件之间应该存在什么差异.
这里附有我们正在使用的实际info.plist文件.
感谢您的帮助.
我有一个工作的iPad应用程序,我现在需要在iPhone上工作.我一直在阅读这方面的一些内容,但没有找到一个好的答案.在这个网站上,我看到了一些讨论......但同样,没有明确的答案.
有谁知道任何教程?我已经在我的代码中捕获了它是否是ipad - 所以它已经准备就绪 - 我只需要在我的iphone上测试它!
谢谢你的任何信息
我正在尝试构建一个可以与ios3.x和ios4.x一起使用的静态库.我可以使用ios3.0构建一个静态库,它可以在ios3.0中与另一个项目一起使用,但不能在ios4中编译.从ios4到ios3也是如此.
以下是重新创建的方法:
在app delegate header的应用程序的didFinishLaunchingWithOptions方法中添加
TestViewController*test = [TestViewController alloc] init;
使用ios3.0模拟器进行编译
当我编译时,我得到:
Ld build/Debug-iphonesimulator/library4Test.app/library4Test normal i386
cd /Users/test/Documents/Testing/library4Test
setenv MACOSX_DEPLOYMENT_TARGET 10.5
setenv PATH "/Developer/GrandpaIPhone/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/GrandpaIPhone/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/GrandpaIPhone/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 -arch i386 -isysroot /Developer/GrandpaIPhone/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.3.sdk -L/Users/test/Documents/Testing/library4Test/build/Debug-iphonesimulator -L/Users/test/Documents/Testing/library4Test -F/Users/test/Documents/Testing/library4Test/build/Debug-iphonesimulator -filelist /Users/test/Documents/Testing/library4Test/build/library4Test.build/Debug-iphonesimulator/library4Test.build/Objects-normal/i386/library4Test.LinkFileList -mmacosx-version-min=10.5 -framework Foundation -framework UIKit -framework CoreGraphics -llibrary4_1 -o /Users/test/Documents/Testing/library4Test/build/Debug-iphonesimulator/library4Test.app/library4Test
Undefined symbols:
"_objc_msgSendSuper2", referenced from:
-TestViewController didReceiveMemoryWarning in liblibrary4_1.a(TestViewController.o)
-TestViewController viewDidUnload in liblibrary4_1.a(TestViewController.o)
-TestViewController dealloc in liblibrary4_1.a(TestViewController.o)
"__objc_empty_vtable", referenced …Run Code Online (Sandbox Code Playgroud) 我按照这些说明在升级到XCode 4之后如何让10.4 SDK使用PPC.我能够编译,但是在链接时出错.
作为一个额外的皱纹,我不是使用XCode本身,而是使用它附带的gcc工具链.(这是使用makefile的大型跨平台项目的一部分.)
这是一个示例makefile:
CXX=g++-4.0
CXXFLAGS=-arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4
helloworld: helloworld.o
$(CXX) $^ -o $@ $(CXXFLAGS)
Run Code Online (Sandbox Code Playgroud)
使用helloworld.cpp:
#include <stdio.h>
int main(void) {
printf("hello world \n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是它的输出:
$ make
g++-4.0 -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -c -o helloworld.o helloworld.cpp
g++-4.0 helloworld.o -o helloworld -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4
ld: in /Developer/SDKs/MacOSX10.4u.sdk/usr/lib/crt1.o, in section __TEXT,__text reloc 1: sectionForNum(4) section number not for any section for architecture ppc
collect2: ld …Run Code Online (Sandbox Code Playgroud) 有没有人(这里)知道Windows 8是否会有一种可以用Visual Studio 2012编译的胖程序,它将在ARM和x86机器上得到支持?我猜不是,因为你不能创建将执行32位或64位代码的胖二进制文件,据我所知(只有我知道的解决方案是32位可以动态创建64位可执行文件).
似乎微软有助于扩展exe或为Windows 8及更高版本创建一个胖二进制格式,至少可以为Window的扩展平台调色板编译单个可执行文件.
编辑:以下链接显示如何在第一个开发预览中编译ARM exe.想我会补充一点,因为它没有提供任何脂肪二进制支持,但它也是游戏的早期.我不认为现在没有把它作为一种可能性.编译ARM
我有一个第三方库(Xerox有限状态工具的接口)作为通用二进制文件,内部有两个变体:PPC和i386变体.我还有一个Python接口(使用ctypes).
但是当我尝试运行Python接口提供的示例代码时,我得到一个错误抱怨库是错误的架构:
ImportError:dlopen(/Users/arne/sw/lib/libxcfsm.dylib,10):找不到合适的图像.找到了:
/Users/arne/sw/lib/libxcfsm.dylib:mach-o,但架构错误
从我可以收集的内容来看,这是因为除了我的库中的两个版本之外,python可执行文件内部还有一个x86_64变体,并且更喜欢在该模式下运行.有没有办法让我强制python可执行文件启动i386版本而不是x86_64版本,只是为了一些脚本?
我用xcode中的窗口模板创建了一个通用应用程序.现在我想提交我的应用程序的iPad版本,因为iPhone版本还没有完全编程.
这怎么可能?我需要改变什么?(目标设置,info.plist等?)
我有一个项目配置(我认为)生成通用二进制文件.基本SDK设置为3.2,部署目标设置为3.1.目标设备系列是iPhone/iPad,架构是armv6 armv7.
关于这个Universal二进制文件是如何工作的,我有几个问题:
1)当我想提交应用程序二进制文件以供审阅时,我应该将哪些配置设置为构建目标?如果我将其设置为"设备 - 3.1",我会收到警告"warning: building with Targeted Device Family" that includes iPad('1,2') requires building with the 3.2 or later SDK".但是,如果我使用SDK 3.2构建,它是否仍然可以在带有OS 3.1的iPhone上运行?什么是适合设备和架构的配置(arm6/arm7)?
2)如何测试上面的场景(使用SDK 3.2构建,但安装在运行OS 3.1的设备上)?如果我使用SDK 3.2构建,当我尝试将其安装在带有OS 3.1的手机上时,我会收到错误消息,说明手机的操作系统未更新.
谢谢!
Apple的通用二进制概念允许轻松发送包含32位和64位二进制版本的单个文件.
虽然这在使用FatElf的Linux中是可行的,但默认情况下FatElf和通用二进制的概念并没有在内核中出现?
这背后的原因是什么?为什么内核开发人员认为在Linux上使用通用二进制文件是个坏主意?
更新
我不是在寻找讨论.假设通用二进制文件不是主要Linux内核的一部分.我只是在问它背后的原因.
我有一个胖iOS库,它支持真实设备(arm64...)和Intel Mac(x86_64)的iOS模拟器。但当我改用 M1 mac 时,事情就变得困难了。
如果我使用旧的库,我将失败并显示错误xxx.a (xxx.o) building for iOS Simulator, but linking in object file built for iOS, file 'xxx' for architecture arm64: . 看来我必须构建一个 xcframework,其中包含用于不同目的地的二进制文件。
所以我尝试构建不同的切片并希望将它们捆绑为 xcframework。但我最终发现我不知道如何用 M1 Mac 构建 x86_64 切片。
我的问题是