Mehrere Versionen unterstützen

  • Antworten:8
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 4

29.08.2014, 19:22:33 via Website

Moin,

ich bin ziemlich neu in Sachen Entwicklung für Android und möchte mit meiner App jetzt die Android L Developer Preview, aber auch alles andere ICS aufwärts unterstützen. Dafür habe ich jetzt einmal res/values/styles.xml mit einem Holo-Theme und einmal res/values-v21/styles.xml mit einem Material-Theme.

Damit ich die App auf älteren Geräten mit ICS laufen lassen kann, habe ich die compileSdkVersion in build.gradle zu 14 geändert. Aber wenn ich das mache, kann ich das Material-Theme nicht mehr nutzen:

Cannot resolve symbol 'android:Theme.Material.Light'

Welche SDK Versionen muss ich wo angeben, damit die App auf ICS läuft, ich aber trotzdem Android L-Features nutzen kann? Weiß da vielleicht jemand genaueres? :)

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="schemas.android.com/apk/res/android" //Wegen Spam-Verdacht ge&auml;ndert
package="de.howha.rnvinfo" >

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-sdk android:minSdkVersion="14"
    android:targetSdkVersion="L" />

<application

   //...

</application>

</manifest>

build.gradle:

apply plugin: 'com.android.application'

android {
compileSdkVersion 14
buildToolsVersion "20.0.0"

defaultConfig {
    applicationId "de.howha.rnvinfo"
    minSdkVersion 14
    targetSdkVersion 'L'
    versionCode 1
    versionName "1.0"
}

buildTypes {
    release {
        runProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile files('src/main/libs/json-simple-1.1.1.jar')
}

Antworten
  • Forum-Beiträge: 11.137

29.08.2014, 19:30:30 via App

Ich nehme an manche Themes sind nicht kompatibel.
Du musst dich für eine entscheiden
Versuche doch einfach ein Testprojekt für ICS zu erstellen und dann prüfen inwiefern dass auf android L tut.

Ps Wie testest du das denn?
Mit dem Emulator,oder?
Ich würde dass auch mal mit meiner App testen hast du da nen Link für mich?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 4

29.08.2014, 19:42:04 via Website

Danke für deine Antwort. :) Ich habe bereits ein Testprojekt für ICS erstellt, und das läuft auch auf L. Aber eben mit einem Holo-Theme, das ich nicht zu einem Material-Theme ändern kann, ohne dass die App für ICS inkompatibel wird. Es muss doch möglich sein, für L ein Material- und für ICS+ ein Holo-Theme zu nutzen :/ Habe dazu im Internet auch schon mehrere Lösungen gefunden, die das genauso machen, nur weiß ich nicht, welche SDK Versionen ich angeben soll.

Ich teste die App mit einem Nexus 5 (L), einem S3 Mini (Jelly Bean) und einem Xperia U (ICS). Meinst du einem Link zu dem Emulator oder zur App? :D

Antworten
  • Forum-Beiträge: 11.137

29.08.2014, 20:42:28 via App

Ne ich meinte wie du es testest aber das finde ich schon selbst heraus.
Es gibt wohl noch keine gute Lösung dafür.
Was spricht denn gegen ein normales Holo Design?
Oder was sind für dich die Ausschlaggebenden Unterschiede?
Es wird bestimmt nich eine offizielles downgrade des Designs geben in Form einer supportlib könnte ich mir das vorstellej.
Solange musst du dich wohl mit einem Holo zufriedengeben.
Hat ja bisher bei allen apps im store auch fast keine. (prozentual gesehen)

Edit: Ich werde es mal testen mit meiner App und schauen ob das neue Design von Android L wirklich besser ist.
Vlt. gibts ja auch in kürze eine Technik die beide Designs einbinden lässt und je nach Android Gerät das Design wählt.
Aber wenn du dir mal die Geräterversionsverteilung anschaust dann benötigst du um die Meisten Geräte zu erreichen eine Unterstützung bis 3.0 oder sogar bis 2.3

— geändert am 29.08.2014, 20:45:54

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 4

30.08.2014, 02:17:11 via Website

Mir geht es tatsächlich nur um das Design und ein paar zugehörige Features, wie das Färben der Status Bar. Es scheint viele Leute mit demselben Problem zu geben, und jetzt habe ich das gefunden:

If you compile against a preview SDK (android-L), the build tools will lock minSdkVersion and targetSdkVersion to that same API level. This results in the produced application being unable to be installed on devices running older releases of Android, even if your application isn't doing anything specific to L.

reddit.com/r/androiddev/comments/297xli/howto_use_the_v21_support_libs_on_older_versions/

Es ist zwar auch eine Lösung beigelegt, aber da warte ich dann lieber bis zum offiziellen Relase. Danke für deine Hilfe:)

— geändert am 30.08.2014, 02:18:48

Antworten
  • Forum-Beiträge: 11.137

30.08.2014, 09:59:57 via Website

Ich denke mit Android L werden noch ein Paar Probelme mit der Unterstützung nach unten entstehen.
Ist ja bei KitKat oder JellyBean nur noch mit Supportlibs etc. möglich.
Daas finde ich schon kompliziert genug.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 4

30.08.2014, 15:33:23 via Website

So war das ja auch geplant. Die App sollte auf ICS+ mit einem Holo-Theme, aber auf Android L mit einem Material-Theme laufen. Ich hatte ja schon genau das mit den verschiedenen Ordnern gemacht, nur ließ mich Android Studio die App nicht mit einer minSdkVersion von 14 und einer targetSdkVersion von L compilen.

Das liegt, laut dem oben verlinkten Reddit-Post, daran, dass Android L noch eine Preview Build ist. Mit dem offiziellen Release soll sich das dann ändern.

Antworten
  • Forum-Beiträge: 11.137

30.08.2014, 16:28:47 via App

Achso in eclipse war das anders da konnte ich mein Projekt auf beiden Versionen starten

— geändert am 30.08.2014, 16:29:04

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten