Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?

App Thinning verspätet sich: Vorerst keine iOS-Speicherplatzoptimierung

Apple hatte es als Feature für iOS 9 angekündigt: App Thinning - oder auch App Slicing - sollte den benötigten Speicherplatz für diverse Apps reduzieren. Für Besitzer von iPhones oder iPads mit nur 16 GB sind solche Angebote bei dem zunehmenden Speicherbedarf sehr wichtig. Nun musste Apple allerdings verkünden, dass das Feature deaktiviert bleiben muss. Der Grund: ein Fehler bezüglich des iCloud-Backups.

App Thinning erlaubt den Entwicklern, gewisse Teile des Codes als gerätespezifisch zu markieren (siehe auch unseren Artikel zu iOS 9 im Detail ). Würde man also eine entsprechend optimierte App auf einem iPad Air 2 herunterladen, beträfe der Download nur alle universalen und die speziell für das iPad Air 2 markierten Teile des Programmcodes. Andere Teile, die vielleicht für iPhones oder eine andere iPad-Generation wichtig wären, bleiben außen vor. Somit würden die iOS-Geräte nicht mehr mit für sie unwichtigen Programmteilen belegt und die Speicherkapazität entlastet.

Solange App Thinning deaktiviert bleibt, laden alle Nutzer die Universal-Variante jeder App, also sämtlichen Programmiercode. Für interne Betaphasen liefert TestFlight aber weiterhin gerätespezifische App-Varianten. Mit einem nicht näher spezifizierten zukünftigen Software-Update möchte Apple die Funktion wieder einführen ().

Kommentare

void
void25.09.15 19:15
Code macht kaum einen Unterschied, Grafiken und andere Ressourcen sind viel ausschlaggebender
Developer of the Day 11. Februar 2013
0
sffan25.09.15 19:48
Das ist auch der Grund wieso einige apps ein zweites Mal angeboten wurden.
Das zweite Mal war die "unverschlankte" Version.
0
sierkb25.09.15 19:50
Interessante Gedanken und Ausführungen zum Thema grad' vor dem Hintergrund des aktuellen Desasters bzgl. XcodeGhost:
Frederic Jacobs via Twitter
I got many requests to enable Bitcode on iOS projects I maintain. Here's why that's not gonna happen. https://medium.com/@FredericJacobs/why-i-m-not-enabling-bitcode-f35cd8fbfcc5 …
Quelle:

Frederic Jacobs (24.09.2015): Why I’m not enabling Bitcode
Thoughts on application binaries packaging and software distribution
0
LoCal
LoCal25.09.15 21:07
void
Code macht kaum einen Unterschied, Grafiken und andere Ressourcen sind viel ausschlaggebender

In Bezug auf den Code hat das andere Gründe.

Optimierungen auf die CPU im Ziel-Gerät und das nicht unbedingt auf A7,A8,A9,… sondern, zumindest in der Theorie ist es möglich, verschiedne Architekturen mit einer "Codebasis" zu unterstützen.

Apple könnte z.B. so verrückt sein und ein iPad mit x86-CPU oder MIPS rausbringen … die Devs müssten dafür aber absolut nichts machen. Alle Apps laufen ganz normal, der User merkt davon nichts.
Ich hab zwar keine Lösung, doch ich bewundere dein Problem
0
dreyfus25.09.15 21:21
LoCal
Apple könnte z.B. so verrückt sein und ein iPad mit x86-CPU oder MIPS rausbringen … die Devs müssten dafür aber absolut nichts machen. Alle Apps laufen ganz normal, der User merkt davon nichts.

Ja, wir sehen die Vorbereitungen für OS X+1 auf ARM. Wenn erst einmal alle Frameworks auf beiden Architekturen laufen (wie Metal), wird die Umstellung nicht einmal mehr ein neues Rosetta brauchen.
0
dan@mac
dan@mac25.09.15 22:05
void
Code macht kaum einen Unterschied, Grafiken und andere Ressourcen sind viel ausschlaggebender
Ich vermute mal, dass die Resourcen dann auch nur noch 1/3 so viel Platz brauchen. 2 Auflösungsstufen können ja wegfallen.
0
Moogulator
Moogulator25.09.15 23:31
Am besten auch keine 16GB iPhones kaufen. Schon als Signal. Aber irgendwie fördert auch die Hochpreispolitik mit.
Ich habe eine MACadresse!
0
faustocoppino26.09.15 06:05
Ich finde das eigentlich lächerlich. Warum bietet Apple nicht einfach mal das 32GB iPhone als kleinste Version an und die größeren Geräte gegen einen adäquaten Aufpreis?
0
Walter Plinge26.09.15 07:43
sierkb

