ios自己制作的动态库占用app大小

动态库是一种可执行的二进制代码库,它可以在应用程序运行时被加载。与静态库不同,动态库只需要被载入一次,就可以供多个程序连接和使用,从而节省了内存空间。而在iOS开发中,动态库也是很常见的且非常有用的一种代码组织方式。那么,自己制作的动态库会占用App的多少空间呢?本文将从原理和详细介绍两个方面来进行阐述。

## 原理

首先我们来了解一下iOS应用的架构。在iOS应用的模块化开发中,有两种组织代码的方式,即静态库和动态库。而这两种代码组织方式的具体实现其实是用来进行代码复用的,使得不同的应用可以共享同一个代码库,从而减少代码冗余。

静态库是在编译期间将库的二进制文件打包到应用程序中的,这意味着,每个应用程序都必须独立包含库的代码,因此在应用程序中会出现多个相同的库的副本,很浪费存储空间。相反,动态库编译期间并不将库的二进制文件打包到应用程序中,而是在运行时动态地被载入,这意味着多个应用程序可以共享同一个库,从而节省存储空间和运行时开销。

那么,自己制作的动态库占用App空间的大小如何呢?很明显,如果你在开发一个应用程序时添加了一个自己制作的动态库,那么这个应用程序尺寸会变得更大。具体大小取决于这个动态库的大小和你添加的方式。

在 iOS 应用中,动态库分为两种:framework 和 dylib。前者是一个自包含的 Bundle,包含了一些首层 Objective-C 类和 Swift 模块。后者是一个较简单的二进制程序,包含了部分代码(非常量,非函数表)和一些符号,没有其它可用的资源。相比之下,framework 要占用更多的存储空间。

## 详细介绍

让我们来看一个实际的例子。假设你有一个MyFrameworks的工程,里面有一个hello函数的实现,代码如下:

```objc

void hello(void) {

NSLog(@"Hello from MyFrameworks");

}

```

那么,我们可以通过Xcode来创建一个名为MyFramework的动态库,步骤如下:

1. 在Xcode中创建一个新的工程。

2. 在导航栏选择File -> New -> Target。

3. 在弹出的窗口中选择iOS -> Framework & Library,选择Cocoa Touch Framework。

4. 为库指定名称,该名称是库在Xcode项目中显示和在代码中引用的名称。 建议使用独特的名称来避免与其他产品相混淆。

