Eine App und mehrere Versionen unterstützen

  • Antworten:24
Christian Grasser
  • Forum-Beiträge: 380

17.12.2009, 15:07:23 via Website

Da es mittlerweile schon 1.6, 2.0, 2.01 gibt bekomme ich immer wieder Probleme gemeldet dass in 2.0 etwas nicht funktioniert.
Ich kann jedoch nicht auf die 2.0 Funktionen zugreifen wenn ich auf 1.5 kompiliere.
Ansonsten könnte ich intern die Version abfragen und je nach Version die verschiedenen Befehle ausführen...

Wie macht ihr das mit mehreren Versionen damit ihr die unterstützt?

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

17.12.2009, 15:24:53 via Website

du kannst nicht auf 2.0 funktionen zugreifen, wenn du mit 1.5 kompilierst - das ist klar

nutzt du in 1.5 funktionen, welche es erst ab 2.0 gibt? denke mal nicht

dann kannst du mit 2.0 kompilieren - das ist dann auch auf 1.5 lauffähig, solange du nichts 2.0 spezifisches benötigst

dafür gibt es die

min-sdk
target-sdk
max-sdk
einträge im manifest

swordiApps Blog - Website

Antworten
Gelöschter Account
  • Mod
  • Forum-Beiträge: 3.188

17.12.2009, 15:28:55 via Website

Die Krutz ist noch grösser: Android 1.1, 1.5, 1.6, 2.0, 2.01. Meines Wissens sind die Apps zwar aufwärts aber nicht abwärtskompatibel. Also keine 2.0 App die man unter 1.5 laufen lassen kann. Man möge mich verbessern, aber glaub die App wird schon intern mit all den 2.0 Geschichten kompiliert die eben in früheren Versionen nicht vorhanden sind.

Edit: Ahhh, hat sich mit Markus überschnitten ...

— geändert am 17.12.2009, 15:29:46

Antworten
Christian Grasser
  • Forum-Beiträge: 380

17.12.2009, 15:32:12 via Website

Danke, das habe ich probiert jedoch hat er mir dann nur mehr Emulatoren mit 2.0 angezeigt !?!
Soeben jedoch nochmal probiert und siehe da es geht ?! :-)

Mich hätte aber auch generell interessiert wie andere (z.B. du) das so machen.
In der app auf Version abfragen und dann anderen Code ausführen oder 2 apps anbieten im market?

Antworten
Gelöschter Account
  • Mod
  • Forum-Beiträge: 3.188

17.12.2009, 15:35:19 via Website

Du meinst eine Art "if $version then...." im Code z.B. ? Das würde mich auch interessieren. Bin bis jetzt aus Zeitmangel noch nicht gross dazu gekommen mal eine grössere App zu schnitzen. Wäre aber angesichts der Versionen ein Punkt.

Antworten
Christian Grasser
  • Forum-Beiträge: 380

17.12.2009, 16:21:53 via Website

Habe es jetzt mal probiert!

Kompilieren auf 2.0 und im Programm auf Version abprüfen.
Wenn 2.0 oder höher dann die neue Funktion ausführen ansonsten den alten Code.

Es würde mit If else schon funktionieren, aber es ist natürlich ein ziemlicher Mehraufwand überall auf die Version zu prüfen wo eine Funktion deprecated ist...
Und vor allem auch Fehleranfällig ...

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

17.12.2009, 16:26:08 via Website

Das würde mich auch interessieren.

Dazu gibts hier nen Artikel

Im übrigen gibt man bei den Projekten ja ein Target sowie eine Min/Max Version an, man kann also durchaus mit dem 2er SDK entwickeln und dabei eine App für Android 1.5 herstellen.

Antworten
Gelöschter Account
  • Mod
  • Forum-Beiträge: 3.188

17.12.2009, 16:29:25 via Website

Geht wohl mehr darum eine "Rundumzufrieden"-App zu entwickeln die auf div. Android-Versionen läuft und je nach Host-OS nützt was geht.

Antworten
Christian Grasser
  • Forum-Beiträge: 380

17.12.2009, 16:33:30 via Website

Michael Hillebrand
Geht wohl mehr darum eine "Rundumzufrieden"-App zu entwickeln die auf div. Android-Versionen läuft und je nach Host-OS nützt was geht.

Genau um das geht es bzw. eigentlich um Probleme die Auftauchen wenn man deprecated Versionen nutzt in einer höheren Version.
Die Funktionieren leider nicht immer zu 100% was an und für sich ja logisch ist, aber eben zu Problemen führt.

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

17.12.2009, 16:37:17 via Website

