2015-07-09 5 views
0

Я использую следующий код для создания файла .apk, и он отлично работает. Но, чтобы иметь возможность отлаживать, мне нужно прокомментировать код вокруг «applicationVariants.all», другой Android-студия Android говорит, что файл не найден.Сценарий переименования сценариев Gradle

buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 

      applicationVariants.all { variant -> 
       variant.outputs.each { output -> 
        def apk = output.outputFile; 
        def newName = "app-release-" + getDate() + ".apk"; 
        output.outputFile = new File(apk.parentFile, newName); 
       } 
      } 

     } 
    } 

Как это сделать, чтобы заставить его работать для генерации файла .apk, а также для отладки на Android Studio?

UPDATE

Я нашел то, что происходит, на самом деле, как я использовать дату и время в имени файла, время в созданном файле отличается от времени, что Android-студия пытается установить.

Моя функция GetDate() возвращает это:

def getDate() { 
    def date = new Date() 
    def formattedDate = date.format('yyyyMMddHHmm') 
    return formattedDate 
} 

Файл создан в приложение-релиз-201507110957.apk. Однако в консоли Android студии, ошибка:

Uploading file 
    local path: /Volumes/Macintosh HD/AndroidstudioProjects/App/app/build/outputs/apk/app-release-201507110956.apk 
    remote path: /data/local/tmp/com.domain.app 
Local path doesn't exist. 

Имя файла на сгенерированный файл имеет 1 минуту вперед, чем имя файла Android Studio пытается установить. Любая идея о том, как я могу это исправить? Я хотел бы иметь час и минуту в имени файла, потому что я мог бы генерировать более одной версии в день для команды QA.

+0

'applicationVariants' не meber из' buildTypes.release' ... это брат к 'buildTypes' – Selvin

ответ

0

Я решил свою проблему, проверив, является ли вариант отлаживаемым или нет.

buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 

      applicationVariants.all { variant -> 
       if (!variant.buildType.isDebuggable()) { 
        variant.outputs.each { output -> 
         def apk = output.outputFile; 
         def newName = "app-release-" + getDate() + ".apk"; 
         output.outputFile = new File(apk.parentFile, newName); 
        } 
       } 
      } 
     } 
    } 

Как и то, что я применяю свое имя файла только для выпускной версии. Отладочные будут продолжены с тем же именем, установленным Android Studio, поэтому при отладке приложения он не будет создавать проблем.

0

В настоящее время переименование является частью вашей версии релиза. Просто переименуйте как общее действие, например:

android { 

    ... 

    buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 

    debug { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
    } 

    applicationVariants.all { variant -> 
     variant.outputs.each { output -> 
     def apk = output.outputFile; 
     def newName = "app-release-" + getDate() + ".apk"; 
     output.outputFile = new File(apk.parentFile, newName); 
    } 
    } 
} 
+0

Еще одной проблемой:«Загрузка файла \t локальный путь:/Volumes/Macintosh HD/AndroidstudioProjects/App/app/build/output/apk/app-release-201507091037.apk \t удаленный путь: /data/local/tmp/com.domain.myapp Локальный путь не существует. " –

+0

Вы пытались добавить тип отладки, как и для типа выпуска (см. Мой обновленный ответ). – Rich

+0

Я нашел, что происходит. См. Мой обновленный вопрос. –

Смежные вопросы