• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Android Fat Binaries
 

Android Fat Binaries

on

  • 654 views

Palestra ministrada por Felipe Pedroso no App Lab Android realizado no auditório da Intel no dia 11 de Outubro de 2013.

Palestra ministrada por Felipe Pedroso no App Lab Android realizado no auditório da Intel no dia 11 de Outubro de 2013.

Statistics

Views

Total Views
654
Views on SlideShare
529
Embed Views
125

Actions

Likes
0
Downloads
1
Comments
0

6 Embeds 125

http://software.intel.com 112
http://santeria36.rssing.com 5
http://plus.url.google.com 4
http://intel239.rssing.com 2
http://cloud.feedly.com 1
http://leaden-footed27.rssing.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • A quick description of the contents of the .apk file:AndroidManifest.xml – This is the AndroidManifest.xml file, in binary XML format.classes.dex – This contains the application code, compiled into the dex file format that is used by the Dalvik VM.resources.arsc – This file contains all of the precompiled resources for the application.lib – This directory holds the compiled code for each ABI. It will contain one subfolder for each ABI that was described in the previous section. In the screenshot above, the .apk in question has native libraries for both armeabi-v7a and for x86.META-INF – This directory (if present) is used to store signing information, package, and extension configuration data.res – This directory holds the resources that were not compiled into resources.arsc.
  • You maintain only one set of product details (app description, icons, screenshots, etc.). This also means youcannot charge a different price for different APKs.All users see only one version of your application on Google Play, so they are not confused by different versions you may have published that are "for tablets" or "for phones."All user reviews are applied to the same application listing, even though users on different devices may have different APKs.If you publish different APKs for different versions of Android (for different API levels), then when a user's device receives a system update that qualifies them for a different APK you've published, Google Play updates the user's application to the APK designed for the higher version of Android. Any system data associated with the application is retained (the same as with normal application updates when using a single APK).

Android Fat Binaries Android Fat Binaries Presentation Transcript

  • Fat Binaries Felipe Pedroso Ivan Costa
  • Agenda • O que é o APK? • Como as apps são distribuídas? • Single APK e Múltiplas APKs, qual escolher? • Fat Binaries 2
  • APK • É o formato de distibuição dos aplicativos android. • Digitalmente assinado. • Baseado no formato .jar • São formatados como arquivos zip • Contém as classes compiladas(.dex), bibliotecas nativas, resources e o manifesto 3
  • A estrutura do APK • • • • • • AndroidManifest.xml classes.dex resource.arsc META-INF Res lib 4
  • Como os APKs são distribuídos? • Google Play Store • Stores independentes* • • • • Amazon SlideME F-Droid … • Instalação Manual*
  • OK, mas não é só criar o APK e subir na store? 6
  • Diferentes marcas… Relatório de fragmentação - http://opensignal.com 7
  • Diferentes dispositivos… Relatório de fragmentação - http://opensignal.com 8
  • Diferentes tamanhos de tela… Relatório de fragmentação - http://opensignal.com 9
  • … e diferentes arquiteturas! Arquitetura Compatibilidade ARM, ARM-NEON x86 MIPS Android 1.5 (API Level 3) and higher Android 2.3 (API Level 9) and higher Android 2.3 (API Level 9) and higher Referência http://developer.android.com/tools/sdk/ndk/index.html 10
  • Vantagens de suportar múltiplas arquiteturas • Melhor aproveitamento das características de cada arquitetura: • Processador • Memória • GPU • Economia de bateria • Mais dispositivos com sua app e usuário(s) feliz(es) 
  • Arquitetura Intel • Bay Trail: os novos Atoms • Intel C++ Compiler for Android • Intel Graphics Performance Analyzers e outras ferramentas • Usar emulador com HAXM para testes 12
  • Como suportar todos? • Single APK • Colocar tudo em um único APK • Simples e mais recomendado • Múltiplos APKs • Criar um APK para cada caso* • É útil quando seu app é muito grande 13
  • Múltiplos APKs • Feature do Google Play que permite que você publique diferentes APKs para diferentes configurações de dispositivo • Recomendada a utilização apenas quando o APK é maior que 50MB 14
  • Que situações posso utilizar? • Tamanho da tela e sua densidade • Versão da plataforma • Arquitetura da CPU • Formatos de compactação de texturas (OpenGL) 15
  • Suporte no Google Play • Mudar para Advanced Mode antes de fazer o upload do segundo APK • A interface não vai mudar quase nada mas se você fizer o upload de outro APK ele vai sobrescrever o primeiro. 16
  • Caso de Estudo – Multiple APKs 120 100 resources.arsc 80 classes.dex 60 AndroidManifest.xml res 40 META-INF lib 20 0 armeabi 17 armeabi-v7a mips x86
  • Single APK • Publicar diversos APKs para o mesmo app não é a regra e sim a exceção • One APK to rule them ALL! • É a solução recomendada caso sua app tenha menos de 50MB 18
  • Single APK - Vantagens • Processo de publicação e gerenciamento é mais simples • Você consegue reduzir a base de código • Existem diversas alternativas para gerenciar as mudanças entre configurações de código • Seu usuário vai conseguir restaurar as apps em diferentes devices 19
  • Fat Binary • Por definição são APKs que suportam múltiplas arquiteturas • Mas imaginem um APK com todos os tipos recursos, como ele ficaria? 20
  • Por dentro do Fat Binary libs/armeabi Source Code apk build ndk-build libs/armeabi-v7a libs/x86 21 …
  • Caso de Estudo – Single APK Size on disk 7% 2% 2% 5% 2% META-INF res AndroidManifest.xml classes.dex resources.arsc 82% 22 lib
  • Caso de Estudo – Single APK Tamanho 2% 13% 7% 2% 5% META-INF 2% res AndroidManifest.xml classes.dex 16% resources.arsc lib/armeabi lib/armeabi-v7a 40% 13% 23 lib/mips lib/x86
  • Comparando… 200 180 160 140 120 100 80 60 40 20 0 24 resources.arsc classes.dex AndroidManifest.xml res META-INF lib
  • Isso é realmente um problema? • O recomendado é que aplicações de até 50MB sejam Single APK. • Até quando vale a pena manter diferentes versões de APKs? • O que é melhor para o usuário? O que é melhor para o desenvolvimento? 25
  • Por quê não suportar diversas arquiteturas? 26
  • Take aways • Suportar diversas arquiteturas não é difícil, basta querer • Single APK x Multiples APKs: analisar o que é melhor para sua aplicação • Fat Binaries não são necessariamente ruins se tem menos de 50MB • X86: novo processador, ferramentas, compiladores e emulador 27
  • Q/A