Android NDK und Google Play filtern
Den Google Play appstore automatisch filtern Sie Ihre Anwendung auf Geräten mit kompatiblen CPU-Architektur. E. g. wenn Sie eine Bibliothek haben, die nur kompiliert für ARMv5, Ihre app wird nur zeigen, bis für Geräte mit ARMv5-oder ARMv7-Prozessoren.
Was ist, wenn ich ein Java-alternative und möchte, dass meine app heruntergeladen werden, die von nicht-ARM-Geräten auch?
E. g. Ich fange eine exception beim laden der externen Bibliothek und der Implementierung einer geeigneten alternative in Dex-bytecode (Java).
Wenn ich hochladen .apk-das Android-Developer-Konsole sagt:
"Diese apk Anfragen 1 native Plattformen, die verwendet werden, für die Google Play filtern.
armeabi"
Benötige ich zum kompilieren dummy-Bibliotheken für x86-und MIPS? Dann in meinem Java-code überprüfen Sie die Prozessor-Architektur zu wissen, wenn ich tatsächlich die Bibliothek benutzen? Es sollte eine bessere Lösung sein.
Soweit ich weiß, gibt es nichts in der Manifest über die CPU-Architektur, und ich kann nicht einen Weg finden, in die Entwickler-Konsole, um diese filter aus.
Hoffentlich jemand, der weiß viel mehr als ich über Google Play filtern und die NDK kennt die Antwort.
- möglich umgehen / mocking Idee: stackoverflow.com/questions/15146174/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Während trapping für loadLibrary Fehler funktioniert auf jedem Gerät (zumindest alle, die ich ausprobiert habe, einschließlich GTVs), aber der Play Store wird nicht angezeigt auf Geräten, wenn das ABI für diese Plattform existiert nicht in der apk.
Aus der docs ( http://developer.android.com/guide/appendix/market-filters.html ): Eine Anwendung, die native Bibliotheken für eine bestimmte Plattform (ARM-EABI-v7 oder x86, zum Beispiel) zu sehen sind nur auf Geräten, die Unterstützung dieser Plattform.
In der Theorie, bauen für alle Plattformen wäre in der Lage richten Sie alle Geräte, aber in der Praxis gibt es einige Geräte wie Google Tv, der Bericht kein ABI, was bedeutet, dass nur apks, die kein nativer code wird angezeigt im Play Store auf diesen Geräten. Sie können mehrere apks, jedoch 1 ohne nativen code und 1, die mit allen Plattformen, die Unterstützung Ihrer nativen code.
Lesen Sie über multiple apk support hier: http://developer.android.com/guide/market/publishing/multiple-apks.html
Gibt es eine sehr vollständige Antwort auf die gleiche Frage hier : http://grokbase.com/t/gg/android-ndk/125v31e6wy/play-store-market-filtering-of-ndk-libs
Lassen Sie mich nach meinen eigenen Lösung, es ist fast das gleiche hab ich hier gepostet : Android-Bibliothek .also mit x86-Architektur fehlen? (Vuforia)
So haben Sie die regelmäßigen Android.mk kann nicht kompiliert auf x86-Architektur, da die Bibliothek (libExternalLibrary.so bist du mit nur für die arm-archi.
Sie möchten bauen ein .so (libMyLibraryBasedOnExternalLibrary.so) der auf dieser Bibliothek basiert, und es wird natürlich nie kompiliert auf x86 ohne die Bibliothek.
Die Idee ist das generieren von Dummy-Bibliotheken für x86-direkt direkt im Android.mk, bedingte Kompilierung Anweisungen.
1) Erstellen Sie 2-dummy .cpp Dateien Dummy0.cpp und Dummy1.cpp exemple Dummy0.cpp sieht wie folgt aus :
Dann, Bearbeiten Sie den Android.mk, baut Ihr die Bibliothek und ändern Sie diese wie folgt :
Natürlich, stellen Sie sicher, dass in Ihrem code, die Sie nie rufen Sie die Bibliothek, wenn Ihre app ausgeführt wird, auf einem x86-Gerät nur :