Моя цель - иметь разные google-services.json для каждого buildType. Я использую fastlane для управления различными сборками. Теперь, когда я выполняю свою команду fastlane dev, она терпит неудачу, потому что у меня нет файла google-services.json в папке выпуска.
Это мой скрипт fastlane для сборки отладочной сборки:
desc "Clean, build development release"
lane :dev do |options|
if options[:clean]
clean_android
end
rntest
test
gradle(
task: "assemble",
build_type: "debug",
project_dir: "./")
end
когда я выполняю команду fastlane dev, я получаю следующую ошибку:
Не удалось выполнить задачу ': app: processReleaseGoogleServices'.
Файл google-services.json отсутствует. Плагин Google Services не может функционировать без него. Место поиска:
/Users/appfoundry/Documents/GitHub/afst18gv/DigitalReceptionist/android/app/src/release/google-services.json
/Users/appfoundry/Documents/GitHub/afst18gv/DigitalReceptionist/android/app/google-services.json
Как вы можете видеть, он ищет google-services.json в папке релиза. Странно то, что в выводе журнала я вижу, что он уже правильно проанализировал google-services.json в папке отладки. это так или иначе также вызывает все генераторы выпуска после отладки:
: приложение: prepareDebugDependencies: приложение: compileDebugAidl ОБНОВЛЕНИЕ
: app: compileDebugRenderscript ОБНОВЛЕНИЕ: app: generateDebugBuildConfig
ОБНОВЛЕНИЕ: приложение: mergeDebugShaders ОБНОВЛЕНИЕ: приложение: compileDebugShaders
ОБНОВЛЕНИЕ: приложение: generateDebugAssets ОБНОВЛЕНИЕ: приложение: mergeDebugAssets
ОБНОВЛЕНИЕ: app: processDebugGoogleServices Разбор файла json:
/Users/appfoundry/Documents/GitHub/afst18gv/DigitalReceptionist/android/app/src/debug/google-services.json
: app: processDebugManifest ОБНОВЛЕНИЕ: app: fabricGenerateResourcesDebug
: app: generateDebugResValues ОБНОВЛЕНИЕ: app: generateDebugResources
: app: mergeDebugResources: app: bundleDebugJsAndAssets Сканирование папок
для символических ссылок в
/ Users / appfoundry / Документы / GitHub / afst18gv / DigitalReceptionist / node_modules
(23ms) Сканирование папок на наличие символических ссылок
/ Users / appfoundry / Документы / GitHub / afst18gv / DigitalReceptionist / node_modules
(21мс) Загрузка графика зависимостей, сделано. предупреждение: кэш преобразования
был сброшен bundle: стартовый bundle: готовый bundle: запись выходных данных пакета
чтобы:
/Users/appfoundry/Documents/GitHub/afst18gv/DigitalReceptionist/android/app/build/intermediates/assets/debug/index.android.bundle
bundle: завершена запись выходного пакета bundle: копирование 8 файлов ресурсов
пакет: завершено копирование ресурсов: app: processDebugResources
: приложение: generateDebugSources
: Приложение: incrementalDebugJavaCompilationSafeguard
: app: compileDebugJavaWithJavac: app: compileDebugJavaWithJavac - нет
инкрементный (например, выходы изменились, без предыдущего выполнения и т. д.).
: app: incrementalDebugUnitTestJavaCompilationSafeguard UP-TO-DATE
: app: preDebugUnitTestBuild UP-TO-DATE
: приложение: prepareDebugUnitTestDependencies
: app: compileDebugUnitTestJavaWithJavac UP-TO-DATE
: app: processDebugJavaRes ОБНОВЛЕНИЕ: app: processDebugUnitTestJavaRes
UP-TO-DATE: приложение: compileDebugUnitTestSources UP-TO-DATE
: app: mockableAndroidJar ОБНОВЛЕНИЕ: app: assemblyDebugUnitTest
UP-TO-DATE: приложение: testDebugUnitTest UP-TO-DATE: приложение: checkReleaseManifest
: app: prepareReleaseDependencies: app: compileReleaseAidl ОБНОВЛЕНИЕ
: app: compileReleaseRenderscript ОБНОВЛЕНИЕ
: app: generateReleaseBuildConfig ОБНОВЛЕНИЕ: app: mergeReleaseShaders
ОБНОВЛЕНИЕ: приложение: compileReleaseShaders ОБНОВЛЕНИЕ
: app: generateReleaseAssets ОБНОВЛЕНИЕ: app: mergeReleaseAssets
ОБНОВЛЕНИЕ: приложение: processReleaseGoogleServices FAILED
Как вы можете видеть здесь, он выполняет все виды релизов после завершения отладки.
Это мой файл build.gradle
apply plugin: "com.android.application"
apply plugin: 'io.fabric'
repositories {
maven { url 'https://maven.fabric.io/public' }
}
import com.android.build.OutputFile
project.ext.react = [
entryFile: "index.js",
bundleInRelease: true,
bundleInDebug: false,
bundleInStaging: true,
]
apply from: "../../node_modules/react-native/react.gradle"
def enableSeparateBuildPerCPUArchitecture = false
/**
* Run Proguard to shrink the Java bytecode in release builds.
*/
def enableProguardInReleaseBuilds = false
android {
compileSdkVersion 25
buildToolsVersion "25.0.1"
defaultConfig {
applicationId "be.appfoundry.digitalreceptionist"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
def env = System.getenv()
versionName "1.0.0." + env['BUILD_NUMBER']
ndk {
abiFilters "armeabi-v7a", "x86"
}
}
signingConfigs {
release {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword "afst18gv"
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword "afst18gv"
}
}
splits {
abi {
reset()
enable enableSeparateBuildPerCPUArchitecture
universalApk false // If true, also generate a universal APK
include "armeabi-v7a", "x86"
}
}
buildTypes {
staging {
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
applicationIdSuffix ".staging"
signingConfig signingConfigs.release
}
release {
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
signingConfig signingConfigs.release
}
debug {
applicationIdSuffix ".debug"
}
}
dexOptions {
jumboMode true
}
// applicationVariants are e.g. debug, release
applicationVariants.all { variant ->
variant.outputs.each { output ->
// For each separate APK per architecture, set a unique version code as described here:
// http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
def versionCodes = ["armeabi-v7a":1, "x86":2]
def abi = output.getFilter(OutputFile.ABI)
if (abi != null) { // null for the universal-debug, universal-release variants
output.versionCodeOverride =
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
}
}
}
}
dependencies {
compile project(':react-native-splash-screen')
compile(project(':react-native-firebase')) {
transitive = false
}
compile project(':react-native-push-notification')
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.facebook.react:react-native:+'
compile project(':react-native-maps')
compile project(':react-native-navigation')
// From node_modules
compile('com.crashlytics.sdk.android:crashlytics:2.9.1@aar') {
transitive = true
}
compile(project(':react-native-maps')){
exclude group: 'com.google.android.gms', module: 'play-services-base'
exclude group: 'com.google.android.gms', module: 'play-services-maps'
}
// Firebase dependencies
compile "com.google.android.gms:play-services-base:11.8.0"
compile "com.google.firebase:firebase-core:11.8.0"
compile "com.google.firebase:firebase-auth:11.8.0"
compile "com.google.firebase:firebase-firestore:11.8.0"
compile "com.google.android.gms:play-services-maps:11.8.0"
}
// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
from configurations.compile
into 'libs'
}
apply plugin: 'com.google.gms.google-services'