Er hat ja völlig recht, nur unterscheidet sich das exakt gar nicht von der aktuellen Situation.

Apple kontrolliert derzeit Entwicklungsumgebung (incl. Compiler und Linker), Binärformat, Entwicklerzertifikate (incl. Root-Zertifikat) und Binarydistribution. Es gibt exakt nichts in dieser Kette, das Apple davon abhalten könnte an einer beliebigen Stelle beliebigen Code in genehme Apps zu injizieren.

Andererseits ist der Bitcode ja weiterhin mit den Entwicklerzertifikaten beglaubigt, dass heißt für Außenstehende ist es auch mit Bitcode exakt genauso leicht oder schwer fremden Code zu injizieren.
0
gritsch26.09.15 08:01
LoCal
void
Code macht kaum einen Unterschied, Grafiken und andere Ressourcen sind viel ausschlaggebender
Apple könnte z.B. so verrückt sein und ein iPad mit x86-CPU oder MIPS rausbringen … die Devs müssten dafür aber absolut nichts machen. Alle Apps laufen ganz normal, der User merkt davon nichts.

das stimmt so nicht, denn man kann im code weichen für verschiedene CPU-typen einbauen, bzw für 32/64 bit, für big-little-endian etc. Wenn das nicht gemacht wird, dann wäre sowas möglich (natürlich nur wenn so ein system die gleichen APIs haben würde).
0
Tzunami
Tzunami26.09.15 08:31
gritsch
LoCal
void
Code macht kaum einen Unterschied, Grafiken und andere Ressourcen sind viel ausschlaggebender
Apple könnte z.B. so verrückt sein und ein iPad mit x86-CPU oder MIPS rausbringen … die Devs müssten dafür aber absolut nichts machen. Alle Apps laufen ganz normal, der User merkt davon nichts.

das stimmt so nicht, denn man kann im code weichen für verschiedene CPU-typen einbauen, bzw für 32/64 bit, für big-little-endian etc. Wenn das nicht gemacht wird, dann wäre sowas möglich (natürlich nur wenn so ein system die gleichen APIs haben würde).

Wenn das so leicht wäre, warum mussten dann bei der OSX Umstellung von PPC auf Intel "Universal Binarys" von allen Programmen her, obwohl die APIs identisch waren? Verschiedene CPUs haben verschiedene Eigenschaften, die schon beim kompilieren beachtet werden müssen.
0
mazun
mazun26.09.15 10:36
Moogulator
Am besten auch keine 16GB iPhones kaufen. Schon als Signal. Aber irgendwie fördert auch die Hochpreispolitik mit.
Ich war heute in einem euronics elektrohandel. Dort lagen noch schätzungsweise 10 iPhone 6s mit 16gb als regelrechte Ladenhüter rum. Alle anderen Modelle waren natürlich vergriffen.
0
Walter Plinge26.09.15 10:41
Hui, hier geht jetzt einiges durcheinander. CPU-Codeweichen haben mit Universalbinaries exakt überhaupt nichts zu tun.

Die Codeweichen sind ja exakt dafür da, CPU-Spezifika zu berücksichtigen. Trotzdem werden natürlich vom Compiler je nach CPU zwei völlig verschiedene Binärdateien erzeugt. Diese Binärdateien werden dann in den Universalbinaries zusammengepackt, und der ausführende Rechner sorgt dann dafür das richtige Binary zu starten.

Hier setzt nun der Bitcode an. Der Compiler auf dem Entwicklerrechner übersetzt nicht mehr direkt in Binaries, sonder in einen universellen Zwischencode (ähnlich z.B dem "kompilierten" Java-Code). Bei Java wird dieser Code auf jedem Endgerät dann (durch die JVM) in Binärcode übersetzt. Beim Bitcode, wird dieser Code vom AppStore in die verschiedenen Binärformate übersetzt und dann ausgeliefert. Daher ist die CPU des Endgerätes in beiden Fällen (Java oder Bitcode) irrelevant. Der Unterschied liegt darin, das bei Bitcode das Endgerät nicht mehr für die Übersetzung Zeit und Energie aufwenden muss. Ein ähnliches Konzept bzgl. Java und Android hat Google mit Android 5.0 (oder 5.1?) eingeführt. Dort wird die Kompilierung direkt nach dem Herunterladen einmalig auf dem Endgerät durchgeführt, statt bei jedem Programmlauf.
0
Dibbuk26.09.15 10:47
mazun

