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需要了解一些基础知识,包括前端和后端开发。前端开发主要需要了
2023-06-05
自己出题做题库app
做题库APP的原理是基于数据库设计和开发,数据库是储存数据的集合,它是APP的基础。做题库APP需要先建立数据库,存储选择题、填空题和作文题等题型及其答案。同时,还要考虑用户和题目之间的关系,即用户做了哪些题目、得分情况等。因此,需要建立题目表和用户表,题
2023-06-05
自定义制作app
随着移动互联网的蓬勃发展,越来越多的企业和个人希望能够定制化开发自己的移动应用程序来满足特定需求。本文将介绍如何自定义制作一款app,并详细介绍其中的原理。一、选择开发平台在选择开发平台时,我们可以根据自己的需求和技术背景进行选择。目前常见的Android
2023-06-05
制作自己的app软件
制作自己的APP软件是一项创造性的任务,但是它并不是难以实现。在本文中,我将探讨一些关于制作APP软件的原理和详细介绍。1.了解你要开发的APP软件类型在开始制作APP软件之前,最好先了解你要开发的APP软件的类型和目标用户。有些APP软件可能针对特定的用
2023-06-05
为什么自己招人开发app弄不出来
开发一个成功的APP并非易事,尽管设备市场上出现了不少开发应用的工具和应用程序,许多初创公司和新企业仍然难以开发优秀的应用程序。以下是一些原因:1. 技术能力不足开发APP需要广泛的技术知识,以及对编程语言的深入了解。如果你没有深厚的编程技能或没有经验,那
2023-05-31
免费自建淘宝客app
淘宝客是指通过推广淘宝商品获得佣金的一种方式,而自建淘宝客app可以让我们更加方便地推广淘宝商品并获得更多佣金。下面对此进行一些详细介绍。自建淘宝客app的原理是利用淘宝客API接口进行数据获取,并在app中进行展示和推广。API接口是淘宝客平台提供的开放
2023-05-30
企业为什么要做好自己app推广
如今,随着智能手机的流行,许多企业都开始关注移动应用程序(App)的推广和营销。企业App成为了企业数字营销的重要组成部分。但是,为什么企业必须要做好自己的App推广呢?以下是一些原理和详细介绍。1.提高品牌知名度和影响力移动应用程序作为企业与消费者互动的
2023-05-30
零编程自己开发商城app
开发一款自己的商城 App 对很多人来说可能听起来很难,但实际上只要你有一定的技术基础和耐心,在掌握相关知识后将会非常容易。下面我们将详细介绍如何零编程自己开发商城 App。### 第一步: 商业计划和产品规划在开始开发之前,首先你需要做的是商业计划和产品
2023-05-30
可以自己做的免费手机主题app
手机主题作为手机个性化的一种表现形式,一直备受手机用户的关注。我们可以在各大应用商店中看到各种精美的主题包,但是很多用户发现自己想要的主题并没有被开发者制作。那么,有没有一种方法可以让用户自己制作自己的主题呢?答案是肯定的,通过一些网站或者工具,用户可以自
2023-05-30
java自己做app
在移动互联网时代,如何自己做一款APP,是很多人都感兴趣的话题。而对于Java开发者来说,自己做APP也是可以实现的。本文将从原理层面和详细介绍两个方面来探讨Java自己做APP的方法。一、原理层面Java作为一种跨平台编程语言,具备很好的可移植性。因此,
2023-05-30
app开发者怎么称呼自己
开发者是一项广泛的工作,涵盖了软件开发领域、应用程序UI和基础架构开发等。因此,有许多专业术语可以用来描述开发者,同时,这些专业术语根据不同的技术精通程度和经验水平而异。对于应用程序开发者,不同的开发环境和模式也会产生不同的称呼。在本文中,我将详细介绍和讨
2023-05-30
app开发自动化测试的好处
随着移动设备的普及,手机应用程序的开发也越来越受到重视。然而,由于操作系统版本、屏幕尺寸、分辨率等各种因素的不同,手机应用程序的兼容性问题也越来越突出。在这样的情况下,自动化测试成为了移动应用开发中不可或缺的一环。本文将详细介绍app开发自动化测试的好处。
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1