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的原理或详细介绍。首先,什么是四合院?四合院是传统的中国建筑形式,常见于北京和北方地区。四合院强调和谐的生态环境和空间组合,以及亲密的家庭互动。它
2023-06-05
自己做的app要署名吗
做一个app的过程中,很多人会问自己一个问题,就是做完一个app后是否要在应用商店中署名呢?首先需要说明的是,这个问题并没有一个明确的答案,因为不同的人、不同的情况下,对于署名的要求也是不同的。在这里我将从两个方面来阐述这个问题:第一,做app是否必须署名
2023-06-05
自己做猜歌名的app
猜歌名的app是一款非常受欢迎的娱乐性质的软件,通过听歌、看歌词、看图片等形式来猜测歌曲的名称,一直备受人们喜爱。下面,我将介绍自己如何开发一个猜歌名的app。首先,猜歌名的app需要连接音乐库来获取歌曲资源,这需要使用第三方API的方式进行获取。这里我们
2023-06-05
自己做一个外卖app
现如今,随着互联网技术的迅猛发展,外卖市场也越来越火爆。大家在生活中经常使用的手机APP,是满足大家外卖需求的重要工具之一。如果您也有一定的编程基础,那么自己制作一个外卖APP也不难,这里我将为大家简单介绍一下制作外卖APP的原理和方法。1. 前期准备工作
2023-06-05
自己制作app能挣多少钱
自己制作App能否挣钱,每个人的想法和目的都不一样。有人想通过自己做一个app来实现一些自己的梦想,有人想通过app来进行推广,有人也会将app作为一种赚钱的途径。无论想法如何,我们都知道自己制作的App能够赚钱的前提是想法独到,应用场景有切实需求,而市场
2023-06-05
自己也能app制作
你是否想过创建自己的应用程序(App)? 在过去,这需要有编程经验的开发人员才能完成。 当然,要成为一个开发人员需要时间,精力和经验。 但是,现在随着技术的进步,普通人也可以创建自己的应用程序。这个原理就是所谓的应用程序制作器(App builder)。在
2023-06-05
自贡开发app犯法吗
自贡开发app并不犯法,但要注意遵守相关法律法规和规范。下面我们来详细介绍一下相关原理。首先,开发app属于软件开发,是一项普通的商业活动,其法律地位和其他普通商业活动并无不同,可以在符合国家相关法律法规的情况下进行。国家对于软件开发有一系列法律法规的规范
2023-06-05
想自己开发一款app
开发一款app可能听起来很复杂,但其实只需要遵循一些步骤就能够实现。在这篇文章中,我将向您介绍开发一款app的基本原理。首先需要明确的一点是,app开发并非只有程序员才能做到。无论您是设计师、产品经理还是开发者,都可以参与到app的开发中来。这里我将讨论的
2023-05-31
什么做自己的app
现在APP的普及已经成为了人们日常生活中离不开的一部分,但是很多人也许不知道,其实你也可以自己动手制作一款APP。这里我们就来详细介绍一下自己制作APP的原理及步骤。首先,你需要明确自己要制作的APP的类型和目的。你想要制作一个游戏APP,还是一款工具类A
2023-05-31
开发app究竟是自建团队
开发一个App需要一个专业的团队来负责各个方面的工作,例如产品策划、UI/UX设计、程序开发、测试、运营和市场推广等等。但是,是否需要自建团队还要根据实际情况和需求来决定。如果您是一家创业公司,而且您的App是您的核心产品,那么您需要自建一个专业的团队来承
2023-05-30
海尔自建app
海尔是一个著名的家电品牌,其产品包括冰箱、洗衣机、空调等等。为了更好地服务客户,海尔推出了自己的APP,该APP不仅提供了海尔产品的详细信息和使用技巧,还可以实现产品联网控制、预约维修等功能。以下是该APP的原理和详细介绍。一、原理海尔APP的原理主要涉及
2023-05-30
0基础如何开发属于自己的app
开发一个自己的APP,对于0基础的新手来说,首先需要了解APP开发的基本流程和原理。APP开发需要考虑的方面很多,但总体分为四个步骤:需求分析,设计,开发,测试。第一步:需求分析在需求分析阶段,需要明确开发的APP的类型、目标用户、定位和功能特点。考虑以下
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1