Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi Android: Was ist die "richtige" SDK API Version? (https://www.delphipraxis.net/178728-android-ist-die-richtige-sdk-api-version.html)

Mavarik 23. Jan 2014 15:17

Android: Was ist die "richtige" SDK API Version?
 
Hallo Zusammen!

Welche Version muss ich eigentlich angeben, damit die App auf einen Android mit Betriebssystemversion 4.0 oder kleiner läuft?

Ist die neuste API/SDK Version abwärtskompatible?

oder wie läuft das?

Mavarik

Meflin 23. Jan 2014 15:24

AW: Android: Was ist die "richtige" SDK API Version?
 
Zitat:

Zitat von Mavarik (Beitrag 1245064)
Welche Version muss ich eigentlich angeben, damit die App auf einen Android mit Betriebssystemversion 4.0 oder kleiner läuft?
Ist die neuste API/SDK Version abwärtskompatible?

4.0 oder kleiner?? Ist völlig falsch herum gedacht. Man gibt die SDK-Version an, die mindestens notwendig ist, damit die App ausgeführt werden kann (weil man eben Features verwendet, die erst mit dieser Version des SDKs eingeführt wurden). Auf allen höheren Android-Versionen läuft die App dann sowieso.

Hier gibts die Zuordnung von API-Leveln zu Versionen: http://developer.android.com/guide/t...html#ApiLevels

Mavarik 23. Jan 2014 16:22

AW: Android: Was ist die "richtige" SDK API Version?
 
OK Also Wenn ich ab Version 4.0 unterstützen will muss ich API LVL 14 nehmen.

Und ein API Lvl 19 läuft dann auch nur auf Android 4.4! Richtig?

Und was ist mit der SDK Version?

XE5 hat jetzt bei mir 2 verschiedene SDK Versionen 20 & 22...

Das SDK 22.0.1 hat API 17 NDK 14 aapt(4.2.2) die Version läuft nur auf meinen Nexus 10 und anderen Pads
Das SDK 20.0.3 hat API 16 NDK 14 aapt(4.2.2) die Version läuft jetzt auch auf Samsung S3 & HTC One

Obwohl das S3 Android Version 4.3 drauf hat und nach der Tabelle mit API LvL 18 laufen sollte...

Häää :stupid: Wo ist der Trick?

Mavarik

Meflin 23. Jan 2014 16:32

AW: Android: Was ist die "richtige" SDK API Version?
 
Zitat:

Zitat von Mavarik (Beitrag 1245089)
Und was ist mit der SDK Version?

Das SDK 22.0.1 hat API 17 NDK 14 aapt(4.2.2) die Version läuft nur auf meinen Nexus 10 und anderen Pads
Das SDK 20.0.3 hat API 16 NDK 14 aapt(4.2.2) die Version läuft jetzt auch auf Samsung S3 & HTC One

Obwohl das S3 Android Version 4.3 drauf hat und nach der Tabelle mit API LvL 18 laufen sollte...

Häää :stupid: Wo ist der Trick?

Sorry in meinem vorigen Beitrag meinte ich API-Level mit dem was ich SDK-Version genannt habe... Die SDK-Version die du hier ansprichst ist das was du als Entwickler auf dem Rechner hast, und das hat absolut garnichts mit den Zielgeräten zu tun. Das Galaxy S3 wurde mit 4.0.4 bzw API-Level 15 ausgeliefert. Deswegen wird es vermutlich als kompatibel eingestuft. Beim NDK hat man halt immer auch noch die Hardwarekompatibilität zu beachten, die den "normalen" Android-Entwickler einfach nicht interessiert.

Mavarik 24. Jan 2014 10:34

AW: Android: Was ist die "richtige" SDK API Version?
 
Zitat:

Zitat von Meflin (Beitrag 1245093)
Sorry in meinem vorigen Beitrag meinte ich API-Level mit dem was ich SDK-Version genannt habe... Die SDK-Version die du hier ansprichst ist das was du als Entwickler auf dem Rechner hast, und das hat absolut garnichts mit den Zielgeräten zu tun. Das Galaxy S3 wurde mit 4.0.4 bzw API-Level 15 ausgeliefert. Deswegen wird es vermutlich als kompatibel eingestuft. Beim NDK hat man halt immer auch noch die Hardwarekompatibilität zu beachten, die den "normalen" Android-Entwickler einfach nicht interessiert.

Ich habs immer noch nicht verstanden.

Was bedeutet den jetzt die SDK Version?

Und wieso läuft eine App mit API Version 17 nicht auf einem S3 aber eine mit Version 16 schon?
Wenn Du sagst, dass S3 hat API-Level 15. Mein S3 hat aber Android Version 4.3 müsste also bis API Level 18 laufen, oder?
Der API-Level ist doch gemäß der Tabelle mit der Android Version zu setzen, oder?


Mavarik

Meflin 24. Jan 2014 11:01

AW: Android: Was ist die "richtige" SDK API Version?
 
Zitat:

Zitat von Mavarik (Beitrag 1245149)
Und wieso läuft eine App mit API Version 17 nicht auf einem S3 aber eine mit Version 16 schon?
Wenn Du sagst, dass S3 hat API-Level 15. Mein S3 hat aber Android Version 4.3 müsste also bis API Level 18 laufen, oder?
Der API-Level ist doch gemäß der Tabelle mit der Android Version zu setzen, oder?

Solange auf dem Zielgerät ein API-Level (= Android-Version) läuft, welches größer oder gleich dem von dir definierten mindest-API-Level ist, ist von dieser Seite her die Kompatibilität hergestellt.

Jetzt verwendet aber der Ansatz den Delphi verfolgt nicht nur das normale Android-SDK (es werden ja keine Java bzw. Dalvik-Anwendungen erstellt), sondern auch das NDK. Dazu kommt noch das SDK von Embarcadero selbst (was vermutlich die SDK-Version sein soll, die du da in deiner Liste hast, ich weiß ja nicht, wo die her ist). Und hier bestehen eben nochmal Abhängigkeiten zur konkreten Hardware des Gerätes (wie z.B. dieses leidige NEON-Thema). Das hat mit der API-Level-Kompatibilität nichts zu tun.

arnof 24. Jan 2014 11:30

AW: Android: Was ist die "richtige" SDK API Version?
 
Also möglichst kleinen level benutzen, dann läuft es auf mehr Geräten.

Wie ich schon mal geschieben hatte, hat XE5 in der manifestdatei den falschen LEVEL reingeschrieben, d.h. dann wird die App installiert ohne das diese dort laufen kann (z.B. dein Fatal Error kommt dann)

Mavarik 14. Sep 2014 13:55

AW: Android: Was ist die "richtige" SDK API Version?
 
OK... Nochmal für "Die Dummen".

So ganz habe ich es immer noch nicht geschnallt... :stupid:

Laut DocWiki werden die Android Versionen:
- KitKat
- Jelly Bean
- Ice Cream Sandwich
- Gingerbread
unterstützt.

Honycomp nicht! (Warum auch immer)

OK...

Das SDK ist "meine" lokale Umgebung, richtig?

Welchen von den zig Pfaden in den Einstellungen muss ich den jetzt umstellen, um eine App für die unterschiedlichen Versionen zu erzeugen?

Es ist doch richtig, dann eine App für Gingerbread auch auf den höheren Systemen läuft, oder?

Hat dann eine App mit Gingerbread Einschränkungen?

Mavarik

Mavarik 16. Sep 2014 16:05

AW: Android: Was ist die "richtige" SDK API Version?
 
*hust* niemand?

Sir Rufo 16. Sep 2014 16:31

AW: Android: Was ist die "richtige" SDK API Version?
 
Ich mache mal einen Schuss ins Blaue ohne Anspruch auf Richtigkeit:

Wenn du nur die Funktionen benutzt, die von Delphi bereitgestellt werden, dann läuft die Anwendung auf allen genannten Versionen.

Importierst du dir zusätzlich noch irgendwelche Klassen/APIs, dann funktioniert die Anwendung nur noch auf den Versionen, die diese API auch anbietet

Mavarik 16. Sep 2014 22:12

AW: Android: Was ist die "richtige" SDK API Version?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1272798)
Ich mache mal einen Schuss ins Blaue ohne Anspruch auf Richtigkeit:

