Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import io.embrace.android.gradle.plugin.tasks.registration.EmbraceTaskRegistrati
import io.embrace.android.gradle.plugin.tasks.registration.RegistrationParams
import io.embrace.android.gradle.plugin.util.capitalizedString
import org.gradle.api.Project
import org.gradle.api.Task
import org.gradle.api.provider.Provider
import java.io.File
import java.util.concurrent.Callable
Expand Down Expand Up @@ -150,12 +149,10 @@ class NdkUploadTasksRegistration(
data: AndroidCompactedVariantData,
): Provider<File> {
return projectType.flatMap { projectType: ProjectType ->
project.tasks.named("merge${data.name.capitalizedString()}NativeLibs").flatMap { mergeNativeLibsTask ->
when (projectType) {
ProjectType.UNITY -> getUnitySharedObjectFiles(project, data)
ProjectType.NATIVE -> getNativeSharedObjectFiles(project, mergeNativeLibsTask)
else -> project.provider { File("") } // this shouldn't happen
}
when (projectType) {
ProjectType.UNITY -> getUnitySharedObjectFiles(project, data)
ProjectType.NATIVE -> getNativeSharedObjectFiles(project, data)
else -> project.provider { File("") } // this shouldn't happen
}
}
}
Expand All @@ -177,12 +174,12 @@ class NdkUploadTasksRegistration(
}
}

private fun getNativeSharedObjectFiles(project: Project, task: Task): Provider<File> {
private fun getNativeSharedObjectFiles(project: Project, variant: AndroidCompactedVariantData): Provider<File> {
val customSymbolsDirectory = behavior.customSymbolsDirectory
return if (!customSymbolsDirectory.isNullOrEmpty()) {
project.provider { getNativeSharedObjectFilesFromCustomDirectory(customSymbolsDirectory, project) }
} else {
getDefaultNativeSharedObjectFiles(task)
getDefaultNativeSharedObjectFiles(project, variant)
}
}

Expand All @@ -202,14 +199,19 @@ class NdkUploadTasksRegistration(
* We expect the task outputs to be in the following format:
* app/build/intermediates/merged_native_libs/release/out/lib/armeabi-v7a/libembrace-native.so
*/
private fun getDefaultNativeSharedObjectFiles(task: Task): Provider<File> {
return task.outputs.files.asFileTree.elements.map { files ->
files
.first { it.asFile.extension == "so" }
?.asFile
?.parentFile
?.parentFile
?: error("Shared object file not found")
private fun getDefaultNativeSharedObjectFiles(
project: Project,
variant: AndroidCompactedVariantData
): Provider<File> {
return project.tasks.named("merge${variant.name.capitalizedString()}NativeLibs").flatMap { mergeNativeLibsTask ->
mergeNativeLibsTask.outputs.files.asFileTree.elements.map { files ->
files
.first { it.asFile.extension == "so" }
?.asFile
?.parentFile
?.parentFile
?: error("Shared object file not found")
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ class NdkUploadTasksRegistrationTest {
@Test
fun `an error is thrown when merge native libs task is not found`() {
// Given a project where merge native libs task is not registered
val projectTypeProvider = project.provider { ProjectType.UNITY }
val projectTypeProvider = project.provider { ProjectType.NATIVE }

// When NDK upload tasks are registered
val registration = createNdkUploadTasksRegistration(projectType = projectTypeProvider)
Expand Down
Loading