From aa4d9f9dbc755070ddd456966b3a40d00900b3e4 Mon Sep 17 00:00:00 2001 From: Yong Date: Tue, 29 Nov 2016 17:41:52 +0800 Subject: [PATCH] * fix the error caused by different packageName and applicationId (#284) --- freeline_core/gradle_tools.py | 2 +- .../freeline/FreelineInitializer.groovy | 20 +++++++++++++------ .../antfortune/freeline/FreelinePlugin.groovy | 15 ++++++++++++++ 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/freeline_core/gradle_tools.py b/freeline_core/gradle_tools.py index 0cf85bb..bb49a7d 100755 --- a/freeline_core/gradle_tools.py +++ b/freeline_core/gradle_tools.py @@ -983,7 +983,7 @@ def fix_package_name(config, manifest): return target_manifest_path if manifest and os.path.isfile(manifest): - Logger.debug('find app has debug package name, freeline will fix the package name in manifest') + Logger.debug('find app has a different application id, freeline will fix the package name in manifest') content = get_file_content(manifest) result = re.sub('package=\"(.*)\"', 'package=\"{}\"'.format(config['package']), content) Logger.debug('change package name from {} to {}'.format(config['debug_package'], config['package'])) diff --git a/gradle/src/main/groovy/com/antfortune/freeline/FreelineInitializer.groovy b/gradle/src/main/groovy/com/antfortune/freeline/FreelineInitializer.groovy index 0f978fd..22da6f9 100644 --- a/gradle/src/main/groovy/com/antfortune/freeline/FreelineInitializer.groovy +++ b/gradle/src/main/groovy/com/antfortune/freeline/FreelineInitializer.groovy @@ -48,8 +48,8 @@ class FreelineInitializer { projectDescription.build_tools_directory = FreelineUtils.joinPath(projectDescription.sdk_directory, 'build-tools', projectDescription.build_tools_version) projectDescription.compile_sdk_version = project.android.compileSdkVersion.toString() projectDescription.compile_sdk_directory = FreelineUtils.joinPath(projectDescription.sdk_directory, 'platforms', projectDescription.compile_sdk_version) - projectDescription.package = packageName - projectDescription.debug_package = packageName + projectDescription.package = packageName // package -> the package name in the manifest file of main module + projectDescription.debug_package = project.android.defaultConfig.applicationId // applicationId -> debug_package projectDescription.main_manifest_path = project.android.sourceSets.main.manifest.srcFile.path projectDescription.launcher = launcher projectDescription.apk_path = apkPath @@ -59,8 +59,14 @@ class FreelineInitializer { projectDescription.android_gradle_version = getAndroidGradleVersion(project) projectDescription.use_jdk8 = isUseJdk8(projectDescription.android_gradle_version as String) - if (packageName == null || packageName == '') { - projectDescription.package = FreelineParser.getPackageName(project.android.defaultConfig.applicationId as String, projectDescription.main_manifest_path as String) + if (FreelineUtils.isEmpty(packageName)) { + projectDescription.package = FreelineParser.getPackage(projectDescription.main_manifest_path as String) + if (FreelineUtils.isEmpty(projectDescription.package as String)) { + projectDescription.package = projectDescription.debug_package + } + } + + if (FreelineUtils.isEmpty(projectDescription.debug_package as String)) { projectDescription.debug_package = projectDescription.package } @@ -69,6 +75,7 @@ class FreelineInitializer { invalidFlavor = false; } + boolean applicationSuffixAdded = false project.android.applicationVariants.each { baseVariant -> if (productFlavor) { if (productFlavor.equals(baseVariant.flavorName)) { @@ -76,9 +83,10 @@ class FreelineInitializer { } } def buildType = baseVariant.buildType; - if ("debug".equalsIgnoreCase(buildType.name)) { + if (!applicationSuffixAdded && "debug".equalsIgnoreCase(buildType.name as String)) { if (buildType.applicationIdSuffix) { - projectDescription.debug_package = projectDescription.package + buildType.applicationIdSuffix + projectDescription.debug_package = projectDescription.debug_package + buildType.applicationIdSuffix + applicationSuffixAdded = true } } } diff --git a/gradle/src/main/groovy/com/antfortune/freeline/FreelinePlugin.groovy b/gradle/src/main/groovy/com/antfortune/freeline/FreelinePlugin.groovy index dc14e41..2a81405 100644 --- a/gradle/src/main/groovy/com/antfortune/freeline/FreelinePlugin.groovy +++ b/gradle/src/main/groovy/com/antfortune/freeline/FreelinePlugin.groovy @@ -91,6 +91,21 @@ class FreelinePlugin implements Plugin { FreelineUtils.addNewAttribute(project, 'apk_path', defaultApkPath) } + // find the correct application id + def mergedApplicationId = variant.mergedFlavor.applicationId + if (mergedApplicationId) { + def description = FreelineUtils.readProjectDescription(project) + if (mergedApplicationId != description['debug_package']) { + println "find new application id: ${mergedApplicationId}" + //FreelineUtils.addNewAttribute(project, "debug_package", mergedApplicationId) + if (variant.buildType.applicationIdSuffix) { + FreelineUtils.addNewAttribute(project, "debug_package", mergedApplicationId + variant.buildType.applicationIdSuffix) + } else { + FreelineUtils.addNewAttribute(project, "debug_package", mergedApplicationId) + } + } + } + // add addtional aapt args def publicKeeperGenPath = FreelineUtils.joinPath(FreelineUtils.getBuildCacheDir(project.buildDir.absolutePath), "public_keeper.xml") project.android.aaptOptions.additionalParameters("-P", publicKeeperGenPath)