Wenn du nur die Funktionen benutzt, die von Delphi bereitgestellt werden, dann läuft die Anwendung auf allen genannten Versionen.

Importierst du dir zusätzlich noch irgendwelche Klassen/APIs, dann funktioniert die Anwendung nur noch auf den Versionen, die diese API auch anbietet

und was ist hiermit?

Zitat:

Zitat von Mavarik (Beitrag 1272527)
Welchen von den zig Pfaden in den Einstellungen muss ich den jetzt umstellen, um eine App für die unterschiedlichen Versionen zu erzeugen?

Mavarik

Sir Rufo 16. Sep 2014 22:31

AW: Android: Was ist die "richtige" SDK API Version?
 
Wenn meine Vermutung zutrifft, dann keinen :stupid:

Mavarik 17. Sep 2014 09:36

AW: Android: Was ist die "richtige" SDK API Version?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1272839)
Wenn meine Vermutung zutrifft, dann keinen :stupid:

Doch mit Sicherheit... Irgendwie muss ich der IDE ja sagen wo gegen "sie" linken soll.

mkinzler 17. Sep 2014 09:57

AW: Android: Was ist die "richtige" SDK API Version?
 
Das macht das SDK/NDK, nicht Delphi selber

Mavarik 17. Sep 2014 10:47

