2014-01-15 3 views
1

Каждый раз, после некоторого локального тестирования, я создаю и подписываю версию своего приложения для Android для Play Store, у которого флаг LOCAL_SERVER по-прежнему установлен в true. Конечно, это приводит к сбою приложения для людей, потому что, в общем, мои пользователи не могут связаться с моим сервером 192.168.1.x.Неудача сборки Android, если LOCAL_SERVER - это правда?

Есть ли способ получить процесс выпуска, чтобы как-то автоматически обнаружить, что я оставил эту константу в состоянии «тестирования» и не удалось до того, как она будет принята в Google Play?

  • Я подумал, что я мог бы условно назвать фиктивной класс и имеет ProGuard (который работает только на «освободить» сборка) форс-полоску, что класс, который будет затем генерировать ошибки, потому что он нашел вызов класса, которого нет. Но у ProGuard нет возможности форсировать класс.

  • Я подумал, может быть, я могу заставить «андроид: debuggable = true», который будет , а затем приведет к сбою загрузки в Play Store. Но я не могу найти способ, чтобы установил флаг AndroidManifest на основе константы Java.

Другие идеи? Я использую Eclipse для разработки.

+1

Возможно, сгенерированный флаг ['BuildConfig.DEBUG'] (http://stackoverflow.com/questions/9855834/when-does-adt-set-buildconfig-debug-to-false). Это только «ложь», если вы создадите версию. – zapl

ответ

1
  1. Контрольный список для выпуска.

  2. Протестируйте подписанную версию перед ее выпуском.

  3. Тест JUnit, который проверяет значение поля (вам все равно нужно помнить, чтобы его запустить).

+0

(1) Я хочу * автоматизировать * как можно больше контрольного списка. (2) Тестирование локально по-прежнему работает, потому что оно находится в локальной сети. (3) Единичный тест константы будет терпеть неудачу во время разработки, что было бы плохо. –

+0

Как сохранить флаг в качестве логического ресурса в xml? , то вы могли бы ссылаться на него: android: debuggable = "@ bool/local_server – eski

+0

Это сделало бы это проверкой времени выполнения и исключило бы возможность статического анализа с помощью ProGuard и т. Д. Я рассмотрел вопрос о том, чтобы пользователи LOCAL_SERVER * и * это значение с отображением во время выполнения флага android: debuggable, чтобы по-прежнему делать правильную вещь (tm) в случае такой ошибки, но это также ломает статический анализ в случае ошибки. Это также может путать тесты. –

1

Еще лучше, остановка LOCAL_SERVER установка.

class MyClass 
{ 
    final private boolean USE_LOCAL_SERVER = true; 
    void myMethod() 
    { 
     LOCAL_SERVER = (MyClass.class.getName().equals("mypackagename.MyClass")) ? USE_LOCAL_SERVER : false; 
    } 
} 

С ProGuard будет затемнять имя MyClass, LOCAL_SERVER всегда будет ложным, когда ProGuard было бежать.

+0

Это круто!Мне нужно попробовать, чтобы я в следующий раз вернусь к этому проекту. –

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