2015-05-05 9 views
5

Gdy uruchamiam moją aplikację za każdym razem, nazwa_wersji jest zwiększana w pliku manifestu. oznacza to stara nazwa wersji, 20390 to liczba zwiększona.stopniowanie android Ścieżka lokalna nie istnieje

enter image description here

Projekt jest zbudowany z powodzeniem jak tworzenia skutecznych. Ale pytanie brzmi, dlaczego Android studio buforuje poprzednią wersję apk. Oto co jest błąd:

Target device: lge-nexus_5-061642fd00511249 Uploading file local path: H:\customFolder\app\build\outputs\apk\MyAppName-0.6.200_20383-debug.apk remote path: /data/local/tmp/com.example.app Local path doesn't exist.

Jak zwrócić uwagę, gdy aplikacja działa na urządzeniu android studio spróbować zainstalować wersję apk. To jest złe. Czy ktoś mógłby mi pomóc? Sprawdziłem i zobaczyłem to link.

Oto w jaki sposób można zmienić pliku manifestu z Gradle skryptu:

def updateRevisionNumber() {//autoIncrement Version Name 
    def currentVersion = getVersionName(); 
    def currentRevisionInManifest =   currentVersion.substring(currentVersion.indexOf("_")+1); 
    def lastRevision = Integer.parseInt(currentRevisionInManifest) + 1; 
    println("currentRevisionInManifest: " + currentRevisionInManifest); 
    println("lastRevision: " + lastRevision); 

    def oldText = manifestFile.getText(); 
    def changedText =  oldText.replace(currentRevisionInManifest,lastRevision+""); 
    manifestFile.setText(changedText);} 
+0

Czy ktoś ma jakieś pomysły? – nAkhmedov

Odpowiedz

3

Zamiast edytować plik manifestu podczas kompilacji, można zastąpić nazwę wersja android części manifestu:

android { 
    ... 
    defaultConfig { 
     versionName someScriptToComputeVersionName() 
     ... 

I jest co najmniej 2 powody, aby zrobić to w ten sposób:

  • kompilacja p rocess nie zmieni twojego kodu źródłowego (tj. AndroidManifest.xml nie zostanie zmodyfikowany - co najmniej plik AndroidManifest.xml w źródłach, które można edytowac nie zostanie zmodyfikowany)
  • Istnieje duże prawdopodobieństwo, że Android Studio będzie szczęśliwy.

Teraz Twoim problemem jest prawidłowe zdefiniowanie funkcji someScriptToComputeVersionName(), to zależy od Ciebie.

IMO, po prostu inkrementacja numeru prawdopodobnie nie jest najlepszym wyborem i prawdopodobnie powinieneś znaleźć rozwiązanie, gdybyś zbudował nazwę wersji na podstawie numeru wersji VCS.

+0

AndroidManifest.xml zmienia się bez wątpienia. Oto _android: versionName = "0.6.200_20390" _ – nAkhmedov

+0

Nie powiedziałem, że Twój AndroidManifest.xml się nie zmienił ... ale spójrz na \ build \ intermediates \ manifestests \ ... zobaczysz, że Android Studio używa innego pliku AndroidManifest.xml do zbudowania apk (wyniku scalenia w projekcie wielomodułowym lub wyniku wstrzyknięcia jakiejś konfiguracji z twojego build.gradle). Nie wiem, kiedy 'updateRevisionNumber()' jest wykonywany, ale myślę, że jest za późno (np. AndroidStudio nie widzi zmiany) – ben75

+0

Wszystkie są zmienione, ale nieco dziwna sprawa dla mnie jest to, że apk jest instalowane podczas uruchamiania _installDebug_ za pośrednictwem zadań Gradle. – nAkhmedov