2015-10-13 2 views
1

Размер моего приложения для iOS довольно большой в магазине приложений. Как я могу снизить уровень app thinning, чтобы уменьшить размер приложения.Реализация приложения, прореживающегося в приложении iphone

Note: -

  1. Я уже использую Images.xcassets положить х/2x/3x изображения отдельно.
  2. Я также прочитал это apple documentation и позаботился о настройках построения уровня оптимизации.
  3. Я также использую 8-битный PNG вместо 32-разрядного PNG.

ответ

1

Поиск app thining, бит-кода и ресурса приложения по требованию со вчерашнего дня. Теперь я отлаживаю все эти вещи и делюсь своими знаниями о том, что получил от красивого apple documentation с помощью моего образца проекта.

Обложка концепции прореживания приложений bit code и ресурс по требованию. Я буду обсуждать по требованию ресурс подробно ниже: -

On-Demand ресурсы в прошивкой: - Он обращается к изображения/видео/.h/.m/быстрый файл всякий раз, когда это необходимо (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 
     } 
    }]; 
} 

End, получающих доступ к по требованию ресурса, когда он не используется (как правило, при изменении уровня игры)

#pragma mark - Remove access to on demand 
-(void)endAccessToOnDemandResource{ 
    [resourceRequest endAccessingResources]; 
} 

NOTE:- Дон» t забыл 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 thinningon-demand resourcing с помощью описанной выше техники. Также обратите внимание на official documentation, который также описывает около tracking progress, priorities ресурсовRequests (NSBundleResourceRequest).

+0

Кто-нибудь знает, как определить, где находятся ресурсы по запросу после загрузки? Я пытаюсь использовать их для своей игры, ведьма не использует каталог xcasset. Я хочу загрузить текстуры, а затем использовать их, как если бы они были частью исходного пакета, но мне нужно знать точное местоположение файла. – dimayak

+0

Я проверил документацию на яблоко (https://developer.apple.com/library/prerelease/ios/documentation/Foundation/Reference/NSBundleResourceRequest_Class/index.html#//apple_ref/occ/instm/NSBundleResourceRequest/initWithTags:bundle :) , но все еще не в состоянии найти местоположение. Поэтому я поставил вопрос на SO: http: //stackoverflow.com/questions/33824601/how-to-detect-where-the-on-demand-resources-are-located-after-being-downloaded – pkc456

0

Насколько я понимаю, прореживание приложений, все это сделано Apple. Он смотрит на то, что является целевым устройством, и необходимые изображения и прочее будут предоставлены пользователю автоматически.

Если вы хотите получить более тонкое приложение, возможно, рефакторинг - это тема, на которую вы должны обратить внимание.

+0

Yep правый. Apple заботится об этом. Но могут возникнуть некоторые проблемы, о которых разработчик должен заботиться, поскольку я перечислял в своем вопросе. У вас есть идея пометки, которая связана с ресурсами по требованию? – pkc456

1

Нарезка приложений currently not working до дальнейшего уведомления. Единственный способ уменьшить размер вашего приложения в настоящее время - уменьшить количество активов, включенных в .ipa.

Вы можете попробовать использовать On Demand Resources, если они имеют смысл для вашего приложения.

+0

Спасибо за обмен полезной ссылкой. Я также слежу за ресурсами по требованию. Позвольте мне снова перепроверять приложение. – pkc456

+0

Я попробовал ресурс по требованию и успешно реализовал это в своем проекте. Я также поделился подробным ответом и образцом проекта в своем ответе. Спасибо, что направил меня. – pkc456

Смежные вопросы