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上架赚钱的原理是什么呢?本文将介绍相关的知识点。1.应用商店介绍常见的应用商店包括苹果 App Store、Google Play、华为
2023-06-05
自己做泥的app
现在的市场上有很多的泥制品,但有时候我们想要自己动手做一些泥,所以有了做泥的app。做泥的app的原理就是提供一些简单易学的泥制作方法和配方。用户可以根据自己的需要选择适合自己的泥制作方法和配方。这些配方中主要是介绍了泥制作的原料,如玉米淀粉、食用色素等。
2023-06-05
自己做个app要多久
自己做一个app的时间取决于多方面因素,如你自己的技术水平、你要做的app的复杂程度、你有多长时间投入等等。在以下的介绍中,我们将讨论这些因素在时间估计中的作用,并提供一些有用的提示,以帮助你更好地规划自己做app的时间。一、技术水平当你决定做一个app时
2023-06-05
自学做衣服app
在当今时代,自学技能是非常普遍的,特别是在互联网的帮助下,我们能够更加便捷地获取知识。做衣服也不例外。如果你对衣服设计感兴趣,想学习如何自己设计和制作衣服,那么这篇文章就是为你准备的。我们会介绍一些开发自学做衣服的手机应用的方法和功能。首先,我们需要了解自
2023-06-05
自己怎样开发一款软件app
开发一款软件 app 首先需要确定开发语言和开发平台,然后进行项目需求分析,编写代码,测试,发布等一系列开发步骤。以下是详细介绍:1.确定开发语言和开发平台根据要开发的 app 功能需求,选择合适的开发语言和开发平台。例如,如果要开发安卓系统下的 app,
2023-06-05
自己可以制作贷款app吗
制作贷款App可以分为几个步骤,其中包括了计划和设计阶段、开发和测试阶段、发布和市场推广阶段。在这三个主要的阶段中,需求和规划是最重要的。计划和设计阶段:在开始计划和设计阶段前,需要制定一个完整的计划,其中包括了商业方案、市场调研、目标受众、竞争对手和发展
2023-06-05
怎么自己做app试玩平台
自己做APP试玩平台是一个非常有意义的项目,不仅可以提高自己的技术和经验,也可以为社区贡献一份力量。下面我将从原理和详细的介绍,来分享一下如何自己做APP试玩平台。一、原理APP试玩平台是一个让开发者将自己的APP上传到平台,让其他用户可以在平台上在线试玩
2023-06-05
如何自己制作同城app
要制作一个同城app,需要掌握一定的知识和技能。下面将介绍制作同城app的基本原理和步骤。一、确定需求和功能首先,要确定同城app的功能和需求,包括用户注册、登录、发布信息、查询信息、交易等。要考虑到用户的需求,加入一些必要的特色功能,比如可以加入定位功能
2023-05-30
如何借助别人的app开发自己
随着移动互联网的快速发展,App已经成为了越来越多人生活和工作中必需的工具。但是,对于很多人来说,并不具备开发一款App的技能和能力。所以,借助别人的App来发掘商机和创造自身价值成了一个不错的选择。在这篇文章中,我们将详细介绍如何借助别人的App开发自己
2023-05-30
开发app自己用如何做账
在开发 app 的过程中,如何进行账务的管理是非常重要的一点。本文将介绍如何在开发 app 自用时进行账务管理。首先,我们需要了解账务管理的原理。账务管理主要是通过记录收支流水、分类汇总、统计分析等方法来对自己的财务情况进行管理,以便更好地掌握资金流向,从
2023-05-30
河南自动量化交易app开发报价查询
自动量化交易是一种通过程序代码实现的交易方式,其目的是为了实现自动化的交易决策。河南自动量化交易app开发旨在为投资者提供程序化交易的工具,使其能够通过算法和技术指标来分析市场趋势和价格走势,以及实现自动化的交易操作。以下是详细介绍及报价查询:1. 原理介
2023-05-30
app软件自助开发
随着移动互联网的发展,越来越多的人开始关注并参与到app软件开发的行列中来。而对于那些没有编程经验的人来说,自助开发平台则是一个十分实用的工具,可以让他们在不需要编写代码的情况下制作出自己心仪的应用程序。那么,什么是自助开发平台呢?简单来说,它是一种无需编
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1