app thinning

29
Артур Протько App Thinning

Upload: rambler-ios

Post on 21-Feb-2017

61 views

Category:

Technology


0 download

TRANSCRIPT

Артур Протько

App Thinning

App Thinning

AppThinning – набортехнологийнаправленныйнауменьшение

накладныхрасходовпридоставкеприложенияизAppStoreк

конечномупользователю

App Thinning

• Slicing

• Bitcode

• On-Demand Resources

App Slicing

Slicing - этопроцесссозданияипоставкивариантовбандла

приложениядляразличныхустройств.Каждыйвариантсодержит

исполняемыйфайлиресурсынеобходимыедляработынаконечном

устройстве.

App Slicing

App Slicing

•Нарезкаресурсов

•Нарезкаисполняемогофайла

Структураисполняемогофайла(UniversalBinary)

Sliсed apps

•Симулятор

•TestFlight

•Release

• Размерпризагрузкеснизилсяна43%

• Размерприустановкеснизилсяна34%

Пользователиоперационныхсистемниже

заявленныхпродолжатполучатьUniversal вариант.

Bitcode

Bitcode - промежуточноепредставние скомпилированнойпрограммы.

Приложения,содержащиеbitcodeпризагрузкевiTunesConnect,будут

скомпилированныислинкованныужевсамомсторе.

LLVMcompiler

• Frontend

• Backend

LLVMfrontend

ПримерLLVMIR// main.cextern int printf(const char *fmt, ...);

int main() {printf("Hello World\n");return 0;

}

clang -S -emit-llvm [email protected] = private unnamed_addr constant [13 x i8] c"Hello World\0A\00", align 1

; Function Attrs: nounwind ssp uwtabledefine i32 @main() #0 {

%1 = alloca i32, align 4store i32 0, i32* %1%2 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([13

x i8]* @.str, i32 0, i32 0))ret i32 0

}

declare i32 @printf(i8*, ...) #1

LLVM backend

Bitcode - бинарныйформатLLVMIR

ВключениеBitcode

ПлюсыBitcode

•ПриложениеможетбытьпереоптимизированонасторонеAppleбезперезаливкиприложения

МинусыBitcode

•Всеприложенияифреймворкивбандледолжны

поддерживатьbitcode

•Необходимо"вручную"выгружатьdSym вFabric

On-Demand Resources

On-Demand Resources - эторесурсы(картинки,аудио,…)помеченные

специальнымтегомикоторыеможнозапроситьссерверапоэтому

тэгу

Жизненныйциклресурсов

Преимущества On-Demand Resources

• Уменьшениеразмераприложения

• Лениваязагрузкаресурсовприложения

• Удаленноехранилищередкоиспользуемыхресурсов

• Удаленноехранилищересурсовдлявстроенныхпокупок

Недостатки On-Demand Resources

• Требуетхорошегоинтернетсоединения

ОграничениянаразмерыресурсовItem Size Slicing

iOS App bundle 2 GB �

tvOS App bundle 200 MB �

Tag 512 MB �

Asset packs 1000 �

Initial install tags 2 GB �

Initial install and prefetched tags 4 GB �

In use on-demand resources 2 GB �

Hosted on-demand resources 20GB –

Спасибо за внимание!