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,是一款可以帮助用户自主录入、管理和背诵单词的应用程序。通过该应用,用户可以参照著名词典或者自己的学习资料,将单词及其意思进行录入,并制定相应的背诵计划,方便自己学习英语单词。下面详细介绍该应用的实现原理。一、数据源的获取自建单词库的ap
2023-06-05
自己做一个app怎么做ps
在如今的移动互联网时代,APP已经成为人们不可或缺的软件之一。许多人想自行开发一个APP来实现自己的想法,但是由于缺乏相关知识,很多人并不知道该如何来操作。开发APP涉及到多个方面的技术,其中一个重要的方面就是应用程序的设计。一款设计良好的APP可以提高用
2023-06-05
自己制作英语学习app
要自己制作一款英语学习app,首先需要一些基本的知识和技能,比如编程语言、UI设计等等。以下是制作英语学习app的基本流程和步骤。1. 设计app的功能和界面在开始制作app之前,需要先明确自己想要实现的功能和界面设计。例如,你的app中可能有一个主页、练
2023-06-05
自己制作社区app教程
社区app是现代社交网络中的一种,让用户可以在其中创建个人资料、发布消息、评论和私信,以及加入或创建不同的群组。今天我们来介绍如何自己制作社区app。第一步:确定目标和需求在开始之前,您需要梳理一下目标和需求。如果你是一个初学者,你可以先尝试做一个简单的社
2023-06-05
自己制作app的软件工具
如今,我们生活在移动互联网时代,手机app已成为人们生活和工作中必不可少的工具。很多人认为制作app需要极高的技术和编程能力,其实并不是这样。现在有很多简单易用的软件工具,可以让任何人都能制作出属于自己的app。首先,我们需要了解app的制作原理。app的
2023-06-05
怎样制作自己的网站app
制作自己的网站app可以提高网站的用户体验,让用户更方便地访问网站内容。一般来说,有两种方式可以制作网站app,分别是Web App和Native App。一、Web AppWeb App是指基于Web技术开发的应用,可以直接在网页中打开使用。其原理是通过
2023-06-05
同花顺app自建板块指数
同花顺是国内较为知名的证券软件,提供了丰富的金融信息和实时行情。其中自建板块指数是其中一个十分常用的功能。下面将具体介绍同花顺自建板块指数的原理和使用方法。首先,什么是板块指数?板块指数就是指对某个行业或某些相关股票定向挑选进行加权、编制成的指数,如上证5
2023-05-31
锁屏app自己制作
锁屏app是一种用于安卓手机的应用程序,它能够让手机在屏幕开启的情况下自动锁定,以保护手机的隐私和安全。在本文中,我们将介绍如何自己制作一个锁屏app。锁屏app的原理在操作系统层面,锁屏app通过修改系统层面的设置参数来实现锁定屏幕,通常是使用Java代
2023-05-31
如何自学制作手机app
自学制作手机app是一个相对来说比较有难度和挑战性的任务,但是只要你有耐心和恒心,对于探索新领域的兴趣,以及对于计算机编程以及移动端开发的喜爱,那么这个目标就不是遥不可及的了。以下是一些详细介绍,可以帮助你开始迈出学习制作手机app的步伐。一. 学习编程语
2023-05-30
如何做一个自己的小程序app
在如今这个不断发展的移动互联网时代,小程序一词已经不再是陌生的概念。小程序可以说是互联网上的一种新型应用,它融合了APP和H5的优点,不需要下载即可使用,也不占用手机空间,又能够提供丰富的服务和体验。那么,如何做一个自己的小程序APP呢?下面我将为大家详细
2023-05-30
可以自己开发app软件到应用商店吗
是的,任何有编程基础的个人或团队都可以开发自己的应用软件,并将其上传到应用商店。通常,这个过程可以分为以下步骤:1.确定应用类型和目标受众:在开始开发应用程序之前,您需要明确开发的应用程序类型和目标受众,并考虑如何使您的应用程序具有吸引力和独特性。2.选择
2023-05-30
app可以自己制作
随着移动互联网的发展,手机应用程序(App)成为人们日常生活中必不可少的一部分。对于企业来说,有一个自己的App也可以提高品牌知名度和用户粘性。那么,如何制作一款自己的App呢?本文将详细介绍制作App的原理和方法。**App的种类**在开始制作自己的Ap
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1