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开发的原理及相关工具。一、自助App开发的原理自助App开发的核心原理是:利用平台提供的
2023-06-05
做app拉新兼职对自己有坏处吗
随着智能手机的普及,移动应用已经成为人们日常生活中必不可少的部分。为了吸引新用户,许多移动应用开发商会设立拉新奖励机制,让用户在分享下载链接的同时还可以获得奖励金或者其他福利。而这也导致了一些人把做app拉新作为一种兼职方式来获取额外的收入。但是,这种行为
2023-06-05
自己做菜在app上卖赚钱吗
随着移动互联网的大力发展,互联网已经渗透到了各个领域,美食行业自然也不例外。现在,越来越多的人喜欢通过手机上的app点外卖进行解决饥饿问题。但是,随着市场的增长,各种生态系统也越来越多元化。有些人会选择将自己的厨艺进行产品化,自己做菜在app上卖赚钱。那么
2023-06-05
自己做的app怎么发到网上卖货呢安全吗
要想将自己做的App发到网上进行销售,首先需要明确的是需要经过一定的审核才能上线。这个审核是由各大应用商店(如苹果的App Store,谷歌的Google Play等)进行的,主要是为了保障用户的安全和权益。因此,在开发和发布自己的App时,必须要注重其安
2023-06-05
自己做屏保的app
屏保(screen saver)是一种在电脑屏幕空置一段时间后,自动启动并播放一些动画或图片等内容的程序。它可以帮助保护屏幕,避免屏幕长时间显示同样的图像而导致的“焊死屏幕”等问题。目前,很多操作系统和软件都自带了各种屏保效果,但是如果你想自己设计和制作一
2023-06-05
自己做一个安卓错题本app
安卓错题本app是一款记录学生错题并进行复习的应用软件。学生可以在上面记录自己学习过程中遇到的难题或者错题,方便自己日后进行查漏补缺。下面,我将为大家介绍如何自己做一个安卓错题本app。一、环境搭建首先,需要搭建安卓开发环境,包括安装并配置好Java环境、
2023-06-05
自己制作的app能赚钱吗
自己制作的app可以赚钱,但是这并不是绝对的,需要具备一定的条件。下面将对自己制作的app能赚钱的原理进行详细介绍。首先,制作app需要一定的技术和知识基础。你需要掌握一些编程语言,如Java、Swift等,并且需要了解一些开发工具和框架。如果你没有这方面
2023-06-05
我想自己做一个手机app
想要自己做一个手机app,需要具备一定的编程基础和计算机知识。手机app的开发可以分为三个阶段:设计、开发、发布。下面详细介绍一下做一个手机app的步骤和原理。首先,需要明确自己想做的app的类型和功能,这会决定后续的开发步骤。接下来就可以开始设计了。一、
2023-05-31
适合宝妈做的自媒体app
随着移动互联网的快速发展,自媒体成为了一个流行的创业领域。对于宝妈们来说,做自媒体不仅可以带来丰厚的收入,还可以利用自己的专业知识和经验为其他人提供帮助。本文将介绍适合宝妈做的自媒体app,包括原理和功能。1.微信公众号微信公众号是目前最流行的自媒体平台之
2023-05-31
如何自己做电脑app
如果你想做自己的电脑App,那么你需要有一定的计算机编程经验。下面我将介绍一些做电脑App的基本原理和步骤。一、选择开发工具和语言在做电脑App的时候,需要选择一种合适的编程语言和开发工具。常见的编程语言有Java、C#、Python等等。开发工具则有Vi
2023-05-30
如何做个属于自己的app
想要拥有一个属于自己的app,可能让很多人感觉到非常遥远和困难。但实际上,只要掌握了一些基础的知识和技能,就可以轻松地做出自己的app了。下面,我将为大家提供一些原理和详细介绍。1. 确定app的目标和功能首先,你需要确定你的app的目标和功能。也就是说,
2023-05-30
根据食材自动出菜谱的做法app
随着人们对健康饮食的重视程度不断提高,越来越多的人开始注重自己的饮食品质和营养均衡。而对于很多人来说,根据不同的食材来搭配出一份平衡的菜谱可能会有些困难。于是,一些出菜谱的APP应运而生,可以帮助用户根据有限的食材,智能地推荐出搭配合理、营养均衡的菜谱,不
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1