11package io.embrace.android.gradle.plugin.tasks.ndk
22
3- import com.android.build.api.variant.Variant
43import io.embrace.android.gradle.plugin.config.PluginBehavior
54import io.embrace.android.gradle.plugin.config.ProjectType
65import io.embrace.android.gradle.plugin.config.UnitySymbolsDir
@@ -42,7 +41,7 @@ class NdkUploadTasksRegistration(
4241 // Skip registration if NDK is disabled
4342 if (variantConfig.embraceConfig?.ndkEnabled == false ) return
4443
45- val sharedObjectFilesProvider = getSharedObjectFilesProvider(project, data, variant )
44+ val sharedObjectFilesProvider = getSharedObjectFilesProvider(project, data)
4645
4746 val compressionTaskProvider = project.registerTask(
4847 CompressSharedObjectFilesTask .NAME ,
@@ -149,14 +148,13 @@ class NdkUploadTasksRegistration(
149148 private fun getSharedObjectFilesProvider (
150149 project : Project ,
151150 data : AndroidCompactedVariantData ,
152- variant : Variant ,
153151 ): Provider <File > {
154152 return projectType.flatMap { projectType: ProjectType ->
155- project.tasks.named(" merge${variant .name.capitalizedString()} NativeLibs" ).map { task ->
153+ project.tasks.named(" merge${data .name.capitalizedString()} NativeLibs" ).flatMap { mergeNativeLibsTask ->
156154 when (projectType) {
157- ProjectType .UNITY -> getUnitySharedObjectFiles(project, data)
158- ProjectType .NATIVE -> getNativeSharedObjectFiles(project, task )
159- else -> File (" " ) // ndk upload won 't be executed
155+ ProjectType .UNITY -> project.provider { getUnitySharedObjectFiles(project, data) }
156+ ProjectType .NATIVE -> getNativeSharedObjectFiles(project, mergeNativeLibsTask )
157+ else -> project.provider { File (" " ) } // this shouldn 't happen
160158 }
161159 }
162160 }
@@ -176,10 +174,10 @@ class NdkUploadTasksRegistration(
176174 ? : error(" Unity shared object files not found" )
177175 }
178176
179- private fun getNativeSharedObjectFiles (project : Project , task : Task ): File {
177+ private fun getNativeSharedObjectFiles (project : Project , task : Task ): Provider < File > {
180178 val customSymbolsDirectory = behavior.customSymbolsDirectory
181179 return if (! customSymbolsDirectory.isNullOrEmpty()) {
182- getNativeSharedObjectFilesFromCustomDirectory(customSymbolsDirectory, project)
180+ project.provider { getNativeSharedObjectFilesFromCustomDirectory(customSymbolsDirectory, project) }
183181 } else {
184182 getDefaultNativeSharedObjectFiles(task)
185183 }
@@ -201,10 +199,15 @@ class NdkUploadTasksRegistration(
201199 * We expect the task outputs to be in the following format:
202200 * app/build/intermediates/merged_native_libs/release/out/lib/armeabi-v7a/libembrace-native.so
203201 */
204- private fun getDefaultNativeSharedObjectFiles (task : Task ): File {
205- return task.outputs.files.asFileTree.files.firstOrNull {
206- it.extension == " so"
207- }?.parentFile?.parentFile ? : error(" Shared object file not found" )
202+ private fun getDefaultNativeSharedObjectFiles (task : Task ): Provider <File > {
203+ return task.outputs.files.asFileTree.elements.map { files ->
204+ files
205+ .first { it.asFile.extension == " so" }
206+ ?.asFile
207+ ?.parentFile
208+ ?.parentFile
209+ ? : error(" Shared object file not found" )
210+ }
208211 }
209212
210213 private fun getMappingFileFolder (variantData : AndroidCompactedVariantData ) = if (variantData.flavorName.isBlank()) {
0 commit comments