Android Studio veraltete APK für Build-Variante nach XML-Änderungen

9

Das ist sehr seltsam. Heute hörte AS (1.4) auf, die Debug-Apk in meinem Projekt korrekt neu zu erstellen:

  • Alle XML-Änderungen werden beim Ausführen des Projekts nicht im Code wiedergegeben
  • Änderungen an Java-Code werden propagiert, auch wenn die XML-Änderungen nicht
  • sind
  • Reinigung und dann scheint es zu rütteln, es wird eine aktualisierte APK jedes Mal erfolgreich erstellt.
  • Ich habe zwei Build-Varianten in meinem Projekt, dieses Problem betrifft nur eine davon .
  • Ich verwende Genymotion, aber das Problem besteht auch auf dem normalen Emulator und der Hardware.
  • Ich vermute, dass es eine Art Sperre für die XML-Dateien gibt. Wenn ich beispielsweise eine Datei umbenenne und auf "Ausführen" klicke, werden die Änderungen übernommen. Bei der Überprüfung der R.java werden jedoch Einträge für den alten und den neuen Dateinamen angezeigt - der alte wird nicht gelöscht / aktualisiert.
  • Das xml-Layout, mit dem ich dies teste, wurde jetzt auf ein leeres relatives Layout mit einer Hintergrundfarbe zurückgesetzt. Die Farbe wird nicht aktualisiert, wenn es sein sollte.

Ich weiß nicht wirklich viel über den Build-Prozess, also habe ich nur versucht, den Build-Ordner zu löschen, das Projekt neu zu importieren und den alten Cache für Neustart / Inaktivierung in Android Studio zu importieren. Irgendwelche Vorschläge, was dieses merkwürdige Verhalten verursachen könnte oder wie man es repariert?

Bearbeiten: Es ist sehr schwierig, das Verhalten dahinter festzuhalten - manchmal habe ich festgestellt, dass es sich nur auf bestimmte xml-Dateien auswirkt. Sieht so aus, als hätte dieser Typ das gleiche Problem: Android Studio-Projekt-Build-Problem

Ich habe ein paar Stunden damit verbracht, Android Studio von Grund auf neu zu installieren und das Problem bleibt bestehen ..

    
Daniel Wilson 25.10.2015, 00:01
quelle

2 Antworten

1

Ich habe das Problem vor einiger Zeit herausgefunden und es war ziemlich subtil. Mein Projekt verfügt über Build-Varianten mit einem Hauptquellensatz und einem Quellensatz für jede Variante. Es wurde ungefähr so ​​definiert:

%Vor%

Also die Varianten kompiliert fein, aber jede xml Änderung löste eine komplette Wiederherstellung aus. Ich bin nicht sicher, die genaue Begründung dahinter, aber ich glaube, die Haupt sourceset muss als separate Einheit angegeben werden. Android Studio muss das Schlüsselwort main sehen und weiß besser, was damit zu tun ist. Das bedeutet, dass das Standardverzeichnis nicht als Teil von angegeben werden muss. Wenn Sie das entfernen, wird das Problem beseitigt und es treten keine konstanten Neuerstellungen mehr auf:

%Vor%     
Daniel Wilson 26.08.2016, 14:59
quelle
1

Daniel, ich habe dieses Problem definitiv auch selbst bemerkt. Es scheint, dass einige Änderungen einfach nicht weitergegeben werden, wenn ADB nicht erkennt, dass die App derzeit nicht auf einem Zielgerät installiert ist.

Haftungsausschluss: Dies ist ein Workaround, anstatt eine Erklärung für das Verhalten, aber es funktioniert für mich. Um das Problem zu beheben, habe ich meine Ausführungskonfigurationen so konfiguriert, dass das betreffende Paket vor der erneuten Installation deinstalliert wird. Denken Sie daran, dass die Deinstallation eines APKs offensichtlich Dinge wie Datenbanken, persistente Daten aus den Einstellungen usw. beeinflusst. Verwenden Sie diese Option also nicht, wenn Sie von einem Entwicklungsprozess abhängig sind.

Schritte: (von hier )

  1. Klicken Sie in Android Studio auf die Dropdown-Liste links neben der Schaltfläche Ausführen und wählen Sie Konfigurationen bearbeiten ...
  2. aus
  3. Klicken Sie auf die App unter Android-Anwendung und auf der Registerkarte Allgemein finden Sie die Überschrift 'Vor dem Start'
  4. Klicken Sie auf die Schaltfläche +, wählen Sie Externes Tool ausführen und klicken Sie im Popup-Fenster auf die Schaltfläche +.
  5. Geben Sie einen Namen (zB adb uninstall) und eine Beschreibung ein, und geben Sie adb in Program: und uninstall <your-package-name> in Parameters: ein. Stellen Sie sicher, dass das neue Element ausgewählt ist, wenn Sie im Popup-Fenster auf OK klicken.

Hinweis: Wenn Sie adb nicht in Ihrer PATH-Umgebungsvariablen haben, geben Sie den vollständigen Pfad zu adb im Feld Program: ein (zB / home / user / android / sdk / platform-tools / adb).

Entschuldigung, das ist keine Erklärung für das Problem selbst, aber das behebt das Problem definitiv für mich.

Lass mich wissen, wie es für dich funktioniert.

    
lustig 02.11.2015 13:35
quelle