Ключи Google Maps API для Android для различных вариантов продукта - PullRequest
2 голосов
/ 30 апреля 2019

Я пытаюсь настроить свой проект Android так, чтобы у меня было 3 разных его версии, работающих параллельно, указывающих на разные бэкэнд-API и так далее:

  • Версия отладки / разработки, которую я использую только для собственной разработки
  • Бета-версия, которую я выпускаю для своих клиентов, чтобы они могли протестировать приложение, не вмешиваясь в производственную среду
  • Производственная версия, выпущенная в Play Store для всех желающих

Как я уже сказал, 3 версии должны быть установлены параллельно на одном устройстве (поэтому я предполагаю, что они должны иметь разные идентификаторы приложений), с разными значками, указывать на разные бэкэнд-API и т. Д.

Для этого я решил, что наилучшим вариантом будет использование таких разновидностей продукта, как:

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.myapp"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    flavorDimensions "env"
    productFlavors {
        dev {
            dimension "env"
            applicationId "com.myapp.dev"
            resValue 'string', 'backend_url', 'https://dev.example.com'
        }
        beta {
            dimension "env"
            applicationId "com.myapp.beta"
            resValue 'string', 'backend_url', 'https://beta.example.com'
        }
        prod {
            dimension "env"
            applicationId "com.myapp"
            resValue 'string', 'backend_url', 'https://www.example.com'
        }
    }
}

И я создал соответствующие каталоги dev, beta и prod в src, чтобы иметь там отдельные ресурсы, например, значок запуска для каждого варианта.

Теперь я хотел бы интегрировать Карты Google в свое приложение. Поэтому я создал Google Maps Activity, и студия Android создала 2 google_maps_api.xml, которые он поместил в подкаталоги debug и release в src. Если я не ошибаюсь, эти файлы конфигурации должны быть специфичными для аромата, а не специфичными для buildType, поэтому я переместил один из debug в dev, переместил один из release в beta и скопировал один из beta в prod. Итак, теперь у меня есть следующая структура файла:

Project file structure

Так что теперь я подошел к тому моменту, когда мне нужно генерировать ключи API Карт Google для каждого варианта и ограничивать их каждым вариантом моего приложения. Но для этого мне нужно указать отпечаток SHA-1 в каждом ключе API Google Cloud Project. И я не уверен, какой из них использовать там. Могу ли я использовать один и тот же отпечаток SHA-1 для всех? Должен ли я иметь разные отпечатки SHA-1 для каждого типа сборки (отладка / выпуск) или для каждого варианта (dev / qa / prod)? Если так, как мне найти правильный отпечаток пальца для каждой клавиши?

Обратите внимание, что я попробовал отчет о подписи Gradle, но он мало помог:

13:05:37: Executing task 'signingReport'...

Executing tasks: [signingReport]


