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是一种集写作、编辑、排版、发布等功能于一体的应用软
2023-06-05
自建购物app怎么做
要自建一款购物app,首先需要了解其原理和工作流程。购物app的核心功能就是实现用户在线购物,也就是在线商城。而一个在线商城app,主要包括以下几个关键部分:1. 用户界面:提供用户注册、登录、浏览商品、下订单、付款等功能。2. 后台服务:提供商品信息的管
2023-06-05
自学andriod的app开发
随着移动互联网的普及,越来越多的人开始关注和学习移动应用程序的开发。其中,Android是全球市场份额最高的移动操作系统,因此许多人希望掌握Android应用程序的开发技能。本篇文章将介绍如何自学Android开发的原理和详细步骤。1. 确定学习目标和路径
2023-06-05
自己开发app需要注意
在移动互联网的时代,自己开发一款app成为了越来越多人的梦想。然而,开发一款成功的app并非易事,需要关注许多方面的细节。本篇文章将为您详细介绍自己开发app需要注意的几个方面。一、市场分析在开发一款app之前,我们需要对目标市场进行充分的了解和研究。了解
2023-06-05
自己可以做个app软件
做一个自己的App应用程序,听起来可能很复杂,但实际上不一定需要非常复杂的知识和技能,只要掌握了一些基本工具和技术,就可以很容易地创建一个自定义应用程序。在这里,将介绍一些基本的步骤和方法,来创建一个App应用程序。1. 确定应用程序的目的和功能首先,需要
2023-06-05
自己制作免编程app的条件
想要制作自己的免编程app应用,需要满足以下条件:1. 拥有良好的创新思维和市场敏感性制作一款成功的app需要有独特的创新思路,要能够想出一个好的idea,并且清晰地理解自己的目标用户群体,并了解他们的需求和利益点。同时,对市场敏感性要有较高的认识,了解市
2023-06-05
怎么自己做一个app或者网站
要自己做一个app或者网站需要了解技术和基础知识,以下是可以考虑的步骤和技术:1.明确目标和需求在开始制作之前,首先需要明确你的目标和需求。需要确定你所要制作的app或者网站是什么,它的目的是什么,它要如何实现它的目标,以及它能够为用户带来什么价值等等。2
2023-06-05
普通人自己进行app制作的神器
随着移动互联网的快速发展,越来越多的人想要开发属于自己的App应用程序,但是又不具备专业的编程知识和技能。针对这种情况,市面上出现了很多普通人可以使用的App制作神器软件,可以让普通人也能轻松制作自己的App。App制作神器,一般来说是一种工具或是平台,它
2023-05-30
企业开发自己的app好处有哪些
企业开发自己的App已经成为了一个日益流行的趋势。App可以帮助企业获得更广泛的用户群体,并与客户直接沟通,提升品牌形象和用户满意度。下面,我们将详细介绍企业开发App的好处。1. 建立品牌形象企业可以通过App与客户互动,并在App上展示自己的品牌形象和
2023-05-30
可以自己制作说唱伴奏的app
制作说唱伴奏的app需要借助于音频处理、数字信号处理等相关技术,并需要设计出友好的用户界面和操作流程,下面我们来介绍一些制作说唱伴奏app的原理和详细步骤。首先,我们需要对音频文件进行处理,将其转换为数码信号,然后进行分析处理。我们可以采用FFT(快速傅里
2023-05-30
开言英语app自己开发的吗
开言英语是一款非常流行的学习英语的APP,它帮助用户学习英语口语、听力、阅读和写作等各个方面。由于开言英语的成功,许多人都对它是如何开发出来的感到好奇,下面我来为大家详细介绍一下开言英语APP是如何开发的。开言英语APP是由开言在线英语教育科技有限公司开发
2023-05-30
app制作自带固定模板
在移动互联网发展的今天,许多人都有制作自己的手机应用的需求,但是又感觉自己的编程水平不够,或者时间精力不足,这时候,使用自带固定模板的应用开发平台就可以解决这一难题了。自带固定模板的应用开发平台通过预先设计好的模板,让用户不需要过多的编程知识,就可以快速搭
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1