From 8fdc3339ac03b195ce9c88795ce8c08e51cad2ad Mon Sep 17 00:00:00 2001 From: Robert Ying Date: Mon, 24 Jun 2019 17:43:17 +0800 Subject: [PATCH 1/3] Use `packageName` instead of `applicationId` --- packages/platform-android/native_modules.gradle | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/packages/platform-android/native_modules.gradle b/packages/platform-android/native_modules.gradle index 1d4f54018..daba17923 100644 --- a/packages/platform-android/native_modules.gradle +++ b/packages/platform-android/native_modules.gradle @@ -136,16 +136,16 @@ class ReactNativeModules { * @param outputDir * @param generatedFileName * @param generatedFileContentsTemplate - * @param applicationId + * @param packageName */ - void generatePackagesFile(File outputDir, String generatedFileName, String generatedFileContentsTemplate, String applicationId) { + void generatePackagesFile(File outputDir, String generatedFileName, String generatedFileContentsTemplate, String packageName) { ArrayList>[] packages = this.reactNativeModules String packageImports = "" String packageClassInstances = "" if (packages.size() > 0) { - packageImports = "import ${applicationId}.BuildConfig;\nimport ${applicationId}.R;\n\n" + packageImports = "import ${packageName}.BuildConfig;\nimport ${packageName}.R;\n\n" packageImports = packageImports + packages.collect { "// ${it.name}\n${it.packageImportPath}" }.join('\n') @@ -233,17 +233,14 @@ ext.applyNativeModulesSettingsGradle = { DefaultSettings defaultSettings -> ext.applyNativeModulesAppBuildGradle = { Project project -> autoModules.applyBuildGradle(project, ext) - def applicationId def generatedSrcDir = new File(buildDir, "generated/rncli/src/main/java/com/facebook/react") - // TODO(salakar): not sure if this is the best way of getting the package name (used to import BuildConfig) - project.android.applicationVariants.all { variant -> - applicationId = [variant.mergedFlavor.applicationId, variant.buildType.applicationIdSuffix].findAll().join() - } + def manifest = new XmlSlurper().parse(android.sourceSets.main.manifest.srcFile) + def packageName = manifest.@package.text() task generatePackageList { doLast { - autoModules.generatePackagesFile(generatedSrcDir, generatedFileName, generatedFileContentsTemplate, applicationId) + autoModules.generatePackagesFile(generatedSrcDir, generatedFileName, generatedFileContentsTemplate, packageName) } } From 140010189cd7bee5f036d22abe284f5a2fbb849f Mon Sep 17 00:00:00 2001 From: Robert Ying Date: Mon, 24 Jun 2019 20:11:43 +0800 Subject: [PATCH 2/3] Use pre-parsed config for `packageName` --- packages/platform-android/native_modules.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/platform-android/native_modules.gradle b/packages/platform-android/native_modules.gradle index daba17923..c0993b841 100644 --- a/packages/platform-android/native_modules.gradle +++ b/packages/platform-android/native_modules.gradle @@ -49,6 +49,7 @@ public class PackageList { class ReactNativeModules { private Logger logger private Project project + private String packageName private DefaultSettings defaultSettings private ExtraPropertiesExtension extension private ArrayList> reactNativeModules @@ -138,8 +139,9 @@ class ReactNativeModules { * @param generatedFileContentsTemplate * @param packageName */ - void generatePackagesFile(File outputDir, String generatedFileName, String generatedFileContentsTemplate, String packageName) { + void generatePackagesFile(File outputDir, String generatedFileName, String generatedFileContentsTemplate) { ArrayList>[] packages = this.reactNativeModules + String packageName = this.packageName String packageImports = "" String packageClassInstances = "" @@ -193,6 +195,7 @@ class ReactNativeModules { def reactNativeConfigOutput = cmdProcess.in.text def json = new JsonSlurper().parseText(reactNativeConfigOutput) + this.packageName = json["project"]["android"]["packageName"] def dependencies = json["dependencies"] dependencies.each { name, value -> @@ -235,12 +238,9 @@ ext.applyNativeModulesAppBuildGradle = { Project project -> def generatedSrcDir = new File(buildDir, "generated/rncli/src/main/java/com/facebook/react") - def manifest = new XmlSlurper().parse(android.sourceSets.main.manifest.srcFile) - def packageName = manifest.@package.text() - task generatePackageList { doLast { - autoModules.generatePackagesFile(generatedSrcDir, generatedFileName, generatedFileContentsTemplate, packageName) + autoModules.generatePackagesFile(generatedSrcDir, generatedFileName, generatedFileContentsTemplate) } } From 0baa3c3397cafa88ea31c133e26185db48f6e431 Mon Sep 17 00:00:00 2001 From: Robert Ying Date: Mon, 24 Jun 2019 20:13:51 +0800 Subject: [PATCH 3/3] Remove param `packageName` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Michał Pierzchała --- packages/platform-android/native_modules.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/platform-android/native_modules.gradle b/packages/platform-android/native_modules.gradle index c0993b841..75700d790 100644 --- a/packages/platform-android/native_modules.gradle +++ b/packages/platform-android/native_modules.gradle @@ -137,7 +137,6 @@ class ReactNativeModules { * @param outputDir * @param generatedFileName * @param generatedFileContentsTemplate - * @param packageName */ void generatePackagesFile(File outputDir, String generatedFileName, String generatedFileContentsTemplate) { ArrayList>[] packages = this.reactNativeModules