Ich habe eine einfache Anleitung zur Installation eines Android-x86 in einer VM gefunden ( Handbuch ).
Verbindung zu Eclipse und alles funktioniert gut, aber die Installation meiner App auf der VM schlägt mit folgenden Fehlern fehl:
Ich habe den Fehler bei Google gesucht und ein kleines Python-Skript gefunden, um das Problem zu beheben, aber es funktioniert nicht ( Skript ). Nach der Ausführung des Skripts habe ich den gleichen Fehler bekommen.
Ich benutze Android-x86 2.2 generisch, mehr Details finden Sie hier: Release 2.2
Gibt es eine Möglichkeit, das Problem zu beheben?
BEARBEITEN:
Ich habe alle 2.2 Versionen getestet. Nur generische und sparta arbeiten im Allgemeinen, aber niemand akzeptiert meine apk.
Auch mit adb install <packagefile>
versucht.
EDIT2:
Ich habe die empfohlenen Tools von @Vlad ausprobiert. Es funktioniert teilweise nach der Unterzeichnung der Apk. Schließlich habe ich die apkTools verwendet und die alten Dateien von apkEdit durch die neuen vom apktool.
Hier ist der Fehler, wenn ich versuche, die normale apk: Failure [INSTALL_FAILED_INVALID_APK]
Fehler Package xyz has mismatched uid: 10044 on disk, 10045 in settings
verursacht durch den vorhandenen Ordner /data/data/xyz/
.
In diesem Nachrichtenordner existiert und hat einen anderen Besitzer (10044) als jetzt installiert (10045). Es wird durch vorherige unsaubere Installation verursacht.
Zum Beispiel ist die vorherige Installation mit einigen Fehlern fehlgeschlagen und erstellte Ordner werden nicht gelöscht.
Weil im Ordner können Daten von anderen App Android kann nicht zulassen, verwenden Sie es. PackageManager
versuche es auf verschiedene Arten zu beheben, aber wenn dies nicht möglich ist - erhalte App verschiedene dir und zeige diese Nachricht.
Bessere Lösung - App installieren und säubern entfernen Sie es. Danach installieren Sie es erneut.
Eine andere Lösung - entfernen Sie den Ordner /data/data/xyz/
in mancher Hinsicht. Vielleicht brauchst du root dafür.
Code von PackageManager
(Kommentare können sehr hilfreich sein):
Das Problem hatte mit einem Programm namens "dexopt" zu tun, das bestimmt ein Puffer fester Größe namens "LinearAlloc" von Anwendungen, die auf einem installiert sind bestimmtes Gerät. Während die Puffergröße für neuere 8 oder 16 MB groß ist Android-Versionen wie Ice Cream Sandwich und Jelly Bean sind nur 5 MB groß in den älteren Versionen.
Wenn Sie die apk signieren, führen Sie wahrscheinlich proguard-Schritte aus, die nicht referenzierte Codeteile (Klassen, Methoden, Felder usw.) entfernen. Sie übergeben also diesen Fehler in Bezug auf die Puffergröße.
Aber proguard ist vielleicht nicht immer eine Lösung, Sie haben immer noch die Möglichkeit, die Puffergröße zu überschreiten.
Facebook hat eine Lösung dafür: "Wir brechen unsere App in mehrere Dex-Dateien auf". Siehe: Ссылка
Tags und Links android android-emulator android-x86