naja bis jetzt hatte ich das problem nur einmal und zwar bei der sprachausgabe.

diese wird erst ab 1.6 von android selbst übernommen.

habe aber einfach 2 apps gebaut. ist aber auch mit einer app möglich ( einfach abfragen, ob sprachausgabe vorhanden, wenn ja, diese nehmen, wenn nicht, die externe nehmen )

nur fehlt mir die zeit, das anständig zu machen.

swordiApps Blog - Website

Antworten
Gelöschter Account
  • Mod
  • Forum-Beiträge: 3.188

17.12.2009, 16:52:57 via Website

Wir hatten das schon mal mit den Versionen. Wenn die Geschichte mit den Versionen zu sehr auseinander läuft, und evtl. auch noch Handy-Spezifische Versionen gefragt sind.

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

18.12.2009, 11:23:12 via Website

if $Version


das will doch niemand warten! Daher einfach das Strategie Pattern nutzen! Für Version x.y.z gibt es Weg A und für ABC Weg B.
Das ganze kann man dann prima in entsprechende packages legen.

- Mac

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

18.12.2009, 11:35:25 via Website

und das will auch niemand ;)

ich hoffe, das geht nicht noch mehr in diese richtung, weil dann kann ich gleich webdesigner sein und mich mit 5 browsern ärgern :( :(

swordiApps Blog - Website

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

18.12.2009, 11:41:39 via Website

Niemand will das ? Kannst du mir mal sagen wieso, irgendwo musst du das Problem lösen.

Ich habe aber die Befürchtung das es bei einer API die sich rasant weiterentwickelt erstmal so bleiben wird. Siehe dazu meine Fragmentation Frage.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

18.12.2009, 12:31:34 via Website

ja nur weil du das problem lösen musst, heißt es nicht, dass sich jemand wirklich damit beschäftigen will.

kann mir nicht vorstellen, dass entwickler spaß daran haben arbeit zu machen, die nicht wirklich nötig sein sollte.

ein eiPhone entwickler zb muss sich da keine sorgen machen ob er jetzt 800x400 oder 854x400 oder 723x123 oder was weiß ich was, hat

wenn ich schon 30% meiner entwicklungszeit damit verbringen abzuchecken, welche auflösungen es gibt, dann wirds eher uninteressant. und das ist nur ein beispiel. gibt noch genügend andere sachen, die mir da ein wenig in die falsche richtung gehen.

auch wenn es gute lösungen dafür gibt.

— geändert am 18.12.2009, 12:33:50

swordiApps Blog - Website

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

18.12.2009, 13:48:57 via Website

wenn man für Windows, MacOS, PalmOS etc. entwickelt, oder Web- oder JavaME-Apps herstellt, dann muß man auch verschiedene Konfigurationen im Auge behalten, was also ist so schlimm daran, wenn das bei Android nicht anders ist?

Es geht hier doch nicht darum, Spaß an dieser Problematik zu haben, das ist einfach Teil der zu erledigenden Arbeit.
Wenn du das nicht willst, dann mußt du das nicht machen, du kannst deine Apps auch auf ein Gerät beschränken - genau wie beim eiFon :-D

Im übrigen gibts auch beim eiFon SDK deprecated APIs, die der Compiler dich zwar benutzen läßt, bei deren Verwendung du dann aber durch die Prüfung beim Einstellen in den AppStore fällst...

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

18.12.2009, 15:06:40 via Website

ja kann schon sein, dass es beim eiPhone auch etwas gibt, auf das man aufpassen muss, aber bei android gibt es da 1000 sachen

das eine telefon hat die funktion x, das andere hat die funktion y , aber dafür nur die firmware z usw

klar, muss ich dann was anderes machen, wenn es wirklich in diese richtung geht. wie soll sich da jemals der entwicklungsaufwand lohnen, wenn man 1000 verschiedene konfigurationen hat.

warum sind konsolenspiele wesentlich erfolgreicher als pc spiele?? ganz einfach, eine xbox gibt es genau einer konfiguration ( ok - mit oder ohne festplatte, aber das sei mal vernachlässigt )

eine ps3 gibt es auch genau in einer konfiguration und auch bei der wii ist es so.

und die entwickler danken sowas mit sehr sehr guter software. man kann sich auf das wesentliche konzentrieren und muss nicht unmengen an arbeit in nebensächliche dinge stecken.

swordiApps Blog - Website

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

18.12.2009, 16:18:59 via Website

aber bei android gibt es da 1000 sachen
das eine telefon hat die funktion x, das andere hat die funktion y , aber dafür nur die firmware z usw

Welche sind das denn?

Verschiedene Auflösungen?
Meine Layouts sind grundsätzlich relativ, und wenn es "zu viele" Controls werden, verpacke ich die noch schnell in einen ScrollView;
Ergebnis: meine Apps laufen ohne Abfragen/Änderungen auf allen Geräten, von Tattoo bis Archos, Portrait und Landscape, 1.5 - 2.0.1.
Damit deine Apps in Portrait und Landscape auf demselben Gerät ordentlich funktionieren, mußt du doch eh schon mit zwei Auflösungen umgehen können, wo ist also das Problem?

Verschiedene Hardware?
Dir wäre es demnach lieber, wenn es weltweit nur ein Gerät mit Android-System gäbe?
Kannst du doch haben, formulier' dein manifest entsprechend, dann brauchst du nichts mehr zu testen ;-P

Werde mal konkret: was ist an MoneyManager oder DailyCash Hardware- oder Auflösungs- oder Betriebsystem-Abhängig?


wie soll sich da jemals der entwicklungsaufwand lohnen, wenn man 1000 verschiedene konfigurationen hat

Solange du deine Apps für nen Euro oder zwei verkaufst, wird sich der "Aufwand" kaum jemals lohnen, verglichen mit dem, was du als Entwickler in einem Softwarehaus in der gleichen Zeit verdient hättest, insbesondere wenn du (als Selbständiger) nicht nur Entwicklungszeit, sondern auch Resourcen mit einrechnest (Büro, Strom, Heizung, Hardware, Support, ...)
...oder was meinst du mit "lohnen"?

— geändert am 18.12.2009, 16:19:15

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

18.12.2009, 16:37:14 via Website

ob meine apps irgendwas abhängiges benötigen oder nicht, ist ja nicht das thema.

es geht nur in diese richtung und wenn es so weiter geht, dann wird das kein vorteil von android. so denke ich

swordiApps Blog - Website

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

18.12.2009, 17:10:04 via Website

ob meine apps irgendwas abhängiges benötigen oder nicht, ist ja nicht das thema.

Ich glaube doch ;-)
Wenn "normale" Apps (wie deine und meine) also durch die Vielfalt der Konfigurationen gar nicht betroffen sind, was mehr Arbeit angeht, worüber diskutieren wir hier dann eigentlich? :-)

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

