我的目标是为每个buildType设置不同的google-services.json。我正在使用fastlane来管理不同的构建。当我现在执行我的fastlane dev命令时,它失败了,因为我在release文件夹中没有任何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。它以某种方式还会在调试后触发所有发布生成器:
:app:prepareDebugDependencies:app:compileDebugAidl UP-TO-DATE :app:compileDebugRenderscript UP-TO-DATE:app:generateDebugBuildConfig 最新消息:app:mergeDebugShaders UP-TO-DATE:app:compileDebugShaders UP-TO-DATE:app:generateDebugAssets UP-TO-DATE:app:mergeDebugAssets UP-TO-DATE:app:processDebugGoogleServices解析json文件: /Users/appfoundry/Documents/GitHub/afst18gv/DigitalReceptionist/android/app/src/debug/google-services.json :app:processDebugManifest UP-TO-DATE:app:fabricGenerateResourcesDebug :app:generateDebugResValues UP-TO-DATE:app:generateDebugResources :app:mergeDebugResources:app:bundleDebugJsAndAssets扫描文件夹 对于符号链接 /用户/ appfoundry /文档/ GitHub的/ afst18gv / DigitalReceptionist / node_modules (23ms)扫描符号链接的文件夹 /用户/ appfoundry /文档/ GitHub的/ afst18gv / DigitalReceptionist / node_modules (21ms)加载依赖图,完成。警告:转换缓存 被重置了。 bundle:start bundle:finish bundle:编写bundle输出 至: /Users/appfoundry/Documents/GitHub/afst18gv/DigitalReceptionist/android/app/build/intermediates/assets/debug/index.android.bundle bundle:完成编写bundle输出包:复制8个资产文件 bundle:完成复制资产: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 UP-TO-DATE:app:processDebugUnitTestJavaRes UP-TO-DATE:app:compileDebugUnitTestSources UP-TO-DATE :app:mockableAndroidJar UP-TO-DATE:app:assembleDebugUnitTest 最新消息:app:testDebugUnitTest UP-TO-DATE:app:checkReleaseManifest :app:prepareReleaseDependencies:app:compileReleaseAidl UP-TO-DATE :app:compileReleaseRenderscript UP-TO-DATE :app:generateReleaseBuildConfig UP-TO-DATE:app:mergeReleaseShaders UP-TO-DATE:app:compileReleaseShaders UP-TO-DATE :app:generateReleaseAssets UP-TO-DATE:app:mergeReleaseAssets 最新消息:app: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'