Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 与React Native original相比,iOS中的应用程序规模巨大_Flutter - Fatal编程技术网

Flutter 与React Native original相比,iOS中的应用程序规模巨大

Flutter 与React Native original相比,iOS中的应用程序规模巨大,flutter,Flutter,我在应用商店中重新创建了一个简单的应用程序,它最初是用React Native制作的,文件大小为5MB。该应用程序没有图像或任何特定大小的东西,但它确实使用了Admobads 上传到应用商店后,构建显示为35MB…不确定原因是什么,但在打开构建档案的软件包内容时,似乎在SwiftSupport/iphoneos中创建了大量非常大的dylib文件。这是档案中最大的文件夹。我认为这与为了使用Admob而创建的Pods文件夹有关 我猜它永远不会像React Native原始应用程序那么小,但它肯定不应

我在应用商店中重新创建了一个简单的应用程序,它最初是用React Native制作的,文件大小为5MB。该应用程序没有图像或任何特定大小的东西,但它确实使用了
Admob
ads

上传到应用商店后,构建显示为35MB…不确定原因是什么,但在打开构建档案的软件包内容时,似乎在
SwiftSupport/iphoneos
中创建了大量非常大的
dylib
文件。这是档案中最大的文件夹。我认为这与为了使用Admob而创建的
Pods
文件夹有关

我猜它永远不会像React Native原始应用程序那么小,但它肯定不应该是大小的七倍……是否有办法删除
SwiftSupport
文件或以其他方式缩小它

编辑:在
Frameworks
的构建档案中的Runner项目文件夹中,也有大量的Swift
dylib
文件。实际上,所有的空间都被这些Swift支持
dylib
文件占用了


刚刚为Android构建了一个应用程序,它的容量为8.33MB,所以差异很大,尽管两个版本当然都使用Admob。

我有两个来源:第一个[1]题为“颤振vs Swift”,第二个[2]“如何在颤振中为现有项目启用Swift支持”。阅读我们观察到的flifter和swift不必共存,观察后者,我们可以看到在创建IOS包时如何使用标志启用它。我将首先检查IOS文件夹是否在没有swift引用的情况下创建

第三个链接[3]显示Admob的使用只能在dart中完成

关于尺寸,我不确定使用飞镖和禁用Swift是否能100%成功。颤振vs Swift链接[1]有一个本地Swift应用程序和“比较”相等的颤振应用程序,结论是颤振应用程序的大小是Swift应用程序的两倍。尺寸分别约为20和50 MB,颤振最大

编辑

它显示Swift是您使用的插件/模块的一部分,因此无法轻松删除。关于尺寸,Flitter应用程序通常已经比Swift应用程序大,现在的解决方案将两者结合起来。尺寸的增加是值得尊敬的

[1]

[2]


[3]

这实际上与颤振无关。每个包含想要支持iOS 11及更低版本代码的iOS应用程序都需要包含额外的颤振库


通过将“始终嵌入Swift标准库”设置为false,并将部署目标提升到iOS 12,您可以在Xcode中禁用此功能。

您应该检查此问题是否与最初的flatter GitHub@Glamvian有关。我认为这与此问题无关。应用程序的最小大小是“iPhoneX保持在10.8MB”,所以这并不能解释为什么我的应用程序是35MB。他们也没有提到SwiftSupport问题,我认为这是一个与Admob相关的问题。你是否使用发布标志构建了应用程序?@Muldec是的,当然,它已经作为一个构建在应用程序商店中。是否有人使用Admob创建了一个没有所有这些巨大swift动态库文件的Flitter应用程序?如果是这样的话,我想知道它是如何完成的。我按照这个步骤安装了Admob。您认为答案中的任何步骤都会导致不必要地添加Swift支持吗?您必须在其中添加一些Swift代码。因此,admob插件很可能依赖于Swift。我找到了关于fire base admob的版本,但它需要Firebase,并且可能也需要一些开销。我添加了一些swift代码?我刚刚修改了Pod文件…为什么要添加所有swift支持文件?好吧,你只添加了swift版本,不管怎样,这意味着项目涉及swift。否则,这样的设置是没有意义的。它是你使用的插件的一部分,所以你不能以任何方式拿走它。Swift版本不是总是在XCode中设置的吗?它必须设置为某个值。。?我刚刚检查了一个新开发的基本fluttter应用程序,它在xcode项目中被设置为Swift 4。当我为我的另一个应用程序设置Admob时,我所做的只是将其更改为Swift 4.1。这实际上是不正确的,我的应用程序都只使用Objective C编码,但仍然比Android大得多,与Swift无关。这实际上已经被Flutter开发人员确认为一个bug,他们正在研究它。甚至有极端的例子,Android版本为7.9MB,iOS版本为62.3MB,完全相同的应用程序从应用商店的Flitter中导出。也没有使用广告…如果你的应用程序包含SwiftSupport目录,那么我提到的标志必须已启用。如果您没有任何swift代码,那么添加swift标准库是没有意义的。检查你的插件。