Google Crashpad

Для того, чтобы собрать crashpad под Windows с DLL runtime (/MD /MDd), нужно создать в своём домашнем каталоге (c:/users/konst например) подкаталог .gyp и в него положить файл include.gypi со следующим содержимым:

{
  'target_defaults': {
    'configurations': {
      'Release': {
        'target_conditions': [
          ['OS=="win"', {
            'msvs_settings': {
               'VCCLCompilerTool': {
                  'RuntimeLibrary': '2',
                }, 
             },
          }],
        ],
      },
      'Debug': {
        'target_conditions': [
          ['OS=="win"', {
            'msvs_settings': {
               'VCCLCompilerTool': {
                   'RuntimeLibrary': '3',
                }, 
            },
          }],
        ],
      },
    },
  },
}

И пусть это сэкономит те полдня, которые пришлось потратить, чтобы выяснить этот факт.

espresso test failure

Если внезапно вы решили подключить espresso и начать писать тесты, а потом после очередных манипуляций вдруг тесты приложения перестали запускаться и начали бросать исключение NoClassDefFoundError YourActivity, то вполне вероятно, что может спасти совершенно нелогичное действие:
Добавить исключения суппорт либы в gradle для компиляции espresso (в моём случае espresso-contrib)

androidTestCompile ('com.android.support.test.espresso:espresso-contrib:2.2') {
    exclude group: 'com.android.support'
    exclude module: 'support-v4'
}

Android x86 emulator и google maps/play services

Google и intel сделали крутую штуку – образы андроида для x86 atom, которые работают весьма шустро на x86 платформе, в отличие от тормозных armv7. Но счастье резко заканчивается, когда нужно делать приложение, использующее google apis (maps, play services) – x86 образы есть только для чистого андроида.

Тем не менее, гугол (который поиск) помогает решить эту проблему – мы модифицируем образ в эмуляторе.

Continue reading “Android x86 emulator и google maps/play services”

Jenkins, MSBuild и Includes

Однажды оказалось, что Jenkins фейлит билды MSVS 2012 (которые выполняются посредством консольного msbuild), с сообщениями о том, что не найдены всякие заголовочные файлы (например al.h). Как известно, в студии начиная с 2010 “глобальные” настройки путей к инклюдам, либам и прочему перенесены в странное место – Property Manager->$Project|$Configuration -> Microsoft.Cpp.$Platform.user. Ну и ладно, казалось бы, зашли, прописали и всё хорошо. Студия компилит, в консоли msbuild тоже нормально всё делает… Вот только Jenkins запускает своего slave windows сборщика от системного пользователя, а настройки путей, они не глобальные, а per-user оказывается, поэтому он и не подхватывает эти пути.

Самым простым решением оказалось, как ни странно, создать каталог, скопировать туда “свой” файлик C:\Users\konst\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props и добавить в командную строку запуска /p:UserRootDir=d:\msbuild_home