美文网首页
iOS 库和M1进程

iOS 库和M1进程

作者: asaBoat | 来源:发表于2022-05-05 12:48 被阅读0次

问题

image.gif

M1进程运行模式:

•Apple
•Intel

swiftmodule架构种类(部分):

•arm64-apple-ios-simulator
•arm64-apple-ios
•x86-apple-ios-simulator
•传统arm64(以下简称arm64)
•传统x86(以下简称x86)

提醒:
x86-apple-ios-simulator 和 传统x86 说法相同
arm64-apple-ios 和 传统arm64 说法相同

测试

在Xcode正常默认设置下、运行在Apple模式下

测试1

正常源码工程 (Excluded: arm64 ,Pod 工程 和 项目工程同步 )
运行(编译)模式:模拟器
模拟器进程:Apple( Rosetta 方式 => intel)
App进程类型:Intel

image.gif

测试2

正常的源码工程(非Excluded: arm64 )
运行(编译)模式:模拟器
模拟器进程:Apple( Rosetta 方式 => intel)
App进程类型:Apple

image.gif

分析

在上述情况下,经测试:模拟器运行模式不影响 app运行方式。

那么 经测试,默认情况下,app运行模式 受xcode运行模式影响?

•默认情况下,Xcode 运行在 Apple模式,build Active Architecture Only时,Xcode只选择 arm架构为Active(活跃)架构, 只编译 arm架构的动态库(例如:arm64-apple-ios-simulator);当excluded arm64之后,Xcode只选择 x86架构为Active(活跃)架构(例如:x86-apple-ios-simulator,和传统意义上的x86架构一样);

•通过Rosetta 方式运行Xcode,build Active Architecture Only时,Xcode只选择 x86 架构为Active(活跃)架构, 只编译 x86架构的动态库;

在使用古老的静态库时,其架构 包含 x86、arm64(用于真机),没有arm64-apple-ios-simulator,因此运行模拟器时,编译器只能选择链接 静态库 x86 架构部分,形成app macho,因此就需要查找 x86架构的动态库进行链接,整个app也将运行在intel模式下,而x86-apple-ios-simulator的动态库(编译阶段产出)是没有的,所以报错。

解决方案

•Excluded arm64
•Rosetta 方式运行Xcode
•全架构编译Pod库
•三方库更新架构

全架构编译Pods库结果如下:

image.gif

其他测试

Excluded: arm64
运行(编译)模式:真机设备
App 无法运行 64 架构设备

image.gif

正常的源码工程(非Excluded: arm64 )
运行模式(编译):真机设备
App进程类型:Apple?

image.gif
image.gif

相关文章

  • iOS 库和M1进程

    问题 image.gif M1进程运行模式: •Apple•Intel swiftmodule架构种类(部分): ...

  • 进程、线程、多进程、多线程、任务、队列、NSThread、GCD

    推荐阅读:备战2020——iOS全新面试题总结 进程 线程 进程和线程的关系 多进程 多线程 任务 队列 iOS中...

  • 静态库与动态库

    在iOS中,库分为静态库和动态库,它是程序代码共享的方式。 iOS静态库的形式:.a和.framework iOS...

  • iOS音频基础概念-(1)

    一、音频相关的iOS类库 1、音频相关的iOS类库 使用AVAudioSession负责调解APP和iOS系统里面...

  • iOS内存映射mmap详解

    进程和线程? 因为后面的知识涉及到进程,所以我们先来简单了解一下进程和线程。下面的内容摘自iOS-线程&&进程的深...

  • python 百天学习之十三天 进程和线程 锁的使用

    练习1:理解使用进程和不使用进程的区别: 练习2: 线程库的封装与调用 库的封装 库的调用: 练习3:线程的基本使...

  • Apple M1芯片 自动打包问题解决方案 Xcode 12 i

    iOS Apple 设备更换为M1芯片后,iOS 项目自动化打包报错 关键词 "Provisioning prof...

  • iOS进程和线程

    进程 进程是指在系统中正在运行的一个应用程序,每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内,i...

  • iOS进程和线程

    进程:进程是处于运行过程中的程序,是系统资源分配和调度的一个独立单位,简单的理解就是用来帮程序占据一定的存储空间的...

  • iOS进程和线程

    1. 什么是程序、进程、线程 1.1 程序: 由源代码生成的可执行应用。(例如:QQ.APP) 1.2 进程: ...

网友评论

      本文标题:iOS 库和M1进程

      本文链接:https://www.haomeiwen.com/subject/yfgbyrtx.html