我可以将二进制文件从设备更改为模拟器构建吗? - iOS

问题描述 投票:0回答:2

我有一个应用程序包无法在我的模拟器上运行(因为它是为设备构建的)

我可以在(捆绑包)内更改一行或编码或其他内容以使其在我的模拟器上工作吗?

ios iphone ios-simulator
2个回答
0
投票

不可以,您无法更改现有应用程序包(为设备构建)以在模拟器上运行。

iOS 设备使用 ARM 处理器,因此为设备构建的应用程序包包含 ARM 机器代码。该模拟器在 Mac 上运行,而 Mac 使用 Intel 处理器,因此为模拟器构建的应用程序包包含 Intel 机器代码。 Apple 不提供任何可以将 ARM 代码转换为 Intel 代码的产品。 (我也不知道其他地方有任何此类程序。)

由于应用程序包不包含应用程序的原始源代码,因此您也无法使用它来重新编译模拟器的源代码。


0
投票

是的,你可以!其实这并不难。

简单来说,如果你想将iOS设备框架转换为模拟器框架,可以通过以下四个步骤来完成:

  1. 如果您内部有更多可用架构,请使用 lipo 工具来精简arm64二进制文件(您可以使用
    lipo -info PATH_TO_BINARY
    进行检查:

lipo -thin arm64 PATH_TO_ARM64_FRAMEWORK -output binary.arm64

  1. 使用 vtool 修改二进制文件,并将平台更改为 IOSSIMULATOR (7),将 minos 和 sdk 更改为您喜欢的任何值:

vtool -arch arm64 -set-build-version 7 13.0 13.0 -replace binary.arm64 -output binary.arm64

  1. 使用 vtool 合并 x86_64 和新创建的 arm64 模拟器二进制文件并创建 fat 二进制文件:

lipo -create binary.arm64 PATH_TO_X86_64_BINARY -output PATH_TO_X86_64_BINARY

  1. 更新info.plist,将arm64添加到iOS Simulator二进制文件的SupportedArchitectures中。

         <key>SupportedArchitectures</key>
         <array>
             <string>arm64</string>
             <string>x86_64</string>
         </array>
    
© www.soinside.com 2019 - 2024. All rights reserved.