Die 16-GB-Teile können und werden noch recht lange herumliegen. Für Apple erfüllen die ihren Zweck als Preissteigerungsargument. Wenn mit Wegfall der Grundstufe das Treppchen zur Spitze kürzer ausfällt, würde der ohnehin nicht leicht zu verargumentierende Preissprung mit jeder Speichererhöhung dem Kunden noch gieriger erscheinen.
0
Tumbler
Tumbler26.09.15 11:25
damn, apple könnte auch 24 GB modelle bringen.👹😡

grrrrrrr
Nicht im Tromeltrockner trocknen.
0
chessboard
chessboard26.09.15 11:57
Walter Plinge
Sehr gute Erklärung, finde ich! Nur mal eine Frage als "interessierter Laie": ist das mit dem Bit-Code nicht schon eine uralte Idee? Zumindest meine ich mich an den Begriff "Byte-Code" erinnern zu können, und rein gefühlt muss das mindestens in den 90ern gewesen sein.
0
Walter Plinge26.09.15 12:33
chessboard

Die hast ganz Recht, die Idee ist uralt, und stammt aus den 90ern. Der kompilierte Java-Code heißt Bytecode, und ist etwas ganz ähnliches.

LLVM hat dieses Konzept auf die Compilerentwicklung übertragen, und den Sprachparser (C, C++, Objective-C, Swift, etc.; das Frontend), vom CPU-abhängigen Teil (dem Backend) zu trennen. Dazwischen hat LLVM eine "Zwischensprache" gelegt. Diese Trennung macht sich Apple jetzt also bzgl. Bitcode zu nutze, um für seine Mobilgeräte optimierten Code ausliefern zu können.
0
sierkb26.09.15 13:29
Walter Plinge:

Interessant auch die durchaus kontrovers geführte Diskussion und die Argumente dafür und dagegen unter .

Beispiel:
I'm not clear on how Bitcode changes this, apart from expanding the already huge attack surface of the app store.

It massively expands the attack surface, since Apple is running untrusted IR input through LLVM, server-side.

The bit about how Bitcode makes backdoor injection harder is also very hand-wavy, since backdoor injection into fully compiled binaries is a teenaged pastime going back to the late 1980s. About the most you can say here is that Bitcode makes a trivial task trivial-er.

It makes it WAY more trivial, expands the scope of what can be inserted by allowing essentially unlimited modification of the source without concern for linking/symbols/fixed offsets/section sizes, and allows for a degree of automation of complex changes across applications that would be difficult otherwise.

None of that is strictly earth-shattering, but add to this Apple's shipping a binary that the developer can't trivially verify by comparing against their local build, and you have what amounts to total opacity coupled with trivially easy application-wide code modifications.

Zudem ebenfalls lesenswert und passend in die Diskussion hier und Deine obige Erklärungen und Erläuterungen unterstützend:

Low Level Bits (05.09.2015): Bitcode Demystified

Auch dieser Autor hat in seinem insgesamt sehr interessanten und gut erklärendem Blogeintrag u.a. diesen Abschnitt "What problems Bitcode introduces?" und beginnt ihn mit:
What problems Bitcode introduces?

The idea of Bitcode and recompiling for each platform looks really great and it’s a huge improvement, though it has downsides as well: the biggest one is security.

und führt das weiter aus.
0
Walter Plinge26.09.15 14:23
sierkb

Vielen Dank für die Links. Vor allem die Diskussion zu den Sicherheitsimplikationen des Bitcode ist sehr interessant.
0
Stefab
Stefab27.09.15 14:53
Ach deswegen ist nach dem Update auf iOS 9 sogar noch eine Spur weniger frei, als vorher. 😕

Hatte das Update so früh gemacht, weil ich mich auf mehr freien Speicher gefreut habe! (Aktuell ca. 3 GB bei 64GB iPhone 6)

Ich hoffe nur schwer, das kommt bald! Backup in die Cloud nutze ich sowieso nicht.
0
DP_7028.09.15 06:14
3GB frei auf einem 64 GB iPhone? Was schleppt ihr denn alle herum? Runtergeladene Musik, Filme? Fotos können es ja nicht mehr so arg sein. Vielleicht mal ein paar selten benutzte Apps löschen? Ich habe von meinen 64 Gb weit mehr als die Hälfte freien Speicher übrig und mache ständig Fotos und lade Musik fürs Auto offline herunter. Würde mich mal interessieren, ob es die Anzahl Apps (große Spiele) ausmacht oder andere Dinge?
0

Kommentieren

Sie müssen sich einloggen, um die News kommentieren zu können.