标签: universal-binary

一个XCode项目,两个目标,两个应用程序(iPhone/iPad)不是通用应用程序

我们有一个XCode项目,它首先构建为一个通用应用程序,然后在路上我们改变了我们的想法,让两个应用程序在同一个二进制文件中,所以我们创建了两个目标.

  1. 第一个称为:AppName,适用于iPhone:基本SDK为4.2,部署目标为3.1.3.目标设备是iPhone.
  2. 第二种叫做:AppNameHD,适用于iPad:基本SDK为3.2,目标设备为iPad.

现在已经有几个星期了,我们可以轻松构建这些平台,并能够在iPad和iPhone上进行部署.

现在我们准备提交到应用程序商店,我担心可能会拒绝代码.我们现在想要提交仅限iPad的应用程序,但我环顾四周,itunesconnect网站上没有任何地方我可以指定目标设备,并且项目的结构首先是一个通用应用程序.我想知道他们如何确定在哪个设备上测试二进制文件.

有关架构的更多信息:我们正在为两个目标使用默认生成的info.plist文件.我们是否应该为每个目标设置单独的info.plist?两个.plist文件之间应该存在什么差异.

这里附有我们正在使用的实际info.plist文件.

感谢您的帮助.在此输入图像描述

iphone xcode universal-binary ipad

11
推荐指数
1
解决办法
1万
查看次数

将ipad应用转换为在iphone上运行(通用应用)

我有一个工作的iPad应用程序,我现在需要在iPhone上工作.我一直在阅读这方面的一些内容,但没有找到一个好的答案.在这个网站上,我看到了一些讨论......但同样,没有明确的答案.

有谁知道任何教程?我已经在我的代码中捕获了它是否是ipad - 所以它已经准备就绪 - 我只需要在我的iphone上测试它!

谢谢你的任何信息

iphone universal-binary ipad

10
推荐指数
1
解决办法
8736
查看次数

如何构建通用的ios静态库

我正在尝试构建一个可以与ios3.x和ios4.x一起使用的静态库.我可以使用ios3.0构建一个静态库,它可以在ios3.0中与另一个项目一起使用,但不能在ios4中编译.从ios4到ios3也是如此.

以下是重新创建的方法:

  1. 打开XCode 3.2.4并启动一个名为Library4的Cocoa Touch静态库的新项目
  2. 单击classes文件夹并创建一个名为"TestViewController"的新UIViewController
  3. 右键单击Frameworks文件夹,添加现有框架,选择UIKit
  4. 在左侧面板中,展开目标,右键单击我的库目标,然后单击获取信息.更改为所有配置,将基本sdk更改为iphone模拟器4.0,将ios部署目标更改为ios3.0
  5. 单击带有二进制文件的链接库文件夹.在右侧窗格中,将两者的角色更改为"Weak"
  6. 建立图书馆
  7. 打开Xcode 3.2.2并启动一个名为Library4Test的基于View的新应用程序
  8. 将TestViewController.h复制到classes文件夹
  9. 将libLibrary4.a文件复制到frameworks文件夹.它会自动添加到目标的链接器阶段
  10. 右键单击Library4Test Target并单击获取信息.在其他链接器标志中,添加"-ObjC"和"-all_load"
  11. 在app delegate header中添加Import"TestViewController.h"
  12. 在app delegate header的应用程序的didFinishLaunchingWithOptions方法中添加

    TestViewController*test = [TestViewController alloc] init;

  13. 使用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)

iphone xcode static-libraries universal-binary ios

8
推荐指数
1
解决办法
7489
查看次数

升级到XCode 4后无法链接ppc

我按照这些说明在升级到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)

macos xcode powerpc universal-binary xcode4

8
推荐指数
1
解决办法
1631
查看次数

Windows 8胖二进制文件(exe for x86和ARM)

有没有人(这里)知道Windows 8是否会有一种可以用Visual Studio 2012编译的胖程序,它将在ARM和x86机器上得到支持?我猜不是,因为你不能创建将执行32位或64位代码的胖二进制文件,据我所知(只有我知道的解决方案是32位可以动态创建64位可执行文件).

似乎微软有助于扩展exe或为Windows 8及更高版本创建一个胖二进制格式,至少可以为Window的扩展平台调色板编译单个可执行文件.

编辑:以下链接显示如何在第一个开发预览中编译ARM exe.想我会补充一点,因为它没有提供任何脂肪二进制支持,但它也是游戏的早期.我不认为现在没有把它作为一种可能性.编译ARM

windows x86 arm exe universal-binary

8
推荐指数
1
解决办法
2433
查看次数

以32位模式运行OS X通用二进制文件

我有一个第三方库(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版本,只是为了一些脚本?

python macos universal-binary

7
推荐指数
1
解决办法
4427
查看次数

将通用应用程序作为仅限iPad的应用程序提交给Apple

我用xcode中的窗口模板创建了一个通用应用程序.现在我想提交我的应用程序的iPad版本,因为iPhone版本还没有完全编程.

这怎么可能?我需要改变什么?(目标设置,info.plist等?)

xcode submission universal-binary ipad

7
推荐指数
1
解决办法
8434
查看次数

构建/测试通用iPhone/iPad应用程序

我有一个项目配置(我认为)生成通用二进制文件.基本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的手机上时,我会收到错误消息,说明手机的操作系统未更新.

谢谢!

iphone universal-binary ipad

7
推荐指数
1
解决办法
1万
查看次数

为什么Universal Binaries/FatElf不属于Linux内核?

Apple的通用二进制概念允许轻松发送包含32位和64位二进制版本的单个文件.

虽然这在使用FatElf的Linux中是可行的,但默认情况下FatElf和通用二进制的概念并没有在内核中出现?

这背后的原因是什么?为什么内核开发人员认为在Linux上使用通用二进制文件是个坏主意?

更新
我不是在寻找讨论.假设通用二进制文件不是主要Linux内核的一部分.我只是在问它背后的原因.

linux universal-binary

6
推荐指数
1
解决办法
1549
查看次数

如何在M1 mac上构建支持Intel mac上的iOS模拟器的静态库?

我有一个胖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 切片。

我的问题是

  • 如何在M1 mac上构建支持Intel Mac的iOS模拟器的静态库?
  • 还是我一开始的想法就错了?

xcode universal-binary ios apple-silicon apple-m1

6
推荐指数
1
解决办法
2445
查看次数