Ich habe eine Version meiner App auf Google Play veröffentlicht und bin heute Morgen mit einer Reihe unglücklicher Kunden aufgewacht. Die neueste Version der App integriert Unterstützung für einen Bluetooth Low Energy (BTLE) Herzfrequenzmesser.
Die App läuft unter Android 4.3 und 4.4 einwandfrei, stürzt jedoch bei 4.0, 4.1 und 4.2 mit folgendem Fehler ab:
%Vor%
Der Fehler tritt auf, wenn eine Absicht in einem einfachen Onclick ähnlich der folgenden erstellt wird ...
%Vor%
Nachdem ich ein 4.2-Tablet rausgehackt habe, um das Problem zu replizieren, bin ich zu dem Schluss gekommen, dass es mit dieser neuen Version der Bluetooth LE unterstützenden App zu tun hat, die in SDK 4.3 und höher aktiviert ist. Wenn ich alle Referenzen auf Bluetooth in MainActivity lösche, geht der Absturz bei 4.2 und früheren Geräten verloren.
Mein Verständnis beim Lesen der Dokumentation war, dass man eine App schreiben könnte, die die Bluetooth LE-Funktionalität enthält, und sie würde auf älteren Geräten laufen, solange man darauf achtet, BTLE-Code nicht zu verwenden / p>
%Vor%
Daher enthält meine manifest.xml nicht Folgendes, da dies den Download auf ältere Geräte verhindern würde und ich möchte natürlich, wenn möglich, eine einzelne Codebasis beibehalten ...
%Vor%
Erste Frage, ist meine obige Annahme in der Lage, BTLE-Code in SDKs vor 4.3 korrekt zu machen? Wenn nicht, muss ich wirklich zwei Versionen der App erstellen ... eine für Leute, die 4.3 und später verwenden und eins für alle anderen?
Es gibt viele StackOverflow-Posts über java.lang.NoClassDefFoundError und ich glaube, ich habe die meisten relevanten gelesen. Viele schlagen vor, dass ich den Java-Buildpfad überprüfe, um sicherzustellen, dass Android Private Libraries und Android-Abhängigkeiten überprüft werden. Sie sind. Einige schlagen vor, den gen-Ordner vor den src-Ordner zu verschieben, aber das scheint keinen Unterschied zu machen.
Ich würde ein Bild des Eclipse-Java-Buildpfads posten, aber da dies mein erster Beitrag ist, habe ich nicht die 10 Reputationspunkte, die zum Einfügen eines Bildes benötigt werden. Hier ist ein weiterer Beitrag, dem ich folgte ... Android java.lang.NoClassDefFoundError
Also, zweite Frage, irgendwelche anderen Gedanken darüber, was mit dem Build-Pfad falsch sein könnte?
vielen Dank im Voraus.
Update ... irgendwie, indem ich eine Frage stelle, habe ich genug Punkte, um Bilder vom Java-Build-Pfad zu posten. Wie @Ashoke hervorhebt, denke ich, dass es etwas mit dem falschen Build-Pfad zu tun hat oder Bibliotheken unterstützt.