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,需要提供各种动画制作所需的工具和素材,以便用户使用。例如,制作2
2023-06-05
自己做的网站怎么弄成app
将自己做的网站变成应用程序(App)有很多方法,我们可以通过直接开发原生应用程序,将网站包装成混合应用程序,使用开发平台,或转换器,将网站转换成原生应用程序。在此,我们将详细介绍使用转换器将网站弄成App的原理和步骤。一、什么是转换器?转换器是一种软件工具
2023-06-05
自己手机制作班徽app
要制作一个班徽APP,需要掌握一些基础技能和知识。 首先,学习如何使用移动应用程序开发工具,例如Android Studio或Xcode等工具。其次,需要掌握基本的编程语言,例如Java、Swift或Kotlin等。最后,你需要了解一些基础的UI设计技巧和
2023-06-05
自动聊天的app开发
自动聊天的app是一种能够自行进行对话、解答问题的人工智能应用,它通过快速反应、多场景理解、情感理解等技术,能够和用户进行真实的交互。下面介绍一下自动聊天的app的开发原理及其详细介绍:1. 自然语言处理(NLP)自动聊天的app最主要的技术基础是自然语言
2023-06-05
制作属于自己的手机app
随着智能手机的普及和人们对移动应用的需求不断增加,制作属于自己的手机应用程序已经成为越来越多人的梦想。本文将对如何制作属于自己的手机App进行简单介绍。一、认识开发平台为制作手机应用,需要了解手机应用开发平台。iOS和Android是目前最流行的移动平台,
2023-06-05
制作并运营属于自己的app
制作并运营一款属于自己的APP是一项非常有挑战性的任务。不仅需要掌握软件开发技能,还需要深入了解用户需求和市场趋势,以确保APP的质量和用户体验。下面是一些关键步骤和原理,帮助你更好地制作和运营属于自己的APP。一、确定目标受众和需求在制作APP之前,首先
2023-06-05
用自己制作的app转账
想象一下,当你在出门前或者旅游时,你需要转账付款,你可能会打开网银、手机银行等等应用程序完成这个过程。但是,如果你是一个程序员,并且对自己的安全性、隐私和数据保护有更高的期望,又或者你需要通过某些特定的付款方式来完成转账,那么自己制作一款app可能是个不错
2023-06-05
小说封面怎么自己制作app
小说封面对于一本书的吸引力非常重要,适当的设计能够让读者产生购买欲望,提高书籍的销量。如何自己制作小说封面呢?下面就为大家介绍一些app制作小说封面的原理和详细步骤。首先,我们需要了解小说封面的设计原则。一个好的小说封面应该是能够引起读者兴趣的,因此需要符
2023-05-31
小组自己做c语言app
如果您是一个正在学习 C 语言编程的初学者,那么自己开发一个 C 语言 App 是一个很好的学习方式,它能够让您更深入地了解 C 语言的编程框架和基本语法,并帮助您提高自己的编程技能。在此,我们将介绍如何自己开发一个 C 语言 App,包括如何构建基础框架
2023-05-31
可以自己制作的漫画app
在技术飞速发展的今天,制作漫画的方式也在不断革新和拓展。自己制作漫画的app也成为了不少爱好者和制作者们的梦想。那么,如何自己制作一个漫画app呢?接下来,我将为大家介绍几种常见的制作原理和详细的步骤。一、基于模板制作这种制作方式最容易实现,特别适合初学者
2023-05-30
简单免费自建苹果app
自建苹果App的方式有很多,这里将介绍一种简单且免费的方法。需要注意的是,本方法需要下载一些第三方工具,可能会涉及到一些风险,请自行考虑风险并谨慎操作。1. 注册苹果开发者账号首先需要去苹果官网注册一个开发者账号。注册成功后,需要在设置中创建一个APP I
2023-05-30
iphone自带app制作vlog
iPhone 是一款非常流行的智能手机,而且它的操作系统 iOS 也非常流行。在 iPhone 上,自带的应用程序非常丰富,包括了一些制作 Vlog (Video Blog)的应用程序。本文将介绍如何使用 iPhone 自带的应用程序制作 Vlog。 首先
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1