![创建动态库流程](https://img-blog.csdn.net/20180126101426157?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGsyMTYxNjYwNjk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/70)

完成之后,你会在File Navigator中看到一个名为MyFramework.xcodeproj的新项目,用于构建你的动态库。现在,你可以添加你的代码文件和相应的资源文件。

工程创建完成后,我们可以运行以下命令行,来查看这个动态库的大小:

```bash

$ cd MyFrameworks

$ xcodebuild -showBuildSettings -target MyFramework

```

通过命令行我们可以查看到MyFramework的详细构建信息,包括Framework文件的输出路径等。输出如下:

```bash

BUILD_DIR = /Users/lingbo/Library/Developer/Xcode/DerivedData/MyFramework-ahtptbtlfpdjgnfzinhxfoljgwbc/Build/Products

BUILD_ROOT = /Users/lingbo/Library/Developer/Xcode/DerivedData/MyFramework-ahtptbtlfpdjgnfzinhxfoljgwbc/Build/Products

BUILT_PRODUCTS_DIR = /Users/lingbo/Library/Developer/Xcode/DerivedData/MyFramework-ahtptbtlfpdjgnfzinhxfoljgwbc/Build/Products/Debug-iphoneos

CONFIGURATION = Debug

EXECUTABLE_FOLDER_PATH = MyFramework.framework

EXECUTABLE_NAME = MyFramework

FULL_PRODUCT_NAME = MyFramework.framework

PRODUCT_NAME = MyFramework

PROJECT_DIR = /Users/lingbo/XXXX/iOS-articles/MyFrameworks

PROJECT_FILE_PATH = /Users/lingbo/XXXX/iOS-articles/MyFrameworks/MyFramework.xcodeproj

PROJECT_NAME = MyFramework

PROJECT_TEMP_DIR = /Users/lingbo/Library/Developer/Xcode/DerivedData/MyFramework-ahtptbtlfpdjgnfzinhxfoljgwbc/Build/Intermediates.noindex/MyFramework.build/Debug-iphoneos/MyFramework.build

TARGETNAME = MyFramework

TARGET_BUILD_DIR = /Users/lingbo/Library/Developer/Xcode/DerivedData/MyFramework-ahtptbtlfpdjgnfzinhxfoljgwbc/Build/Products/Debug-iphoneos

TARGET_BUILD_DIR_QUIET_FLAG = -quiet

TARGET_NAME = MyFramework

TARGET_TEMP_DIR = /Users/lingbo/Library/Developer/Xcode/DerivedData/MyFramework-ahtptbtlfpdjgnfzinhxfoljgwbc/Build/Intermediates.noindex/MyFramework.build/Debug-iphoneos/MyFramework.build

TARGET_TEMP_DIR_QU... = -quiet

```

不难看出,在Debug模式下,生成出来的MyFramework.framework大约有2.1 K(即2KB)。

最后,在使用MyFramework动态库的应用程序中,你需要添加下面的代码以正确加载库:

```objc

#import

```

在iOS应用程序中,使用动态库的最大好处是减小其二进制大小。然而,动态库也有一些不足之处。例如动态库需要进行动态链接,而这个链接过程会增加启动时间。此外,在使用时还需要进行版本兼容性处理,否则会导致程序崩溃。此外,如果动态库中包含一些私有方法,也可能会导致AppStore审核不通过。

## 结论

总的来说,自己制作的动态库占用App的大小取决于这个动态库的大小,以及你添加的方式。相比于使用静态库,动态库可以减小App的二进制大小,使得同一个库在多个应用程序中可以共享使用。但是,动态库也有一些不足之处,需要注意使用时的兼容性和审核问题。在使用自己制作的动态库时,我们需要根据具体情况来选择合适的方式,以达到最佳的性能和用户体验。


相关知识:
自建电商app
自建电商App可以帮助企业或个人提高销售效率,提升用户体验,同时也是一个增加商家品牌曝光的途径。本文将介绍自建电商App的原理和详细步骤。自建电商App的原理自建电商App的原理是通过定制化开发手机应用程序,以实现电子商务的销售、营销等业务。手机App的优
2023-06-05
自己做个app
现在,人们越来越离不开手机,而手机上的应用程序(APP)更是成为我们生活、工作和娱乐不可或缺的一部分。如果你也想尝试自己制作一款APP,那么这篇文章会为你介绍APP制作的基本原理和步骤。1.确定APP的目的和功能在制作APP之前,首先要明确APP的目的和功
2023-06-05
自学做一个app需要多长时间
要自学做一个app需要一定的时间和耐心,但是这个时间会因为个人的能力和动机不同而有所不同。首先,要做一个app需要学习编程语言和开发工具。如果你对编程语言和计算机知识不熟悉,那么需要先学习编程语言的基本概念和构造,例如Java、Swift、Kotlin等,
2023-06-05
自己简易制作apple pencil
Apple pencil是一款用于iPad Pro的电子手写笔,可以在iPad上高精度、高解析度地书写、绘画和注释等。如果你想省下花费高昂的Apple pencil费用,或者懒得等待送到你手中,那么你可以自己动手制作一支类似的电子笔。原理介绍:Apple
2023-06-05
自己开发的外卖app可以吗
当今社会,随着互联网技术的飞速发展,外卖行业也在逐渐成熟。而线上订餐越来越受到人们的欢迎,许多人想要开发自己的外卖app来抓住这一趋势。下面我将分几个方面来介绍如何开发一个属于自己的外卖app。一、市场调研在开发自己的外卖app之前,必须要进行市场调研。市
2023-06-05
自己开发一款app怎么操作
开发一款app需要遵循一定的流程和原则,以确保最终的产品可以满足用户的需求并且具有良好的用户体验。下面是一些详细介绍。第一步:确定目标和需求在开始开发app之前,首先需要明确开发目标和需求。这包括确定app的用途、目标用户、功能要求、技术要求、安全要求等。
2023-06-05
自贡交通app开发多少钱
自贡交通app是一款基于移动互联网的智能交通服务平台,提供了多种交通服务功能,包括公交查询、实时路况、停车场查询及预约停车、线上购票、租车等,可以方便用户出行和交通管理部门进行信息化管理。那么,自贡交通app的开发需要多少钱呢?自贡交通app开发的成本取决
2023-06-05
什么app自己制作彩铃
自制彩铃可能听起来很复杂,但实际上只需要几个简单步骤即可完成。下面,我们将详细介绍两种常见的自制彩铃的方法。方法一:使用“手机铃声制作助手”App“手机铃声制作助手”是一款轻便实用的手机应用程序,可以让你自己制作彩铃。这个应用程序有一个简单易用的界面,让你
2023-05-31
什么app可以自己做漫画
现在,越来越多人喜欢看漫画和制作自己的漫画,而应用程序成为实现这一目标的最佳工具之一。下面将详细介绍一些可以自己制作漫画的应用程序和它们的原理。1. Sketchbook Pro这是一个功能强大的工具,可以绘制图像、漫画和插图。Sketchbook Pro
2023-05-31
如何零基础自己开发app
开发一款app需要有一定的编程技能和相应的开发环境,但是对于零基础的读者来说,这些可能会感到有些困难。在这篇文章中,我们将介绍一些关于开发app的基础知识和步骤,为初学者提供指引。第一步:确定app的目的和功能在开始开发app之前,你需要确定你的app的目
2023-05-30
如何制作自己的选股app
随着互联网技术的快速发展,自己制作一款选股App的难度也在不断降低,下面将会从原理和详细介绍两方面进行讲解。原理:选股App的核心原理就是数据抓取和数据分析。数据抓取依赖于网络爬虫技术,可以爬取股市相关的各种数据,包括但不限于个股数据、行情数据等等。而数据
2023-05-30
开发一款自己的app
开发一款自己的app是一个创新的想法,不仅可以实现自己的想法,还可以通过将它发布到各个应用商店中,让更多的人使用它,从而成为一个有用的工具或应用程序。但是,开发一款自己的app并不是一件容易的事情,需要有一定的技术知识和经验,在本文中我将分享我自己开发一款
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1