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 Maker。本文
2023-06-05
做自媒体用什么app好用点
自媒体是一种得到了普及的媒介形式,尤其在互联网时代。它可以让人们把自己感兴趣的故事、热点等内容发布到各种社交平台上,拥有自己的高流量和受众群体。这种互动的方式,不仅可以满足人们表达自我的需求,同时也有可能通过自媒体赚取可观的收入。自媒体涵盖了各种形式的媒体
2023-06-05
自己做的模板怎么上传到快影app
快影app是一款集视频拍摄、剪辑、特效等功能于一体的视频编辑软件,用户可以通过快影app制作自己的短视频,并分享到社交平台上。快影app同时还提供了丰富的模板供用户使用,但是如果用户有自己喜欢的模板,也可以通过上传自己的模板来进行使用。下面详细介绍自己做的
2023-06-05
自学做app开发
移动应用程序(APP) 开发一直是一门热门的技术,app 的打造能让人从无到有创造并发布自己的想法,而现今市场上APP应用异常火爆,而且APP应用行业所需的岗位需求量也在不断上升。因此,学习APP的开发技术是值得每个人去投资的。1. 需要什么技能?要学习A
2023-06-05
自主开发app项目
自主开发app项目,需要先了解app的开发原理和流程,若没有经验可先学习相关技术知识,如移动端开发技术、UI设计、数据库等。接下来,将以iOS app开发为例,介绍自主开发app项目的详细介绍。1. 确定需求和设计UI首先,需要确定app的需求,了解用户需
2023-06-05
自己开发的购物app取名
在开发一个购物App时,取名是一个极其重要的步骤,一个好的名称不仅仅能引起用户的注意,更能让用户记住并喜欢使用这个App。下面介绍一些取名原则和建议。1. 简短易记一个好的App名字应该是简洁明了的,易于用户记忆和查询,并且能够展示出您的品牌和产品的主要特
2023-06-05
自己可以制作海报的app
现在越来越多人需要海报,无论是用于广告宣传还是个人活动,例如聚会、生日或婚礼等。很多人也不愿意花费高昂的费用请设计师来制作海报,更希望自己能够简单方便地设计和制作海报。那么,如何制作一个可以制作海报的app呢?以下是一些基本的原理和详细介绍:一、基本原理1
2023-06-05
自己做app控制wifi模块
现代科技越来越普及化,我们离不开手机和智能设备,其实我们也可以自己动手制作一些智能设备,比如自己制作一款可以控制WiFi模块的app。下面我将为大家介绍自己制作app控制wifi模块的原理和详细步骤。原理Wifi模块是一种可以接收wifi信号并进行数据传输
2023-06-05
自己做app能发布在苹果应用商店吗
苹果应用商店,即App Store,是苹果公司在iOS操作系统上提供的正式应用下载平台。在iOS生态系统中,苹果应用商店是最核心的一环。因此,很多开发者都想将自己开发的应用发布在苹果应用商店上,以便获取更多用户和收益。然而,要在苹果应用商店上发布自己的应用
2023-06-05
可以做自媒体赚钱的app
自媒体赚钱app是指用户通过上传自己的原创文章、视频或图片等内容,通过平台的推广和流量变现,从而获得收益的一种应用程序。下面将介绍三种常见的自媒体赚钱app以及其运营原理。一、微信公众号微信公众号是自媒体最常用的渠道之一,通过微信公众号用户可以上传自己的原
2023-05-30
开发板设置开机自启app
在开发板中设置自启动应用程序是一项非常重要的任务,特别是在需要让应用不间断地运行的场景下,它更是必不可少的工作。开发板自启动功能可以让用户省略了手动操作的烦琐过程,直接运行目标程序,从而提高了工作效率。下面,我们将详细介绍开发板设置开机自启动应用程序的原理
2023-05-30
app自己开发需要什么软件好
如果你想开发一款自己的手机应用程序,你需要掌握一些特定的编程知识和软件工具。 开发一款应用程序可能需要一些特定的软件工具,主要包括编程语言、IDE(集成开发环境)、SDK和调试工具。1.编程语言要开发一款应用程序需要掌握至少一种编程语言,例如Java、C+
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1