AW: Android: Was ist die "richtige" SDK API Version?
 
Zitat:

Zitat von mkinzler (Beitrag 1272860)
Das macht das SDK/NDK, nicht Delphi selber

Na Prima... Und wie stelle ich das um, wenn ich gegen Android 2.3 linken möchte?

Union 17. Sep 2014 12:22

AW: Android: Was ist die "richtige" SDK API Version?
 
Dann hast Du ein Problem, denn die Version hat es nie gegeben ;) Den API-Level stellst Du im SDK Manager unter SDK-API-Level Speicherort ein. Übrsicht der Versionen und API-Levels z.b. hier.

Mavarik 17. Sep 2014 12:35

AW: Android: Was ist die "richtige" SDK API Version?
 
Zitat:

Zitat von Union (Beitrag 1272870)
Den API-Level stellst Du im SDK Manager unter SDK-API-Level Speicherort ein. Übrsicht der Versionen und API-Levels z.b. hier.

Das ist mir schon klar...

Nur den?
C:\Users\Public\Documents\Embarcadero\Studio\14.0\ PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\platforms\android-19
oder auch
C:\Users\Public\Documents\Embarcadero\Studio\14.0\ PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\build-tools\android-4.4\Aapt.exe

was ist hiermit?
C:\Users\Public\Documents\Embarcadero\Studio\14.0\ PlatformSDKs\android-ndk-r9c\platforms\android-14
C:\Users\Public\Documents\Embarcadero\Studio\14.0\ PlatformSDKs\android-ndk-r9c\platforms\android-14\arch-arm\usr\lib;
C:\Users\Public\Documents\Embarcadero\Studio\14.0\ PlatformSDKs\android-ndk-r9c\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi-v7a


Diese Pfade SDK (19) NDK (14) wird bei mir als SDK 22.3 unter den Android SDK-Versionen gelistet...

Mavarik

Mavarik 18. Sep 2014 13:30

AW: Android: Was ist die "richtige" SDK API Version?
 
Hat den keine mal ne aussagekräftige Antwort für mich,
Welche API & NDK Level man zusammen verwenden muss/kann?

Keine Ahnung woher der SDK-Versionsname kommt...

