- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的一个项目中使用了 Swift,最后是时候将其上传到应用商店了。应用程序的大小是一个问题,因为下载更大尺寸的应用程序不是用户的选择。该应用程序的应用程序商店大小为 40MB。一直没问题,直到安卓版上传了,6MB。我已经在iOS应用程序中使用了应用程序瘦身,但它仍然很大。我检查了 ipa 的(89MB)内容,发现 ipa 文件中包含 swift 库。我在网上搜索:Swift libraries included twice in IPA
然后互联网让我相信 ipa 的大小(89MB)与实际大小(40MB)不同,这是正确的。我可以看到 ipa 大小和应用商店下载大小的差异。
但是 Android 版本(大小为 6MB)让我很兴奋。
那么到底出了什么问题呢?如果我使用 Objective-C
,应用程序商店的大小会有所不同吗?
最佳答案
这是来自 WWDC 2018
And we also have another release coming up for you in the language, Swift 5.The focus of Swift 5 is greater adoption by delivering Swift as part of the OS.Apps will no longer need to include the Swift runtime when delivering on our newer OS releases, resulting in smaller downloads and faster launches.We're very excited about this, too, and we have made great progress toward this goal. And you'll see it in a release coming early next year.
今天我使用 xcode 9 创建了商店版本,发现 swift ipa 大小从 59MB 增加到 105MB,但上传到 iTunes connect 后下载大小约为 2.5MB,这很酷!因此,与 objc 应用程序相比,swift 应用程序的大小开销要少得多。
今天,我检查了同一应用程序的 iTunes 连接,发现新的下载大小选项卡,与上次实验相比,它显示的下载大小较小。
<小时/>我使用 iPhone 的核心数据创建了两个单 View 应用程序。一个在 Swift 中,另一个在 Objective-C 中。两者都有默认的项目模板,没有编写任何额外的代码。我在这两个项目中添加了相同的应用程序图标。
然后从这两个项目创建 ipa 并作为版本 1 和 2 上传到 iTunesconnect
然后我使用命令unzip -lv
检查了这两个ipa文件,发现Swift版本的ipa中多了三个文件夹
当我仅压缩这三个文件夹(Frameworks+SwiftSupport+ Symbols)时,压缩后的大小为 59.5 MB。而 ipa 的总大小为 59.6MB。很明显,Swift 库正在增加应用程序的大小。
<小时/>unzip -lv SizeSwiftTest.ipa
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
46125024 Defl:N 18988843 59% 01-28-2017 10:02 14b9d63c Payload/SizeSwiftTest.app/Frameworks/libswiftCore.dylib
743568 Defl:N 216552 71% 01-28-2017 10:02 79b72c24 Payload/SizeSwiftTest.app/Frameworks/libswiftCoreData.dylib
1137184 Defl:N 383891 66% 01-28-2017 10:03 86bd6df6 Payload/SizeSwiftTest.app/Frameworks/libswiftCoreGraphics.dylib
257616 Defl:N 24550 91% 01-28-2017 10:03 a6da0939 Payload/SizeSwiftTest.app/Frameworks/libswiftCoreImage.dylib
543696 Defl:N 176102 68% 01-28-2017 10:03 94937782 Payload/SizeSwiftTest.app/Frameworks/libswiftDarwin.dylib
2562272 Defl:N 954097 63% 01-28-2017 10:04 55a778fc Payload/SizeSwiftTest.app/Frameworks/libswiftDispatch.dylib
17463360 Defl:N 7412237 58% 01-28-2017 10:04 6f6526c0 Payload/SizeSwiftTest.app/Frameworks/libswiftFoundation.dylib
506192 Defl:N 165186 67% 01-28-2017 10:04 ad88cf40 Payload/SizeSwiftTest.app/Frameworks/libswiftObjectiveC.dylib
311520 Defl:N 60300 81% 01-28-2017 10:05 85363d5d Payload/SizeSwiftTest.app/Frameworks/libswiftQuartzCore.dylib
699712 Defl:N 273308 61% 01-28-2017 10:05 c7d7022a Payload/SizeSwiftTest.app/Frameworks/libswiftUIKit.dylib
45775648 Defl:N 18627456 59% 12-07-2016 05:23 81fe5af9 SwiftSupport/iphoneos/libswiftCore.dylib
741104 Defl:N 209836 72% 12-07-2016 05:23 4acecaad SwiftSupport/iphoneos/libswiftCoreData.dylib
1133696 Defl:N 374501 67% 12-07-2016 05:23 8b024942 SwiftSupport/iphoneos/libswiftCoreGraphics.dylib
256368 Defl:N 22243 91% 12-07-2016 05:23 325cc5a7 SwiftSupport/iphoneos/libswiftCoreImage.dylib
541792 Defl:N 170804 69% 12-07-2016 05:23 f41ed047 SwiftSupport/iphoneos/libswiftDarwin.dylib
2522368 Defl:N 932905 63% 12-07-2016 05:22 09cecc4f SwiftSupport/iphoneos/libswiftDispatch.dylib
17318784 Defl:N 7278280 58% 12-07-2016 05:22 4af20463 SwiftSupport/iphoneos/libswiftFoundation.dylib
504304 Defl:N 160214 68% 12-07-2016 05:22 1093b583 SwiftSupport/iphoneos/libswiftObjectiveC.dylib
310112 Defl:N 57522 82% 12-07-2016 05:23 a613dad2 SwiftSupport/iphoneos/libswiftQuartzCore.dylib
697344 Defl:N 266430 62% 12-07-2016 05:23 d6bf939b SwiftSupport/iphoneos/libswiftUIKit.dylib
22576 Defl:N 6387 72% 01-28-2017 10:01 b3c45d81 Symbols/1BFFD5D6-0677-33B3-BAEC-046295DEA090.symbols
29064 Defl:N 8112 72% 01-28-2017 10:01 d6c556b3 Symbols/2582C775-1993-3EB6-8824-D3F9A75ADE6D.symbols
3613720 Defl:N 559651 85% 01-28-2017 10:01 34544697 Symbols/26F02EDA-79FE-32B9-BD99-BD076B4736DD.symbols
1304 Defl:N 580 56% 01-28-2017 10:01 31754a59 Symbols/2A066874-F58A-32D0-A75A-5427D6909F92.symbols
49808 Defl:N 9569 81% 01-28-2017 10:01 e3f914e6 Symbols/495698EB-ADEA-3C6E-873B-E9F330C364B1.symbols
1360 Defl:N 576 58% 01-28-2017 10:01 b457ae89 Symbols/4F5C1D31-2B0B-3D45-8307-FF3B01D6678F.symbols
22488 Defl:N 6471 71% 01-28-2017 10:01 96e50d34 Symbols/57A3E752-CD40-3D39-A10D-0F2156141CFA.symbols
22488 Defl:N 6476 71% 01-28-2017 10:01 95497af9 Symbols/5A33D6B3-ED31-3EFF-B518-B0F6B1AB518F.symbols
40600 Defl:N 9804 76% 01-28-2017 10:01 3fa40def Symbols/5DD3704E-7D46-338B-AA57-875F447D0FDD.symbols
95120 Defl:N 20420 79% 01-28-2017 10:01 613db8b1 Symbols/66FB5EA4-9401-31BF-917F-ACDB029A1096.symbols
29064 Defl:N 8109 72% 01-28-2017 10:01 1b159c06 Symbols/6D71045D-16DE-3FEE-9F5C-A3EABD040E64.symbols
7472 Defl:N 2304 69% 01-28-2017 10:01 374bc5dc Symbols/6F1E015A-1EA3-3971-8A6F-88759034B452.symbols
28448 Defl:N 7894 72% 01-28-2017 10:01 a515fee5 Symbols/7613BAC0-954C-3275-BBD6-A8F94CA88169.symbols
95032 Defl:N 20242 79% 01-28-2017 10:01 c928db8e Symbols/76EF8DA9-D2AE-340C-8557-18D201C56FC0.symbols
3625704 Defl:N 564948 84% 01-28-2017 10:01 00d5d560 Symbols/7907E56A-C876-3ADB-8063-60A0C3534C80.symbols
40656 Defl:N 9702 76% 01-28-2017 10:01 d4193ca3 Symbols/7C39C85D-94F2-34D8-BAD4-9FAA7FBA7A8A.symbols
3626128 Defl:N 564909 84% 01-28-2017 10:01 dc118cdf Symbols/7E3DC2DA-66CA-3D75-930C-586D382ED244.symbols
40528 Defl:N 9797 76% 01-28-2017 10:01 e3f2fc23 Symbols/8E44CE26-99D8-327D-9265-1832F45435E5.symbols
1304 Defl:N 580 56% 01-28-2017 10:01 bd45ff3f Symbols/9D3B475B-430C-3E1A-8564-90709511BAA4.symbols
1253768 Defl:N 223986 82% 01-28-2017 10:01 d9b84785 Symbols/9DB043C4-9AE4-3C6D-9C0B-3F4122CCB651.symbols
49920 Defl:N 9508 81% 01-28-2017 10:01 48d5b4c2 Symbols/9E5276F6-A162-3960-B721-2AEA6034A9D4.symbols
7240 Defl:N 2311 68% 01-28-2017 10:01 3a7eb2d0 Symbols/A654D23D-3717-33EA-BFB4-B77C0BB3E29D.symbols
7240 Defl:N 2306 68% 01-28-2017 10:01 cf9bc3af Symbols/A9A21BC8-84F5-3F38-B617-05DB8ABA3F14.symbols
264072 Defl:N 48696 82% 01-28-2017 10:01 4423f05b Symbols/AAEE95F5-56B7-3601-A0E5-C31446494F6A.symbols
261616 Defl:N 47707 82% 01-28-2017 10:01 b4ea0b2d Symbols/AC9C450C-CC64-357D-8F60-F072AE05FA66.symbols
264224 Defl:N 48725 82% 01-28-2017 10:01 2bfd857d Symbols/C69555CE-9775-3AEA-9C03-65661C772503.symbols
1262592 Defl:N 226212 82% 01-28-2017 10:01 39303f9c Symbols/D4705FA7-7406-3585-84C7-E914BFAB468F.symbols
1262808 Defl:N 226261 82% 01-28-2017 10:01 83cf2100 Symbols/E6C789A6-E22E-3349-8319-6EACF1400E2E.symbols
49952 Defl:N 9610 81% 01-28-2017 10:01 c142402b Symbols/E92BBA7C-157A-3649-8FE6-CD429381BB72.symbols
95184 Defl:N 20425 79% 01-28-2017 10:01 f91d04e0 Symbols/F78C47B6-F71D-3606-8235-BF2BDA33DDCC.symbols
关于ios - 与 Objective-C 应用程序相比,捆绑的 Swift 库的文件大小开销是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57192604/
这个问题在这里已经有了答案: C sizeof a passed array [duplicate] (7 个回答) 8年前关闭。 在一个函数中,我声明了一个数组: int char_count_ar
简而言之,文件系统如何与 block 设备通信? 最佳答案 我对 block 大小不太了解。我认为 ext4(Linux)的文件系统的 block 大小是 4KB,考虑到现代处理器的页面大小(4KB)
我知道 tinyint(1) 和 tinyint(2) 具有相同的存储空间范围。 唯一的区别是显示宽度不同。这是否意味着 tinyint(1) 将存储所有类型的整数但只正确显示 0 到 9 的范围?而
今晚我已经研究了以下代码几个小时,但我只是摸不着头脑。 当使用函数从标准输入填充数组时,我不断收到“大小 8 的无效写入”和“大小 8 的无效读取”。 如有任何帮助,我们将不胜感激...我知道 Sta
我有一个 valgrind 错误,我不知道如何摆脱它们: ==5685== Invalid read of size 8 ==5685== at 0x4008A1: main (in /home
我对 Hadoop 的概念有点困惑。 Hadoop block 大小、拆分大小和 block 大小 之间有什么区别? 提前致谢。 最佳答案 block 大小和 block 大小相同。 拆分大小 可能与
我想不出一个好的标题,所以希望可以。 我正在做的是创建一个离线 HTML5 webapp。 “出于某些原因”我不希望将某些文件放在缓存 list 中,而是希望将内容放在 localStorage 中。
无法将 xamarin apk 大小减少到 80 MB 以下,已执行以下操作: 启用混淆器 配置:发布 平台:事件(任何 CPU)。 启用 Multi-Dex:true 启用开发人员检测(调试和分析)
我正在开发一个程序,需要将大量 csv 文件(数千个)加载到数组中。 csv 文件的尺寸为 45x100,我想创建一个尺寸为 nx45x100 的 3-d 数组。目前,我使用 pd.read_csv(
Hello World 示例的 React Native APK 大小约为 20M (in recent versions),因为支持不同的硬件架构(ARMv7、ARMv8、X86 等),而同一应用程
我有一个包含 n 个十进制元素的列表,其中每个元素都是两个字节长。 可以说: x = [9000 , 5000 , 2000 , 400] 这个想法是将每个元素拆分为 MSB 和 LSB 并将其存储在
如何设置 GtKTextView 的大小?我想我不能使用 gtk_widget_set_usize。 最佳答案 您不能直接控制小部件的大小,而是由其容器完成。您可以使用 gtk_widget_set_
这个问题在这里已经有了答案: c++ sizeof() of a class with functions (7 个答案) 关闭 5 年前。 结果是 12。 foobar 函数存储在内存中的什么位置
当我在 ffmpeg(或任何其他程序)中使用这样的命令时: ffmpeg -i input.mp4 image%d.jpg 所有图像的组合文件大小总是比视频本身大。我尝试减少每秒帧数、降低压缩设置、模
我是 clojurescript 的新手。 高级编译后出现“77 KB”的javascript文件是否正常? 我有一个 clojurescript 文件: 我正在使用 leinigen: lein c
我想要一个 QPixmap尺寸为 50 x 50。 我试过 : QPixmap watermark(QSize(50,50)); watermark.load(":/icoMenu/preparati
我正在尝试从一篇研究论文中重新创建一个 cnn,但我对深度学习还是个新手。 我得到了一个大小为 32x32x7 的 3d 补丁。我首先想执行一个大小为 3x3 的卷积,具有 32 个特征和步幅为 2。
我一直在尝试调整 View Controller 内的 View 大小,但到目前为止没有运气。基本上,我的 View 最底部有一个按钮,当方向从纵向更改为横向时,该按钮不再可见,因为它现在太靠下了。
如何使用此功能检查图像的尺寸?我只是想在上传之前检查一下... $("#LINK_UPLOAD_PHOTO").submit(function () { var form = $(this);
我用 C++ 完成了这个,因为你可以通过引用传递参数。我无法弄清楚如何在 JavaScript 中执行此操作。我的代码需要更改什么?我的输出是1 this.sizeOfBst = function()
我是一名优秀的程序员,十分优秀!