> Task :app:signingReport
Variant: prodDebug
Config: debug
Store: /Users/sarbogast/.android/debug.keystore
Alias: AndroidDebugKey
MD5: 93:AA:D5:1B:0D:EA:7B:49:0B:BE:9F:13:FA:46:74:3F
SHA1: 09:FE:D6:BF:19:44:FC:BB:AB:7E:24:19:F7:A9:7D:31:2B:A5:55:17
SHA-256: 62:99:B8:38:07:B1:41:63:62:39:1B:2F:8A:80:F4:F6:E6:A5:97:2C:D0:7B:28:1E:34:2F:90:D1:10:C3:04:C4
Valid until: Monday, November 9, 2043
----------
Variant: devRelease
Config: none
----------
Variant: prodRelease
Config: none
----------
Variant: betaRelease
Config: none
----------
Variant: prodReleaseUnitTest
Config: none
----------
Variant: betaDebugAndroidTest
Config: debug
Store: /Users/sarbogast/.android/debug.keystore
Alias: AndroidDebugKey
MD5: 93:AA:D5:1B:0D:EA:7B:49:0B:BE:9F:13:FA:46:74:3F
SHA1: 09:FE:D6:BF:19:44:FC:BB:AB:7E:24:19:F7:A9:7D:31:2B:A5:55:17
SHA-256: 62:99:B8:38:07:B1:41:63:62:39:1B:2F:8A:80:F4:F6:E6:A5:97:2C:D0:7B:28:1E:34:2F:90:D1:10:C3:04:C4
Valid until: Monday, November 9, 2043
----------
Variant: devReleaseUnitTest
Config: none
----------
Variant: prodDebugUnitTest
Config: debug
Store: /Users/sarbogast/.android/debug.keystore
Alias: AndroidDebugKey
MD5: 93:AA:D5:1B:0D:EA:7B:49:0B:BE:9F:13:FA:46:74:3F
SHA1: 09:FE:D6:BF:19:44:FC:BB:AB:7E:24:19:F7:A9:7D:31:2B:A5:55:17
SHA-256: 62:99:B8:38:07:B1:41:63:62:39:1B:2F:8A:80:F4:F6:E6:A5:97:2C:D0:7B:28:1E:34:2F:90:D1:10:C3:04:C4
Valid until: Monday, November 9, 2043
----------
Variant: devDebugUnitTest
Config: debug
Store: /Users/sarbogast/.android/debug.keystore
Alias: AndroidDebugKey
MD5: 93:AA:D5:1B:0D:EA:7B:49:0B:BE:9F:13:FA:46:74:3F
SHA1: 09:FE:D6:BF:19:44:FC:BB:AB:7E:24:19:F7:A9:7D:31:2B:A5:55:17
SHA-256: 62:99:B8:38:07:B1:41:63:62:39:1B:2F:8A:80:F4:F6:E6:A5:97:2C:D0:7B:28:1E:34:2F:90:D1:10:C3:04:C4
Valid until: Monday, November 9, 2043
----------
Variant: devDebugAndroidTest
Config: debug
Store: /Users/sarbogast/.android/debug.keystore
Alias: AndroidDebugKey
MD5: 93:AA:D5:1B:0D:EA:7B:49:0B:BE:9F:13:FA:46:74:3F
SHA1: 09:FE:D6:BF:19:44:FC:BB:AB:7E:24:19:F7:A9:7D:31:2B:A5:55:17
SHA-256: 62:99:B8:38:07:B1:41:63:62:39:1B:2F:8A:80:F4:F6:E6:A5:97:2C:D0:7B:28:1E:34:2F:90:D1:10:C3:04:C4
Valid until: Monday, November 9, 2043
----------
Variant: betaDebugUnitTest
Config: debug
Store: /Users/sarbogast/.android/debug.keystore
Alias: AndroidDebugKey
MD5: 93:AA:D5:1B:0D:EA:7B:49:0B:BE:9F:13:FA:46:74:3F
SHA1: 09:FE:D6:BF:19:44:FC:BB:AB:7E:24:19:F7:A9:7D:31:2B:A5:55:17
SHA-256: 62:99:B8:38:07:B1:41:63:62:39:1B:2F:8A:80:F4:F6:E6:A5:97:2C:D0:7B:28:1E:34:2F:90:D1:10:C3:04:C4
Valid until: Monday, November 9, 2043
----------
Variant: devDebug
Config: debug
Store: /Users/sarbogast/.android/debug.keystore
Alias: AndroidDebugKey
MD5: 93:AA:D5:1B:0D:EA:7B:49:0B:BE:9F:13:FA:46:74:3F
SHA1: 09:FE:D6:BF:19:44:FC:BB:AB:7E:24:19:F7:A9:7D:31:2B:A5:55:17
SHA-256: 62:99:B8:38:07:B1:41:63:62:39:1B:2F:8A:80:F4:F6:E6:A5:97:2C:D0:7B:28:1E:34:2F:90:D1:10:C3:04:C4
Valid until: Monday, November 9, 2043
----------
Variant: betaReleaseUnitTest
Config: none
----------
Variant: prodDebugAndroidTest
Config: debug
Store: /Users/sarbogast/.android/debug.keystore
Alias: AndroidDebugKey
MD5: 93:AA:D5:1B:0D:EA:7B:49:0B:BE:9F:13:FA:46:74:3F
SHA1: 09:FE:D6:BF:19:44:FC:BB:AB:7E:24:19:F7:A9:7D:31:2B:A5:55:17
SHA-256: 62:99:B8:38:07:B1:41:63:62:39:1B:2F:8A:80:F4:F6:E6:A5:97:2C:D0:7B:28:1E:34:2F:90:D1:10:C3:04:C4
Valid until: Monday, November 9, 2043
----------
Variant: betaDebug
Config: debug
Store: /Users/sarbogast/.android/debug.keystore
Alias: AndroidDebugKey
MD5: 93:AA:D5:1B:0D:EA:7B:49:0B:BE:9F:13:FA:46:74:3F
SHA1: 09:FE:D6:BF:19:44:FC:BB:AB:7E:24:19:F7:A9:7D:31:2B:A5:55:17
SHA-256: 62:99:B8:38:07:B1:41:63:62:39:1B:2F:8A:80:F4:F6:E6:A5:97:2C:D0:7B:28:1E:34:2F:90:D1:10:C3:04:C4
Valid until: Monday, November 9, 2043
----------

BUILD SUCCESSFUL in 1s
1 actionable task: 1 executed
13:05:38: Task execution finished 'signingReport'.

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

Ответы [ 2 ]

1 голос
/ 30 апреля 2019

Может быть проблема в вашей подписиКонфиг

Попробуйте это,

signingConfigs {
    productname{
        storeFile file("release.keystore") //or jKs file path
        storePassword "myPassword"
        keyAlias "myAlias"
        keyPassword "Something...."
    }
}

buildTypes {

    debug {
        signingConfig signingConfigs.productname
    }
    release {
        signingConfig signingConfigs.productname
    }
}
0 голосов
/ 30 апреля 2019

Поскольку у вас есть 3 разных облачных проекта Google, я полагаю, что вам понадобятся 3 разных отпечатка SHA-1 по одному для каждого из ваших вариантов , поскольку у вас есть 3 разных google_maps_api.xml файла,

Если я не ошибаюсь, на каждом из google_maps_api.xml должен присутствовать отдельный ключ SHA-1.

...