mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
This reverts commit 358b9bd381
.
This commit is contained in:
parent
9d38db421c
commit
9dbc66979a
@ -7,26 +7,19 @@ import 'dart:async';
|
|||||||
import 'package:flutter_devicelab/framework/apk_utils.dart';
|
import 'package:flutter_devicelab/framework/apk_utils.dart';
|
||||||
import 'package:flutter_devicelab/framework/framework.dart';
|
import 'package:flutter_devicelab/framework/framework.dart';
|
||||||
import 'package:flutter_devicelab/framework/utils.dart';
|
import 'package:flutter_devicelab/framework/utils.dart';
|
||||||
import 'package:path/path.dart' as path;
|
|
||||||
|
|
||||||
Future<void> main() async {
|
Future<void> main() async {
|
||||||
await task(() async {
|
await task(() async {
|
||||||
try {
|
try {
|
||||||
await runProjectTest((FlutterProject project) async {
|
await runPluginProjectTest((FlutterPluginProject pluginProject) async {
|
||||||
section('App bundle content for task bundleRelease without explicit target platform');
|
section('App bundle content for task bundleRelease without explicit target platform');
|
||||||
await project.runGradleTask('bundleRelease');
|
await pluginProject.runGradleTask('bundleRelease');
|
||||||
|
|
||||||
final String releaseBundle = path.join(
|
if (!pluginProject.hasReleaseBundle)
|
||||||
project.rootPath,
|
throw TaskResult.failure(
|
||||||
'build',
|
'Gradle did not produce a release aab file at: ${pluginProject.releaseBundlePath}');
|
||||||
'app',
|
|
||||||
'outputs',
|
|
||||||
'bundle',
|
|
||||||
'release',
|
|
||||||
'app.aab',
|
|
||||||
);
|
|
||||||
|
|
||||||
final Iterable<String> bundleFiles = await getFilesInAppBundle(releaseBundle);
|
final Iterable<String> bundleFiles = await pluginProject.getFilesInAppBundle(pluginProject.releaseBundlePath);
|
||||||
|
|
||||||
checkItContains<String>(<String>[
|
checkItContains<String>(<String>[
|
||||||
'base/manifest/AndroidManifest.xml',
|
'base/manifest/AndroidManifest.xml',
|
||||||
@ -38,51 +31,16 @@ Future<void> main() async {
|
|||||||
], bundleFiles);
|
], bundleFiles);
|
||||||
});
|
});
|
||||||
|
|
||||||
await runProjectTest((FlutterProject project) async {
|
await runPluginProjectTest((FlutterPluginProject pluginProject) async {
|
||||||
section('App bundle content using flavors without explicit target platform');
|
|
||||||
// Add a few flavors.
|
|
||||||
await project.addProductFlavors(<String> ['production', 'staging', 'development']);
|
|
||||||
// Build the production flavor in release mode.
|
|
||||||
await project.runGradleTask('bundleProductionRelease');
|
|
||||||
|
|
||||||
final String bundlePath = path.join(
|
|
||||||
project.rootPath,
|
|
||||||
'build',
|
|
||||||
'app',
|
|
||||||
'outputs',
|
|
||||||
'bundle',
|
|
||||||
'productionRelease',
|
|
||||||
'app.aab',
|
|
||||||
);
|
|
||||||
|
|
||||||
final Iterable<String> bundleFiles = await getFilesInAppBundle(bundlePath);
|
|
||||||
|
|
||||||
checkItContains<String>(<String>[
|
|
||||||
'base/manifest/AndroidManifest.xml',
|
|
||||||
'base/dex/classes.dex',
|
|
||||||
'base/lib/arm64-v8a/libapp.so',
|
|
||||||
'base/lib/arm64-v8a/libflutter.so',
|
|
||||||
'base/lib/armeabi-v7a/libapp.so',
|
|
||||||
'base/lib/armeabi-v7a/libflutter.so',
|
|
||||||
], bundleFiles);
|
|
||||||
});
|
|
||||||
|
|
||||||
await runProjectTest((FlutterProject project) async {
|
|
||||||
section('App bundle content for task bundleRelease with target platform = android-arm');
|
section('App bundle content for task bundleRelease with target platform = android-arm');
|
||||||
await project.runGradleTask('bundleRelease',
|
await pluginProject.runGradleTask('bundleRelease',
|
||||||
options: <String>['-Ptarget-platform=android-arm']);
|
options: <String>['-Ptarget-platform=android-arm']);
|
||||||
|
|
||||||
final String releaseBundle = path.join(
|
if (!pluginProject.hasReleaseBundle)
|
||||||
project.rootPath,
|
throw TaskResult.failure(
|
||||||
'build',
|
'Gradle did not produce a release aab file at: ${pluginProject.releaseBundlePath}');
|
||||||
'app',
|
|
||||||
'outputs',
|
|
||||||
'bundle',
|
|
||||||
'release',
|
|
||||||
'app.aab',
|
|
||||||
);
|
|
||||||
|
|
||||||
final Iterable<String> bundleFiles = await getFilesInAppBundle(releaseBundle);
|
final Iterable<String> bundleFiles = await pluginProject.getFilesInAppBundle(pluginProject.releaseBundlePath);
|
||||||
|
|
||||||
checkItContains<String>(<String>[
|
checkItContains<String>(<String>[
|
||||||
'base/manifest/AndroidManifest.xml',
|
'base/manifest/AndroidManifest.xml',
|
||||||
|
@ -17,7 +17,11 @@ Future<void> main() async {
|
|||||||
section('APK content for task assembleDebug without explicit target platform');
|
section('APK content for task assembleDebug without explicit target platform');
|
||||||
await pluginProject.runGradleTask('assembleDebug');
|
await pluginProject.runGradleTask('assembleDebug');
|
||||||
|
|
||||||
final Iterable<String> apkFiles = await getFilesInApk(pluginProject.debugApkPath);
|
if (!pluginProject.hasDebugApk)
|
||||||
|
throw TaskResult.failure(
|
||||||
|
'Gradle did not produce a debug apk file at: ${pluginProject.debugApkPath}');
|
||||||
|
|
||||||
|
final Iterable<String> apkFiles = await pluginProject.getFilesInApk(pluginProject.debugApkPath);
|
||||||
|
|
||||||
checkItContains<String>(<String>[
|
checkItContains<String>(<String>[
|
||||||
'AndroidManifest.xml',
|
'AndroidManifest.xml',
|
||||||
@ -44,7 +48,11 @@ Future<void> main() async {
|
|||||||
section('APK content for task assembleRelease without explicit target platform');
|
section('APK content for task assembleRelease without explicit target platform');
|
||||||
await pluginProject.runGradleTask('assembleRelease');
|
await pluginProject.runGradleTask('assembleRelease');
|
||||||
|
|
||||||
final Iterable<String> apkFiles = await getFilesInApk(pluginProject.releaseApkPath);
|
if (!pluginProject.hasReleaseApk)
|
||||||
|
throw TaskResult.failure(
|
||||||
|
'Gradle did not produce a release apk file at: ${pluginProject.releaseApkPath}');
|
||||||
|
|
||||||
|
final Iterable<String> apkFiles = await pluginProject.getFilesInApk(pluginProject.releaseApkPath);
|
||||||
|
|
||||||
checkItContains<String>(<String>[
|
checkItContains<String>(<String>[
|
||||||
'AndroidManifest.xml',
|
'AndroidManifest.xml',
|
||||||
@ -67,7 +75,11 @@ Future<void> main() async {
|
|||||||
await pluginProject.runGradleTask('assembleRelease',
|
await pluginProject.runGradleTask('assembleRelease',
|
||||||
options: <String>['-Ptarget-platform=android-arm,android-arm64']);
|
options: <String>['-Ptarget-platform=android-arm,android-arm64']);
|
||||||
|
|
||||||
final Iterable<String> apkFiles = await getFilesInApk(pluginProject.releaseApkPath);
|
if (!pluginProject.hasReleaseApk)
|
||||||
|
throw TaskResult.failure(
|
||||||
|
'Gradle did not produce a release apk at: ${pluginProject.releaseApkPath}');
|
||||||
|
|
||||||
|
final Iterable<String> apkFiles = await pluginProject.getFilesInApk(pluginProject.releaseApkPath);
|
||||||
|
|
||||||
checkItContains<String>(<String>[
|
checkItContains<String>(<String>[
|
||||||
'AndroidManifest.xml',
|
'AndroidManifest.xml',
|
||||||
@ -91,7 +103,11 @@ Future<void> main() async {
|
|||||||
await pluginProject.runGradleTask('assembleRelease',
|
await pluginProject.runGradleTask('assembleRelease',
|
||||||
options: <String>['-Ptarget-platform=android-arm,android-arm64', '-Psplit-per-abi=true']);
|
options: <String>['-Ptarget-platform=android-arm,android-arm64', '-Psplit-per-abi=true']);
|
||||||
|
|
||||||
final Iterable<String> armApkFiles = await getFilesInApk(pluginProject.releaseArmApkPath);
|
if (!pluginProject.hasReleaseArmApk)
|
||||||
|
throw TaskResult.failure(
|
||||||
|
'Gradle did not produce a release apk at: ${pluginProject.releaseArmApkPath}');
|
||||||
|
|
||||||
|
final Iterable<String> armApkFiles = await pluginProject.getFilesInApk(pluginProject.releaseArmApkPath);
|
||||||
|
|
||||||
checkItContains<String>(<String>[
|
checkItContains<String>(<String>[
|
||||||
'AndroidManifest.xml',
|
'AndroidManifest.xml',
|
||||||
@ -106,7 +122,11 @@ Future<void> main() async {
|
|||||||
'assets/flutter_assets/vm_snapshot_data',
|
'assets/flutter_assets/vm_snapshot_data',
|
||||||
], armApkFiles);
|
], armApkFiles);
|
||||||
|
|
||||||
final Iterable<String> arm64ApkFiles = await getFilesInApk(pluginProject.releaseArm64ApkPath);
|
if (!pluginProject.hasReleaseArm64Apk)
|
||||||
|
throw TaskResult.failure(
|
||||||
|
'Gradle did not produce a release apk at: ${pluginProject.releaseArm64ApkPath}');
|
||||||
|
|
||||||
|
final Iterable<String> arm64ApkFiles = await pluginProject.getFilesInApk(pluginProject.releaseArm64ApkPath);
|
||||||
|
|
||||||
checkItContains<String>(<String>[
|
checkItContains<String>(<String>[
|
||||||
'AndroidManifest.xml',
|
'AndroidManifest.xml',
|
||||||
|
@ -17,7 +17,11 @@ Future<void> main() async {
|
|||||||
await pluginProject.runGradleTask('assembleDebug',
|
await pluginProject.runGradleTask('assembleDebug',
|
||||||
options: <String>['-Ptarget-platform=android-arm']);
|
options: <String>['-Ptarget-platform=android-arm']);
|
||||||
|
|
||||||
final Iterable<String> apkFiles = await getFilesInApk(pluginProject.debugApkPath);
|
if (!pluginProject.hasDebugApk)
|
||||||
|
throw TaskResult.failure(
|
||||||
|
'Gradle did not produce a debug apk file at: ${pluginProject.debugApkPath}');
|
||||||
|
|
||||||
|
final Iterable<String> apkFiles = await pluginProject.getFilesInApk(pluginProject.debugApkPath);
|
||||||
|
|
||||||
checkItContains<String>(<String>[
|
checkItContains<String>(<String>[
|
||||||
'AndroidManifest.xml',
|
'AndroidManifest.xml',
|
||||||
@ -43,7 +47,11 @@ Future<void> main() async {
|
|||||||
await pluginProject.runGradleTask('assembleRelease',
|
await pluginProject.runGradleTask('assembleRelease',
|
||||||
options: <String>['-Ptarget-platform=android-arm']);
|
options: <String>['-Ptarget-platform=android-arm']);
|
||||||
|
|
||||||
final Iterable<String> apkFiles = await getFilesInApk(pluginProject.releaseApkPath);
|
if (!pluginProject.hasReleaseApk)
|
||||||
|
throw TaskResult.failure(
|
||||||
|
'Gradle did not produce a release apk file at: ${pluginProject.releaseApkPath}');
|
||||||
|
|
||||||
|
final Iterable<String> apkFiles = await pluginProject.getFilesInApk(pluginProject.releaseApkPath);
|
||||||
|
|
||||||
checkItContains<String>(<String>[
|
checkItContains<String>(<String>[
|
||||||
'AndroidManifest.xml',
|
'AndroidManifest.xml',
|
||||||
@ -66,7 +74,11 @@ Future<void> main() async {
|
|||||||
await pluginProject.runGradleTask('assembleRelease',
|
await pluginProject.runGradleTask('assembleRelease',
|
||||||
options: <String>['-Ptarget-platform=android-arm64']);
|
options: <String>['-Ptarget-platform=android-arm64']);
|
||||||
|
|
||||||
final Iterable<String> apkFiles = await getFilesInApk(pluginProject.releaseApkPath);
|
if (!pluginProject.hasReleaseApk)
|
||||||
|
throw TaskResult.failure(
|
||||||
|
'Gradle did not produce a release apk file at: ${pluginProject.releaseApkPath}');
|
||||||
|
|
||||||
|
final Iterable<String> apkFiles = await pluginProject.getFilesInApk(pluginProject.releaseApkPath);
|
||||||
|
|
||||||
checkItContains<String>(<String>[
|
checkItContains<String>(<String>[
|
||||||
'AndroidManifest.xml',
|
'AndroidManifest.xml',
|
||||||
@ -112,7 +124,7 @@ Future<void> main() async {
|
|||||||
|
|
||||||
await runProjectTest((FlutterProject project) async {
|
await runProjectTest((FlutterProject project) async {
|
||||||
section('gradlew assembleFreeDebug (product flavor)');
|
section('gradlew assembleFreeDebug (product flavor)');
|
||||||
await project.addProductFlavors(<String>['free']);
|
await project.addProductFlavor('free');
|
||||||
await project.runGradleTask('assembleFreeDebug');
|
await project.runGradleTask('assembleFreeDebug');
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -157,7 +169,7 @@ Future<void> main() async {
|
|||||||
await runPluginProjectTest((FlutterPluginProject pluginProject) async {
|
await runPluginProjectTest((FlutterPluginProject pluginProject) async {
|
||||||
section('gradlew assembleDebug on plugin example');
|
section('gradlew assembleDebug on plugin example');
|
||||||
await pluginProject.runGradleTask('assembleDebug');
|
await pluginProject.runGradleTask('assembleDebug');
|
||||||
if (!File(pluginProject.debugApkPath).existsSync())
|
if (!pluginProject.hasDebugApk)
|
||||||
throw TaskResult.failure(
|
throw TaskResult.failure(
|
||||||
'Gradle did not produce an apk file at the expected place');
|
'Gradle did not produce an apk file at the expected place');
|
||||||
});
|
});
|
||||||
|
@ -34,27 +34,6 @@ Future<void> runPluginProjectTest(Future<void> testFunction(FlutterPluginProject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<Iterable<String>> getFilesInApk(String apk) async {
|
|
||||||
if (!File(apk).existsSync())
|
|
||||||
throw TaskResult.failure(
|
|
||||||
'Gradle did not produce an output artifact file at: $apk');
|
|
||||||
|
|
||||||
final Process unzip = await startProcess(
|
|
||||||
'unzip',
|
|
||||||
<String>['-v', apk],
|
|
||||||
isBot: false, // we just want to test the output, not have any debugging info
|
|
||||||
);
|
|
||||||
return unzip.stdout
|
|
||||||
.transform(utf8.decoder)
|
|
||||||
.transform(const LineSplitter())
|
|
||||||
.map((String line) => line.split(' ').last)
|
|
||||||
.toList();
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<Iterable<String>> getFilesInAppBundle(String bundle) {
|
|
||||||
return getFilesInApk(bundle);
|
|
||||||
}
|
|
||||||
|
|
||||||
void checkItContains<T>(Iterable<T> values, Iterable<T> collection) {
|
void checkItContains<T>(Iterable<T> values, Iterable<T> collection) {
|
||||||
for (T value in values) {
|
for (T value in values) {
|
||||||
if (!collection.contains(value)) {
|
if (!collection.contains(value)) {
|
||||||
@ -116,25 +95,20 @@ android {
|
|||||||
''');
|
''');
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> addProductFlavors(Iterable<String> flavors) async {
|
Future<void> addProductFlavor(String name) async {
|
||||||
final File buildScript = File(
|
final File buildScript = File(
|
||||||
path.join(androidPath, 'app', 'build.gradle'),
|
path.join(androidPath, 'app', 'build.gradle'),
|
||||||
);
|
);
|
||||||
|
|
||||||
final String flavorConfig = flavors.map((String name) {
|
|
||||||
return '''
|
|
||||||
$name {
|
|
||||||
applicationIdSuffix ".$name"
|
|
||||||
versionNameSuffix "-$name"
|
|
||||||
}
|
|
||||||
''';
|
|
||||||
}).join('\n');
|
|
||||||
|
|
||||||
buildScript.openWrite(mode: FileMode.append).write('''
|
buildScript.openWrite(mode: FileMode.append).write('''
|
||||||
|
|
||||||
android {
|
android {
|
||||||
flavorDimensions "mode"
|
flavorDimensions "mode"
|
||||||
productFlavors {
|
productFlavors {
|
||||||
$flavorConfig
|
$name {
|
||||||
|
applicationIdSuffix ".$name"
|
||||||
|
versionNameSuffix "-$name"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
''');
|
''');
|
||||||
@ -186,9 +160,32 @@ class FlutterPluginProject {
|
|||||||
String get releaseArm64ApkPath => path.join(examplePath, 'build', 'app', 'outputs', 'apk', 'release', 'app-arm64-v8a-release.apk');
|
String get releaseArm64ApkPath => path.join(examplePath, 'build', 'app', 'outputs', 'apk', 'release', 'app-arm64-v8a-release.apk');
|
||||||
String get releaseBundlePath => path.join(examplePath, 'build', 'app', 'outputs', 'bundle', 'release', 'app.aab');
|
String get releaseBundlePath => path.join(examplePath, 'build', 'app', 'outputs', 'bundle', 'release', 'app.aab');
|
||||||
|
|
||||||
|
bool get hasDebugApk => File(debugApkPath).existsSync();
|
||||||
|
bool get hasReleaseApk => File(releaseApkPath).existsSync();
|
||||||
|
bool get hasReleaseArmApk => File(releaseArmApkPath).existsSync();
|
||||||
|
bool get hasReleaseArm64Apk => File(releaseArm64ApkPath).existsSync();
|
||||||
|
bool get hasReleaseBundle => File(releaseBundlePath).existsSync();
|
||||||
|
|
||||||
Future<void> runGradleTask(String task, {List<String> options}) async {
|
Future<void> runGradleTask(String task, {List<String> options}) async {
|
||||||
return _runGradleTask(workingDirectory: exampleAndroidPath, task: task, options: options);
|
return _runGradleTask(workingDirectory: exampleAndroidPath, task: task, options: options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<Iterable<String>> getFilesInApk(String apk) async {
|
||||||
|
final Process unzip = await startProcess(
|
||||||
|
'unzip',
|
||||||
|
<String>['-v', apk],
|
||||||
|
isBot: false, // we just want to test the output, not have any debugging info
|
||||||
|
);
|
||||||
|
return unzip.stdout
|
||||||
|
.transform(utf8.decoder)
|
||||||
|
.transform(const LineSplitter())
|
||||||
|
.map((String line) => line.split(' ').last)
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<Iterable<String>> getFilesInAppBundle(String bundle) {
|
||||||
|
return getFilesInApk(bundle);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _runGradleTask({String workingDirectory, String task, List<String> options}) async {
|
Future<void> _runGradleTask({String workingDirectory, String task, List<String> options}) async {
|
||||||
|
@ -114,6 +114,7 @@ class FlutterPlugin implements Plugin<Project> {
|
|||||||
String abiValue = PLATFORM_ARCH_MAP[targetArch]
|
String abiValue = PLATFORM_ARCH_MAP[targetArch]
|
||||||
project.android {
|
project.android {
|
||||||
packagingOptions {
|
packagingOptions {
|
||||||
|
pickFirst "lib/${abiValue}/libflutter.so"
|
||||||
// Prevent the ELF library from getting corrupted.
|
// Prevent the ELF library from getting corrupted.
|
||||||
doNotStrip "*/${abiValue}/libapp.so"
|
doNotStrip "*/${abiValue}/libapp.so"
|
||||||
}
|
}
|
||||||
@ -165,7 +166,7 @@ class FlutterPlugin implements Plugin<Project> {
|
|||||||
// The local engine is built for one of the build type.
|
// The local engine is built for one of the build type.
|
||||||
// However, we use the same engine for each of the build types.
|
// However, we use the same engine for each of the build types.
|
||||||
project.android.buildTypes.each {
|
project.android.buildTypes.each {
|
||||||
addApiDependencies(project, it.name, project.files {
|
addApiDependencies(project, it, project.files {
|
||||||
flutterJar
|
flutterJar
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -204,13 +205,13 @@ class FlutterPlugin implements Plugin<Project> {
|
|||||||
// added after applying the Flutter plugin.
|
// added after applying the Flutter plugin.
|
||||||
project.android.buildTypes.each {
|
project.android.buildTypes.each {
|
||||||
def buildMode = buildModeFor(it)
|
def buildMode = buildModeFor(it)
|
||||||
addApiDependencies(project, it.name, project.files {
|
addApiDependencies(project, it, project.files {
|
||||||
baseJar[buildMode]
|
baseJar[buildMode]
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
project.android.buildTypes.whenObjectAdded {
|
project.android.buildTypes.whenObjectAdded {
|
||||||
def buildMode = buildModeFor(it)
|
def buildMode = buildModeFor(it)
|
||||||
addApiDependencies(project, it.name, project.files {
|
addApiDependencies(project, it, project.files {
|
||||||
baseJar[buildMode]
|
baseJar[buildMode]
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -341,14 +342,14 @@ class FlutterPlugin implements Plugin<Project> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addApiDependencies(Project project, String variantName, FileCollection files) {
|
private static void addApiDependencies(Project project, buildType, FileCollection files) {
|
||||||
project.dependencies {
|
project.dependencies {
|
||||||
String configuration;
|
String configuration;
|
||||||
// `compile` dependencies are now `api` dependencies.
|
// `compile` dependencies are now `api` dependencies.
|
||||||
if (project.getConfigurations().findByName("api")) {
|
if (project.getConfigurations().findByName("api")) {
|
||||||
configuration = "${variantName}Api";
|
configuration = buildType.name + "Api";
|
||||||
} else {
|
} else {
|
||||||
configuration = "${variantName}Compile";
|
configuration = buildType.name + "Compile";
|
||||||
}
|
}
|
||||||
add(configuration, files)
|
add(configuration, files)
|
||||||
}
|
}
|
||||||
@ -526,7 +527,7 @@ class FlutterPlugin implements Plugin<Project> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Include the snapshots and libflutter.so in `lib/`.
|
// Include the snapshots and libflutter.so in `lib/`.
|
||||||
addApiDependencies(project, variant.name, project.files {
|
addApiDependencies(project, buildType, project.files {
|
||||||
packFlutterSnapshotsAndLibsTask
|
packFlutterSnapshotsAndLibsTask
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -585,12 +585,8 @@ File _findBundleFile(GradleProject project, BuildInfo buildInfo) {
|
|||||||
if (bundleFile.existsSync())
|
if (bundleFile.existsSync())
|
||||||
return bundleFile;
|
return bundleFile;
|
||||||
if (buildInfo.flavor != null) {
|
if (buildInfo.flavor != null) {
|
||||||
|
|
||||||
// Android Studio Gradle plugin v3 adds the flavor to the path. For the bundle the folder name is the flavor plus the mode name.
|
// Android Studio Gradle plugin v3 adds the flavor to the path. For the bundle the folder name is the flavor plus the mode name.
|
||||||
// On linux, filenames are case sensitive.
|
bundleFile = project.bundleDirectory.childDirectory(buildInfo.flavor + modeName).childFile(bundleFileName);
|
||||||
bundleFile = project.bundleDirectory
|
|
||||||
.childDirectory(camelCase('${buildInfo.flavor}_$modeName'))
|
|
||||||
.childFile(bundleFileName);
|
|
||||||
if (bundleFile.existsSync())
|
if (bundleFile.existsSync())
|
||||||
return bundleFile;
|
return bundleFile;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user