Android Multiple SDK-Support in einer Apk

  • Themenstarter Themenstarter Tomate_Salat
  • Beginndatum Beginndatum
T

Tomate_Salat

Gast
Hi,
ich habe bald mein erstes größeres Android-Projekt vor mir und da mache ich mir natürlich schon so meine Gedanken. Apps für mich im privaten würde ich ja gnadenlos einfach für Android 4.0 entwickeln. Aber die App die ich entwickeln soll, ist ja für mehr als eine Person angedacht 😀. Jetzt würde ich aber gerne Android 4.0 nicht außer acht lassen, aber mein min-sdk-lvl wird wohl zwischen 8 und 10 liegen (2.2-2.3.x).

In einem Testprojekt war das zwar kein Problem, eine App auf Android 2.2 und meinem Galaxy Nexus zum laufen zu bringen (auch wenn erstaunlicherweise auf dem 4.0 eine NPE bei der installation [ts=Genau hab ichs mir jetzt auch nicht angeschaut wieso. Laufen tut die App ja]glaub[/ts] fliegt).

Wie würdet ihr das machen? Die developer-seite spricht da ganz gerne von multiplen Apks. Dann hätte ich aber wohl auch mehrer Projekte (mit viel Pech für jedes Api-level eins :wuerg🙂

Bisherige Nachteile an multiplen SDK-versionen in einem Projekt:
- Verwendung von Deprecated Klassen (oder redundants für die Api-levels)
- Warnung im AndroidManifes (minsdk<projektsdk)
- Die bisher wenig beachtete NPE bei der Installation :joke:

Vllt hat ja einer von euch schon soetwas gelöst und kennt die non-plus-ultra-Lösung 😀

MFG

Tomate_Salat
 
Ich persönlich entwickle mit dem 4.0er SDK und verwende Target 8. Ich beschränke mich allerdings auch auf die verfügbaren Klassen aus dem 8er Framework und habe bis jetzt keine Probleme gehabt.
 
Was ich bisher als alternativen erfahren habe, war:
- niedrigstes Api-level verwenden und mit kompatibilitätspackages arbeiten (überzeugt mich aber nicht)
- mit reflection Arbeiten um die verfügbarkeit von neuen Methoden zu testen. Scheint gerne verwendet zu werden. Ist aber auch nicht unbedingt die Methode, die mir wirklich zusagt.
- Api-level des Geräts testen und dementsprechend eben die (neuen) Methoden aufrufen.

Ich glaube, ich entscheide mich für das letztere erstmal (außer es findet sich hier noch eine bessere option) und werde damit zunächst mal ein Testprojekt realisieren. Dann sieht man ja, wie das funktioniert.

Ggf. werde ich auch das mit der reflection mal testen. Sofern sich das in Grenzen hält, wäre das auch eine interessante Lösung. Denke, dass wird sich in einem (anderen) Testprojekt zeigen.
 
niedrigstes Api-level verwenden und mit kompatibilitätspackages arbeiten (überzeugt mich aber nicht)
Warum nicht? Das wäre der sauberste Weg. Vergiss nicht, wenn dein Projekt umfangreicher wird, wirst du schnell an die Grenzen der Geräte stoßen. Da ist jedes Rumgefrickel mit Reflection ein schmerzhaftes Penalti.

Ich setze das oben genannte Support Package ein und bin ganz zufrieden damit. Aber wenn du die Tests durchziehst, wäre es trotzdem interessant wenn du hier die Ergebnisse postest.
 
Warum nicht? Das wäre der sauberste Weg.Vergiss nicht, wenn dein Projekt umfangreicher wird, wirst du schnell an die Grenzen der Geräte stoßen. Da ist jedes Rumgefrickel mit Reflection ein schmerzhaftes Penalti.
Keine Ahnung. Aber irgendwie vertrau ich denen nicht so ganz. Aber die Idee von Reflection fand ich zu Anfangs echt furchtbar, aber die wird wohl viel eingesetzt. von den Support Packages habe ich nur auf der android Seite gelesen.

Aber wenn du die Tests durchziehst, wäre es trotzdem interessant wenn du hier die Ergebnisse postest.
Würde ich auf jeden Fall ;-). Bin aber momentan noch an den Basics. Vllt fange ich dann heute mal mit einer einfachen App an.
 
Ok. Also ich habe mit der "3.ten Strategie" angefangen und breche das aber ab. Je mehr ich drüber nachdenke, desto vernünftiger erscheint mir das Support Package. Warum?
- Im worst-case kann ich ~6 Api-Level eine Unterscheidung schreiben
- Ich muss bei Jeder Methode tierisch aufpassen, dass diese auch in allen Api-level verfügbar ist, oder diese auslagern (auch wenn man das über die references sehr gut sehen kann, ist mir das zu fehleranfällig)

[EDIT]
Einiges entfernt, da ich offensichtlich keine Ahnung vom Support-Packages habe/hatte:autsch:
[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:

Zurück
Oben