18.12.2009, 17:37:58 via Website

naja über den generellen weg, den android einschlägt.

ein wenig mehrarbeit hab ich immer:

schon alleine mit verschiedenen auflösungen muss ich die zumindest mal kurz antesten, ob das alles auch so passt, ohne das einmal gesehen zu haben, lass ich die app aber nicht auf den markt.

nur ein beispiel

swordiApps Blog - Website

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

18.12.2009, 18:08:01 via Website

ein wenig mehrarbeit hab ich immer:
schon alleine mit verschiedenen auflösungen muss ich die zumindest mal kurz antesten, ob das alles auch so passt

Demnach müßten eigentlich nicht nur unterschiedliche Displays abgeschafft werden, sondern auch Landscape-Fähigkeit? :-)
Stimmt, Spielekonsolen haben das ja schließlich auch nicht ;-)

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

19.12.2009, 10:58:48 via Website

naja bei spielekonsolen gibt es eigentlich auch unterschiedliche displays - das stimmt schon und den fernseher kannst auch drehen.

na scherz.

swordiApps Blog - Website

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

19.12.2009, 13:16:57 via Website

es geht nur in diese richtung und wenn es so weiter geht, dann wird das kein vorteil von android. so denke ich

Das ist aber die Richtung die heute wenn den Erfolg bringen wird, wenn auch eher langfristig, eine APIs muss reifen und sie reift bei Android sehr schnell wie ich finde, das ist gut hat aber aus Entwicklersicht Nachteile. Das es unterschiedliche Displays gibt, nun ja, so ist das leben nun mal, jeder Swing Entwickler muss seine Applikation ebenfalls unter verschiedenen Auflösungen testen, das mag hier einfacher sein trifft aber dennoch zu, trotz Layoutmanagern!

Ich habe schon auf dem C64 Programmiert, also Plattformen die sich nicht verändern, das bringt den Vorteil das du für diese Plattform optimieren kannst, aber was Ich an der Diskussion nicht verstehe ist das hier nur Auflösungen ein "Problem" darstellen, es geht vielmehr um ordentliche Kapselung von solchen Problemen.


- Mac

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

19.12.2009, 13:22:13 via Website

die auflösung ist ja nur ein beispiel. haltet euch nicht immer daran fest

swordiApps Blog - Website

Antworten