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上市的原理和步骤。1. 开发应用自建APP首先需要
2023-06-05
自己能开发一个简单的app吗知乎
开发一个简单的app是完全可能的,只要你有一定的编程基础和学习能力,就可以学习并掌握开发技能。本文将从原理和详细介绍两个方面来说明如何开发一个简单的app。一、原理1、App是什么App是指能够被移动设备安装并运行的应用程序。当前市场上,主要有两个平台提供
2023-06-05
自己简易制作apple pencil
Apple pencil是一款用于iPad Pro的电子手写笔,可以在iPad上高精度、高解析度地书写、绘画和注释等。如果你想省下花费高昂的Apple pencil费用,或者懒得等待送到你手中,那么你可以自己动手制作一支类似的电子笔。原理介绍:Apple
2023-06-05
自己开发的app怎么发给别人
在开发一个APP之后,我们需要将其发布到应用商店或提供给其他用户使用。这篇文章将介绍如何将自己开发的APP发给别人。首先,Android应用程序可以直接通过安装包(.apk文件)来安装在设备上。安装包可以通过Android Studio生成,并可分发给任何
2023-06-05
自己开发一个麻将app
麻将是一种广泛流传于中国、日本、韩国等国家的游戏,它是一种有趣且充满策略性的游戏,因此,在移动互联网时代,开发一款麻将游戏APP是一种不错的选择。一、应用定位在开发一款麻将游戏APP之前,需要明确应用的定位,这个过程包括:1.确定游戏类型;麻将游戏类型众多
2023-06-05
自己开发一个app赚钱吗
可以通过开发一款app来赚钱。这种方式需要有一定的编程技术和市场推广能力,但如果成功了,可以获得不菲的收益。下面是一些详细的介绍和原理:1. 开发一款有吸引力的app首先,需要开发一款有市场吸引力的app,可以根据自己的兴趣和技能来选择开发方向。一款好的a
2023-06-05
自己编程制作app教程
移动应用程序(App)是现代社会中不可或缺的工具之一。在这个科技快速发展的时代,自己编写制作App成为越来越多人的目标。本文将介绍自己编写制作App的实现原理以及详细步骤。第一步:确定开发目标在编写制作App之前,您需要先明确开发目标。您的目标可以是打造一
2023-06-05
怎么自己制作跑腿app
制作跑腿 App 的基本原理是,需要一个支持在线支付和定位功能的应用程序,用户可以通过它委托他人进行跑腿服务。以下是详细介绍:1. 基础技术跑腿 App 通过移动平台运行,其基础技术包括:iOS 或 Android App 开发框架、前端开发技术(HTML
2023-06-05
在自己开发的app上
我开发的App名为“旅游助手”,主要是提供旅游信息和服务的平台。首先,用户可以在App上查看各个城市的旅游景点和美食推荐。我通过调用第三方API获取各个城市的景点和美食信息,包括地理位置、评分、评论等等。同时,我也会在App里面编辑涉及到的城市的详细介绍,
2023-06-05
券商app有哪些是自己开发的软件
券商App是券商公司提供的一种移动应用程序,利用券商公司的技术和数据库系统,结合手机的使用特性,为投资者提供移动化的证券交易和服务,包括行情查询、资讯阅读、自选股设置、交易下单、账户管理、数据统计等。券商App的特点是随时随地都可以进行交易,随时查询股票行
2023-05-30
开发自己的app商城
App商城指的是运行在移动设备上,提供应用程序下载、更新和卸载功能的软件市场。与Google Play、App Store等大型应用商店不同,自己开发的App商城更加注重个性化定制化和资源管理方面的需求。下面我们将介绍自己开发App商城的原理和详细步骤:原
2023-05-30
app开发网页自动滚屏动态加载
随着移动互联网的快速发展和普及,越来越多的网站选择开发Web App来满足用户的需求。在Web App开发中,自动滚屏动态加载是一个非常常见的功能。本文将介绍自动滚屏动态加载的原理和实现方法。一、自动滚屏动态加载的原理自动滚屏动态加载是指当用户滚动到页面底
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1