Aber: SDK-API-Level 10 (GINGERBREAD_MR1 Plattform Version 2.3.3 & 2.3.4
Funktioniert nicht...
Ich habe mittlerweile rausgefunden woran es liegt: (Das Attribut "largeheap" aus der AndroidManifest.xml existiert nicht.)
ohne das geht es dann... (Extern per Batch)

SDK-API-Level 11 geht, obwohl das ja eigentlich nicht unterstützt wird, laut DocWiki.
Dazu habe ich mal "blind" NDK-Level 12 genommen...
Das läuft auf meinen Nexus 10... schon mal... :wall:
(Eigentlich sollte das doch nicht unterstützt sein...)

Mavarik

Sir Rufo 19. Sep 2014 08:31

AW: Android: Was ist die "richtige" SDK API Version?
 
Warum stellst du das per Batch ein?

Hier steht es doch was du machen sollst:
http://docwiki.embarcadero.com/RADSt...Bereitstellung
Zitat:

Um die Ausgabedatei AndroidManifest.xml eines einzelnen Projekts anzupassen, bearbeiten Sie den Inhalt von AndroidManifest.template.xml.
Das ist diese Datei mit den Platzhaltern - und die kann man überschreiben oder auch entfernen ;)
XML-Code:
<?xml version="1.0" encoding="utf-8"?>
<!-- BEGIN_INCLUDE(manifest) -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="%package%"
        android:versionCode="%versionCode%"
        android:versionName="%versionName%">

    <!-- This is the platform API where NativeActivity was introduced. -->
    <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" />
<%uses-permission%>
    <application android:persistent="%persistent%"
        android:restoreAnyVersion="%restoreAnyVersion%"
        android:label="%label%"
        android:installLocation="%installLocation%"
        android:debuggable="%debuggable%"
        android:largeHeap="%largeHeap%"
        android:icon="%icon%"
        android:theme="%theme%"
        android:hardwareAccelerated="%hardwareAccelerated%">
        <!-- Our activity is a subclass of the built-in NativeActivity framework class.
             This will take care of integrating with our NDK code. -->
        <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
                android:label="%activityLabel%"
                android:configChanges="orientation|keyboardHidden"
                android:launchMode="singleTask">
            <!-- Tell NativeActivity the name of our .so -->
            <meta-data android:name="android.app.lib_name"
                android:value="%libNameValue%" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <%activity%>
        <receiver android:name="com.embarcadero.firemonkey.notifications.FMXNotificationAlarm" />
        <%receivers%>
    </application>
</manifest>
<!-- END_INCLUDE(manifest) -->
BTW: Default wird
Delphi-Quellcode:
%minSdkVersion%
mit
Delphi-Quellcode:
9
ersetzt und
Delphi-Quellcode:
%targetSdkVersion%
mit
Delphi-Quellcode:
11
. Eine Einstellung in der IDE habe ich dafür nicht gefunden :roll: aber man kann das ja auch im Template einfach fest überschreiben

Mavarik 21. Sep 2014 14:52

AW: Android: Was ist die "richtige" SDK API Version?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1273088)
Warum stellst du das per Batch ein?

Ich stelle das nicht im Batch ein, sondern überprüfe im Batch die Fehlermeldungen.

PAClient Error Code 1 ist nicht so aussagekräftig.

Zitat:

Zitat von Sir Rufo (Beitrag 1273088)
BTW: Default wird
Delphi-Quellcode:
%minSdkVersion%
mit
Delphi-Quellcode:
9
ersetzt und
Delphi-Quellcode:
%targetSdkVersion%
mit
Delphi-Quellcode:
11
. Eine Einstellung in der IDE habe ich dafür nicht gefunden :roll: aber man kann das ja auch im Template einfach fest überschreiben

Genau und Schwup die Wup laufen alle Android Programme nicht mehr, wenn man die targetSdkVersion wie beschrieben setzt.
Dazu gibt es auch einen QC... Fehler behoben mit XE7...


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:12 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