<分区>
回答
好的。所以这里发生了很多事情。那么让我整理一下答案。
首先创建所需的口味:
productFlavors{
training{
applicationIdSuffix ".training"
versionNameSuffix "-training"
}
full{
}
}
其次,获取您可能需要的所有路径结构的列表:
- 点击IDE右侧的Gradle图标
- 在您的项目 > 任务 > android 下,单击 sourceSet:这将显示您可能需要的所有目录结构
- 右键单击 sourceSet 并单击运行以获取目录结构列表
- 不要将
google-services.json
文件从/app 删除到/main。然后复制google-services.json
并在每个 flavor 目录下放置一个。因此,以我为例,我将一个放在/training 下 - 重要 转到开发人员控制台,并为每种风格创建凭据:生产和调试。并使用正确的信息更新每个
google-services.json
文件。
问题
我可以告诉您业务需求,但这有点离题了。我需要从单个源代码创建两个“生产”APK。没有别的可以改变。这是完全相同的应用程序,除了其中有两个,每个都有不同的启动器图标。我什至不知道如何开始做。有没有人完成这个并且不介意分享?我在 Mac 上使用带有 Gradle 的 Android Studio。
更新
根据反馈,我能够将我的 gradle 文件更新为此
productFlavors{
training{
applicationIdSuffix ".training"
versionNameSuffix "-training"
}
full{
applicationIdSuffix ""
versionNameSuffix ""
}
}
现在 fullDebug 和 fullRelease 编译正常。但是当我将 Build Variant 更改为 trainingDebug 或 trainingRelease 时,代码不再编译:R 无法解析。
编辑:
我终于明白你们的要求了。这是踪迹:
Executing tasks: [:app:generateTrainingDebugSources, :app:prepareTrainingDebugUnitTestDependencies, :app:mockableAndroidJar, :app:generateTrainingDebugAndroidTestSources]
Configuration on demand is an incubating feature.
WARNING: The `android.dexOptions.incremental` property is deprecated and it has no effect on the build process.
Incremental java compilation is an incubating feature.
:app:preBuild UP-TO-DATE
:app:preTrainingDebugBuild UP-TO-DATE
:app:checkTrainingDebugManifest
:app:preFullDebugBuild UP-TO-DATE
:app:preFullReleaseBuild UP-TO-DATE
:app:preTrainingReleaseBuild UP-TO-DATE
:app:prepareComAndroidSupportAnimatedVectorDrawable2420Library UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72420Library UP-TO-DATE
:app:prepareComAndroidSupportCardviewV72420Library UP-TO-DATE
:app:prepareComAndroidSupportDesign2420Library UP-TO-DATE
:app:prepareComAndroidSupportPaletteV72420Library UP-TO-DATE
:app:prepareComAndroidSupportRecyclerviewV72420Library UP-TO-DATE
:app:prepareComAndroidSupportSupportCompat2420Library UP-TO-DATE
:app:prepareComAndroidSupportSupportCoreUi2420Library UP-TO-DATE
:app:prepareComAndroidSupportSupportCoreUtils2420Library UP-TO-DATE
:app:prepareComAndroidSupportSupportFragment2420Library UP-TO-DATE
:app:prepareComAndroidSupportSupportMediaCompat2420Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42420Library UP-TO-DATE
:app:prepareComAndroidSupportSupportVectorDrawable2420Library UP-TO-DATE
:app:prepareComAndroidVolleyVolley100Library UP-TO-DATE
:app:prepareComCrashlyticsSdkAndroidAnswers136Library UP-TO-DATE
:app:prepareComCrashlyticsSdkAndroidBeta114Library UP-TO-DATE
:app:prepareComCrashlyticsSdkAndroidCrashlytics255Library UP-TO-DATE
:app:prepareComCrashlyticsSdkAndroidCrashlyticsCore238Library UP-TO-DATE
:app:prepareComDavemorrisseyLabsSubsamplingScaleImageView350Library UP-TO-DATE
:app:prepareComEgosventuresCar360LibraryCaptureCar360libraryCapture1012Library UP-TO-DATE
:app:prepareComGetbaseFloatingactionbutton1101Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAppinvite940Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAuth940Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAuthBase940Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesBase940Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesBasement940Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesGcm940Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesIid940Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesLocation940Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesTasks940Library UP-TO-DATE
:app:prepareComGoogleFirebaseFirebaseAnalytics940Library UP-TO-DATE
:app:prepareComGoogleFirebaseFirebaseAnalyticsImpl940Library UP-TO-DATE
:app:prepareComGoogleFirebaseFirebaseCommon940Library UP-TO-DATE
:app:prepareComGoogleFirebaseFirebaseCore940Library UP-TO-DATE
:app:prepareComGoogleFirebaseFirebaseIid940Library UP-TO-DATE
:app:prepareComGoogleFirebaseFirebaseInvites940Library UP-TO-DATE
:app:prepareComGoogleFirebaseFirebaseMessaging940Library UP-TO-DATE
:app:prepareComJakewhartonTimberTimber410Library UP-TO-DATE
:app:prepareComMelnykovFloatingactionbutton130Library UP-TO-DATE
:app:prepareComWritingmindsFFmpegAndroid032Library UP-TO-DATE
:app:prepareIoFabricSdkAndroidFabric1310Library UP-TO-DATE
:app:prepareJpWasabeefRicheditorAndroid120Library UP-TO-DATE
:app:prepareTrainingDebugDependencies
:app:compileTrainingDebugAidl UP-TO-DATE
:app:compileTrainingDebugRenderscript UP-TO-DATE
:app:generateTrainingDebugBuildConfig UP-TO-DATE
:app:mergeTrainingDebugShaders UP-TO-DATE
:app:compileTrainingDebugShaders UP-TO-DATE
:app:generateTrainingDebugAssets UP-TO-DATE
:app:mergeTrainingDebugAssets UP-TO-DATE
:app:processTrainingDebugManifest UP-TO-DATE
:app:fabricGenerateResourcesTrainingDebug
:app:generateTrainingDebugResValues UP-TO-DATE
:app:processTrainingDebugGoogleServices
Parsing json file: /Users/myname/StudioProjects/appname/app/google-services.json
:app:processTrainingDebugGoogleServices FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:processTrainingDebugGoogleServices'.
> No matching client found for package name 'com.company.appname.training'
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 9.567 secs