在iphone应用程序中实现app thinning

时间:2015-10-13 10:27:22

标签: ios iphone ios9 xcode7 on-demand-resources

我的iOS应用程序在app store上的大小相当大。如何降低实现app thinning以使应用程序大小降低。

Note: -

  1. 我已经使用Images.xcassets分别放置x / 2x / 3x图像了。
  2. 我还阅读了此apple documentation并负责优化级别构建设置。
  3. 我也在使用8位PNG而不是32位PNG。

3 个答案:

答案 0 :(得分:1)

应用切片为currently not working,直至另行通知。减少应用程序大小的唯一方法是减少.ipa中包含的资产数量。

如果对您的应用有意义,可以尝试使用On Demand Resources

答案 1 :(得分:1)

从昨天开始搜索app thining,bit code和on demand app资源,现在我调试所有这些东西,并在我的示例项目的帮助下分享我从漂亮的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]

请不要在这个项目中担心自动布局。我主要关注需求资源/应用程序的事情。

摘要: - 因此,我们可以使用上述技术通过app thinning实现on-demand resourcing。另请参阅official documentation,其中还介绍了tracking progresspriorities资源请求(NSBundleResourceRequest)。

答案 2 :(得分:0)

据我了解App瘦身,这一切都是由Apple完成的。它会查看目标设备是什么,所需的图像和内容将自动提供给用户。

如果你想获得更薄的应用程序,也许重构是你应该看的主题。