Как учесть обновление приложения?

226
20 июня 2017, 23:35

Собираюсь выложить приложение на PlayMarket, с последующим его обновлением.

Что мне надо предусмотреть заранее?

В файлах приложения находятся файлы настроек и база данных, нужно чтобы они остались там же и приложение после обновления их подхватило.

Что посоветуете почитать, на что обратить внимание?

Answer 1

Продумайте заранее историю с версионностью приложения. На это многие не обращают почти никакого внимания, а между тем зря.

Типичный use case который возникает с версионностью выглядит так:

  1. Юзер сообщает о баге
  2. Девелопер резонно спрашивает номер версии
  3. Юзер говорит что-типа версия XX.YY.ZZZ
  4. Далее девелопер конкретно сдувается, потому что он не понимает какие конкретно модификации исходников были в версии XX.YY.ZZZ

У меня есть свой способ выработанный горьким опытом. В build.gradle пишем небольшие скриптики.

Этот скрипт возвращает номер ревизии в git стартуя с корневого:

def getRevision = { ->
    try {
        def stdout = new ByteArrayOutputStream()
        exec {
            standardOutput = stdout
            commandLine 'git', 'rev-list', '--first-parent', '--count', 'master'
        }
        println("Build #"+stdout)
        return asInteger(stdout.toString("ASCII").trim())
    }
    catch (Exception e) {
        e.printStackTrace();
        return 0;
    }
}

Далее определяем версию аппы как:

/*
Version number encoding: XX.YY.ZZZB
XX 2 digits - major version
YY 2 digits - minor version
ZZZ 3 digits - build order (starting from head)
B 1 digit - build variation/patch
Example: 01234561 is version 1.23.456a
*/
def char[] patches='abcdefghijklmnopqrstuwxyz'.toCharArray()
def majorVersion=1
def minorVersion=0
def revision=getRevision()
def patch=-1 // -1 - no patch
defaultConfig {
    applicationId "blah-blah"
    targetSdkVersion targetSdkVersionVar
    if (patch >= 0) {
        versionName = majorVersion + '.' + minorVersion + '.' + revision + patches[patch]
        versionCode = 10000000*majorVersion+10000*minorVersion + 10*revision+patch
    } else {
        versionName = majorVersion + '.' + minorVersion + '.' + revision
        versionCode = 10000000*majorVersion+10000*minorVersion + 10*revision
    }
}

В этом случае номер версии будет генерировать автоматически. Нужно будет при необходимости только задавать номера старших и младших версий, а build будет всегда актуальным.

READ ALSO
Как передать коллекцию из Thymeleaf в контроллер?

Как передать коллекцию из Thymeleaf в контроллер?

Добрый день возникла такая проблема

333
Проверка всех точек вокруг заданной на совпадение с оной с различным шагом

Проверка всех точек вокруг заданной на совпадение с оной с различным шагом

Есть массив точек созданных на основе BufferedImage методом:

199
Не удается найти “Java”

Не удается найти “Java”

Не могу понять почему пишет

178