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. 微信微信是目前国内最
2023-06-05
自建刷题app
自建一个刷题app是非常有意义的,特别是对于计算机专业的学生来说。本文将向您介绍如何自建一个刷题app。首先,为了自建一个刷题app,我们需要选择一个合适的开发平台,如Android或iOS。本文假设您已选择的平台为Android,因此我们将按照这一平台来
2023-06-05
自己做一款商城app
做一款商城App,需要从以下几个方面入手:1. 架构设计首先,需要设计这款商城App的整体结构,确定实现该App所需要的技术栈和工具,同时需要考虑产品的易用性和可扩展性。2. 用户体验设计商城App的核心是用户体验,需要对用户体验进行深入研究。例如,商城A
2023-06-05
自学app开发大概多久
App开发是很多人都想尝试的一个领域,因为它能够让我们实现自己的想法并分享给大众。然而,对于没有编程基础的初学者来说,自学app开发可能需要一定的时间和努力。 在这篇文章中,我将简要介绍自学app开发的时间和过程,帮助初学者更好地了解这个领域。首先,需要明
2023-06-05
自己开发聊天app软件
聊天软件已经成为我们生活中必不可少的一部分,无论是社交、工作还是娱乐,都需要聊天功能。如果你想自己开发一款聊天软件,那么就需要具备一定的编程知识和技能。一、开发环境的准备首先,需要准备好相关的开发环境,主要包括编程语言、开发工具和服务器等。针对开发聊天软件
2023-06-05
自己开发app可以上架自己产品吗
开发自有app并在应用商店上架可以极大地提升企业形象和品牌知名度,也可以带来丰厚的经济收益。这里,我们将详细介绍如何开发自有app并上架到应用商店。1.开发自有app开发app需要一定的技术能力和资源,可以选择内部开发或外部委托开发。一般来说,内部开发对于
2023-06-05
有什么app可以自己制作考试
制作考试的应用程序有很多,本文将为您介绍三款较为优秀的应用程序:Quizlet、Kahoot!、和Google Forms。1. Quizlet Quizlet 是一款在线的学习应用程序,用户可以在该应用上创建题库、卡片和测试,并与其他用户共享。Quizl
2023-06-05
想开发一个自己的淘客返利app
淘客返利app是一种基于电商平台的返利应用程序,可以帮助用户在购物时获得优惠和返利,增加购买激励,同时也能帮助推广商品并获得佣金。本文将详细介绍开发淘客返利app的原理和步骤。一、原理介绍淘客返利app的原理是利用电商平台的推广佣金,将佣金一部分作为用户的
2023-05-31
微信开发者工具怎样看自己的appid
微信开发者工具是一款专门用于微信小程序的开发工具,它可以方便地进行代码编写、实时预览和调试等操作,大大提高了开发效率。在开发小程序时,我们需要使用开发者工具的 AppID 来连接到微信服务器,以便进行调试和测试。那么,怎么才能看到自己的 AppID 呢?下
2023-05-31
手机app开发自学教材
随着智能手机的普及和应用程序的广泛使用,手机app开发已成为一个越来越热门的领域。如果你对这个领域充满兴趣,想要自学手机app开发,那么可以通过以下的自学教材进行学习。1. 学习基础知识在开始进行实际的开发之前,你需要先了解基础的知识。这包括预备知识、编程
2023-05-31
如何自己做店铺app
在现代化的时代,越来越多的商家和企业开始尝试将自己的店铺转移到移动端。推出一款店铺APP,不仅可以帮助商家提升客户的购物体验,也可以通过APP推送和回馈机制吸引更多的顾客。本篇文章主要介绍如何自己做店铺APP,包含原理和详细介绍。一、APP的原理一般来说,
2023-05-30
开发一个自营app要多少钱
开发一个自营APP,需要投入的成本因公司规模、应用的复杂性、开发人员数量、企业选择的工具和技术,以及该应用是否跨平台而异。在这里,我们将对开发一个自营APP所需要的各种成本进行详细介绍。一、开发成本开发成本包括前期设计、应用程序开发和测试等工作。通常情况下
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1