![]() |
Android-Version herausfinden?
Hallo,
ich google (vielleicht mir falschen Suchbegriffen) seit Stunden, wie kann ich in einer Android-App die Android-Version des Handys / Tablets herausfinden, zusätzlich am besten auch noch den Prozessortyp... Ich habe das Problem, dass es Anwender gibt die versuchen, meine App auf einem Samsung Galaxy Tab 3 (mit Android 4.1.3 und Intel Prozessor) zu installieren, was auch geht, nur dann beendet sich die App von allein ("App wurde angehalten"). Ich wollte dann wenigstens noch eine Meldung ausgeben, dass Android-Version und / oder Prozessor nicht unterstützt werden. Ich habe solch ein teil hier liegen, eine Mini-App mit einem Button und ShowMessage('Hallo') funktioniert, aber schon das Debuggen ist nicht möglich, schwarzer Bildschirm und irgendwann "Anwendung reagiert nicht, Beenden" ... Ciao Stefan |
AW: Android-Version herausfinden?
Ich habe keine Ahnung, ob dir das hilft, aber zwei Minuten google haben bei mir
![]() ![]() Oder suchst du das speziell für Delphi? [edit1] Die schreiben: Zitat:
[/edit1] [edit2] Was ist mit ![]() ![]() [/edit2] Brighty |
AW: Android-Version herausfinden?
|
AW: Android-Version herausfinden?
wenn du nicht willst, das deine APP für "X86" Geräte im AppStore erscheint, dann schmeiße manuell die Embacadero Dummys für MIPS und X86 aus dem APK.
Wenn du es ganz sauber lösen willst, schreibe dir selbst eine "LoaderAPP" per AndroidStudio in Java, da kannst du testen welche Version und welche CPU... Tipp: blockiere für DelphiNDK alles was kleiner 4.4.x(API19) und nicht ARM-CPU ist. Klar "kann" es gehen, es muss aber nicht und wenn man sich an das hält wofür Delphi freigegeben ist, dann fällt alles andere flach und auch nach oben (z.B. XE6/XE7 auf Android6+) fällt wieder viel in den Bereich "kann gehen", aber dann z.B. XE10.x mit Android6 = "sollte gehen":) |
AW: Android-Version herausfinden?
Hallo!
Damit eine FMX App auf Intel läuft muss die Android Version Houdini installiert haben... Damit es dann funktioniert muss Du noch den Loader ändern... ![]() Mavarik |
AW: Android-Version herausfinden?
Danke erst mal für die vielen Tips!
Da habe ich erst mal genug zum Lesen und testen... Leider wird meine App nicht über Google Play verteilt sondern ist "standalone downloadbar" so dass ich keinen Einfluss darauf habe wer das versucht zu installieren. Ja es ist so dass ich am besten direkt beim Start der App selbst prüfen möchte was da vorhanden ist im System (falls das Programm es überhaupt bis dahin schafft) Zitat:
Ciao Stefan |
AW: Android-Version herausfinden?
Liste der Anhänge anzeigen (Anzahl: 2)
Der Tip mit dem Deviceinfo war erst recht vielversprechend, aber ich bekomme auf dem Samsung Tab3 und einem Samsung S5 die gleiche Angabe zum Prozessor (siehe angehängte Bilder) obwohl das eine ein Intel und das andere ein "echter" Arm-Prozessor ist :-(
Hat jemand noch eine Idee wie ich das besser / genauer spezifizieren kann? Ciao Stefan |
AW: Android-Version herausfinden?
Deviceinfo ist ein Delphi-Programm.
Also es läuft immer nur auf einem ARM oder in der ARM-Emulation auf neueren Intels. Kann natürlich sein, dass es die "CPU" seiner Laufzeitumgebung anzeigt und das wäre immer ein ARM. Das Problem gibt es auch bei virtualisierten Windows-Programmen, wo die meisten Version-APIs in einer 32-Bit-Anwendung z.B. x68 anzeigen, obwohl Windows eigentlich ein x64 ist. |
AW: Android-Version herausfinden?
Heißt für mich auf deutsch : "keine Chance"?
Dann müsste ich eine Liste intern pflegen, und die Meldung anhand des Gerätenamens erzeugen? Ciao Stefan |
AW: Android-Version herausfinden?
Ich habe mir die verlinkten Artikel nicht angesehen, aber im Prinzip könnte man die nativen Android API Informationen zur Version auch aus Delphi heraus abfragen können.
Code:
(wobei Build im Package android.os liegt, voll qualifiziert also android.os.Build)
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL; int version = Build.VERSION.SDK_INT; String versionRelease = Build.VERSION.RELEASE; (aus: ![]() |
AW: Android-Version herausfinden?
Das sind aber eigentlich alles Infos die ich schon habe
- Hersteller - Modell - Androidversion Ciao Stefan |
AW: Android-Version herausfinden?
Zitat:
Unter ![]() |
AW: Android-Version herausfinden?
Wie weiter oben beschrieben scheine ich mit Delphi / FMX gar nicht so weit "nach oben vordringen zu können" und bekomme als Prozessor immer nur das "angeboten" was das OS mit dem Intel Atom Prozessor für mich emuliert!
Ciao Stefan |
AW: Android-Version herausfinden?
Zitat:
|
AW: Android-Version herausfinden?
Viellleicht muss man unter "libHoudini" danach suchen, die müssten ja eigentlich so eine Schnittstelle zur Verfügung stellen um festzustellen bin ich "nativ" oder "houdiniert".
Rollo |
AW: Android-Version herausfinden?
Was mich noch wundert: Wenn dein Programm unter ARM läuft, nur emuliert nicht. Was genau geht da schief? Also wenn die CPU effektiv ein ARM ist (auch wenns eigentlich nur emuliert ist), warum überhaupt Interesse an der Realität zeigen? (klar, es stürzt ab, aber dann ist das vielleicht nur was ganz Kleines, was sich vllt einfach fixen lässt :P)
Brighty |
AW: Android-Version herausfinden?
Leider nicht!
Ein Hallo Welt mit einem Button, der dann eine Messagebox anzeigt, funktioniert, aber die App hat Datenbankzugriff (SQLite), SSL Mailkommunikation (Open SSL 1.02h eingebunden wegen Android 6) und und und... Und Debuggen geht auf dem Device auch nicht, ich sehe es im Explorer, kann da Dateien schieben, ich sehe es als Device im RAD Studio und kann über "Starten" auch die App aufs Device laden und ausführen, aber beim Debuggen wird Anwendung aufgerufen und ab da passiert nichts mehr, Tablet bleibt schwarz und irgendwann "reagiert nicht mehr, Beenden..."? Und nun auf Verdacht Routinen umbauen, Compilieren, runterladen, testen, ... fehlt mir die Zeit, Momentan habe ich 'zig Stellen wo ein neues Formular erzeugt wird und "Anwendung wurde beendet" erscheint, es gibt aber andere Formulare die sich anzeigen lassen, ein System konnte ich nicht erkennen und ohne Debuggen wird das nicht lösbar! Ist ein Formular erst mal da gibt es Funktionen die funktionieren und andere wo die App einfach beendet wird. Alle relevanten Codestellen sind mit Try / Except versehen und schreiben eigentlich eine Fehler-Logdatei, auf dem betreffenden Device aber ist diese leer! Ciao Stefan |
AW: Android-Version herausfinden?
Wie sieht es in der Devicesimulation auf dem Desktop aus? Funktioniert es da? Ich kenne mich nicht in der Tiefe aus, aber dort kann man ja auch von x86 auf ARM emulieren, oder?
Brighty |
AW: Android-Version herausfinden?
Liste der Anhänge anzeigen (Anzahl: 1)
Das kann ich Dir nicht beantworten, ich habe lange vergeblich versucht, einen "vernünftig laufenden Emulator" für RAD Studio zu finden, alles was ich hatte brauchte zum Starten 5 Minuten und war so was von grottenlangsam, das Thema habe ich dann nicht mehr weiter verfolgt.
Da die Emulation auf dem PC jedoch was ganz anderes ist als Intel da mit seinem Atom-Prozessor und Samsung mit seinem Android 4.4.2 macht, brauche ich eigentlich keinen Vergleich zur Emulation unter Windows zu probieren! Ciao Stefan Nachtrag: Ich habe einen alten Emulator rausgekramt, auch da liefert DeviceInfo einen ARM-Prozessor (siehe Anhang) , Betriebssystem ist ein Windows 10 mit Intel Core 5 |
AW: Android-Version herausfinden?
Ich habe das bei mir so gelöst, dass ich /proc/cpuinfo abfrage und nach "placeholder" suche, das stand dort bei meinen Tests immer drin, wenn die Houdini-Emulation aktiv war.
Wichtig ist, dass bei bei x86 und OpenSSL-Bibliotheken nicht die mit ausgelieferte *.so verwendet wird, sondern die vom System. Unter Houdini funktioniert das Laden von ARM-*.so-Dateien nämlich nicht (zumindest mit Delphi). Als Android-Emulator kann ich übrigens BlueStacks empfehlen, der läuft ausreichend schnell, nervt nur etwas, weil der immer irgendwelche Apps installiert. |
AW: Android-Version herausfinden?
Zitat:
Das hatte ich ja gemacht, aber ab Android6 funktioniert das nicht mehr! Daher habe ich die SSL - so-Files vom 1.02h eingebaut. Zitat:
Zitat:
Ciao Stefan |
AW: Android-Version herausfinden?
Schöne Schxxxx !
Ich habe den nächsten Anwender wo unsere App nicht läuft, ein Asus Transformer Pad mit NVIDIA Tegra 3 CPU! Ich konnte nirgends etwas brauchbares finden, befürchte aber das das wie bei den Intel Atom "kein echter Arm Prozessor ist"? Die dort laufende Android-Version ist 4.2.1 Ciao Stefan |
AW: Android-Version herausfinden?
Zitat:
![]() |
AW: Android-Version herausfinden?
Zitat:
Aber Tegra 3 bassiert auch auf 'nem ARM. Wie heißt es so schön "mit Snapdragon vergleichbar", aber was heißt hier vergleichbar? (Intel und AMD sind ja auch vergleichbar, bei den x86-Plattformen, aber eben nicht identisch, in allen Befehlen) |
AW: Android-Version herausfinden?
Da werde ich zukünftig noch etliche Probleme erwarten dürfen :-(
Ich bin in sofern "Hardware Noob", welche Prozessoren sind denn nun wirklich mit "RAD Studio Adroid Apps" kompatibel, auf was muss man achten? Ciao Stefan |
AW: Android-Version herausfinden?
Zitat:
Delphi-Quellcode:
function GetProcCPUInfo: String;
{$IF Defined(ANDROID)} var FS: TFileStream; ch: Char; begin result := ''; if FileExists('/proc/cpuinfo') then begin try ch := #0; FS:= TFileStream.Create('/proc/cpuinfo', fmOpenRead); while (FS.Read(ch, 1) = 1) do result := result + ch finally FS.Free; end; end; end; {$ELSE} begin result := 'Nicht implementiert'; end; {$ENDIF} function IsHoudiniEmulation: Boolean; begin result := false; {$IF Defined(ANDROID)} if GetProcCPUInfo.Contains('placeholder') then result := true; {$ENDIF} end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz