在 iphone 应用程序中实现应用程序细化
Posted
技术标签:
【中文标题】在 iphone 应用程序中实现应用程序细化【英文标题】:Implement app thinning in iphone application 【发布时间】:2015-10-13 10:27:21 【问题描述】:我的 ios 应用程序在应用商店中的大小相当大。我怎样才能降低达到app thinning 以使应用程序大小变小。
Note
:-
-
我已经在使用 Images.xcassets 来分别放置 x/2x/3x 图像。
我还阅读了此apple documentation 并负责优化级别构建设置。
我也在使用 8 位 PNG 而不是 32 位 PNG。
【问题讨论】:
【参考方案1】:应用切片是currently not working,直至另行通知。目前减小应用程序大小的唯一方法是减少 .ipa 中包含的资产数量。
如果它们对您的应用有意义,您可以尝试使用 On Demand Resources。
【讨论】:
感谢分享有用的链接。我也在关注按需资源。让我在应用程序中再次交叉检查。 我尝试了按需资源并在我的项目中成功实施。我还在我的答案中分享了一个详细的答案和示例项目。谢谢你指导我。【参考方案2】:从昨天开始搜索应用程序、位代码和按需应用程序资源,现在我调试所有这些东西并分享我在示例项目的帮助下从漂亮的apple documentation 获得的知识。
应用瘦身概念涵盖bit code 和按需资源。我将在下面详细讨论按需资源:-
iOS 中的按需资源:-
它会在需要时访问 images/videos/.h/.m/swift 文件 (Yes, on-demand resouring include source code files also
)。
Resource tags
设置。
创建一个新的Tag
。它将显示在“仅按需下载”下。
您可以在各种标签下添加 .h、.m、.xassest、.png 等。您还可以通过选择单个文件like this in file inspector来分配标签。
现在是编码部分(my favourite site):-
NSBundleResourceRequest *resourceRequest;
#pragma mark - On demand resource
-(void)getOnDemandResource
NSSet *setOfTag = [NSSet setWithObjects:@"chair", nil];
resourceRequest = [[NSBundleResourceRequest alloc]initWithTags:setOfTag];
[resourceRequest conditionallyBeginAccessingResourcesWithCompletionHandler:^(BOOL resourcesAvailable)
if (!resourcesAvailable)
// resourceRequest.loadingPriority = 1;//set the downloading priority (0 - 1) , NSBundleResourceRequestLoadingPriorityUrgent
[resourceRequest beginAccessingResourcesWithCompletionHandler:^(NSError * _Nullable error)
if (error)
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Error" message:error.debugDescription preferredStyle:UIAlertControllerStyleAlert];
[self presentViewController:alert animated:YES completion:nil];
else
//// The associated resources are loaded
];
else
// The associated resources are available
];
在不使用的情况下结束访问按需资源(通常在游戏级别发生变化时)
#pragma mark - Remove access to on demand
-(void)endAccessToOnDemandResource
[resourceRequest endAccessingResources];
NOTE:-
别忘了enable On_Demand_Resources in build setting。
EXAMPLE PROJECT:- I create a sample project and uploaded here:- [http://www.dropbox.com/s/edi5zj68a4wuguh/WebOnTab.zip?dl=0][6]
请不要为这个项目中的自动布局而烦恼。我的主要关注点是需求资源/应用程序。
总结:- 因此我们可以使用上述技术通过on-demand resourcing
实现app thinning
。另请查看official documentation,其中还描述了有关tracking progress
、priorities
的resourceRequests(NSBundleResourceRequest
)。
【讨论】:
有谁知道如何检测点播资源下载后的位置?我正在尝试将它们用于我的游戏女巫不使用 xcasset 目录。我想下载纹理,然后将它们当作初始包的一部分使用,但我需要知道文件的确切位置。 我查看了苹果文档(developer.apple.com/library/prerelease/ios/documentation/…),但仍然找不到位置。所以我在 SO:***.com/questions/33824601/… 提出了这个问题【参考方案3】:据我了解,App 瘦身是由 Apple 完成的。它会查看目标设备是什么,并自动将所需的图像和内容提供给用户。
如果您想获得更轻薄的应用程序,也许重构是您应该关注的主题。
【讨论】:
没错。它由 Apple 负责。但是正如我在我的问题中列出的那样,开发人员可能需要注意一些问题。您是否知道与按需资源相关的标记?以上是关于在 iphone 应用程序中实现应用程序细化的主要内容,如果未能解决你的问题,请参考以下文章