grazel icon indicating copy to clipboard operation
grazel copied to clipboard

./gradlew migrateToBazel and dynamic modules

Open meladRaouf opened this issue 3 years ago • 4 comments

Hello,

I have integraded grazel in a multi module project but I got failure when running the gradle task ./gradlew migrateToBazel this is the stack trace

Caused by: java.util.NoSuchElementException: List contains no element matching the predicate.
        at com.grab.grazel.migrate.android.DefaultAndroidManifestParser.androidManifestFile(AndroidManifestParser.kt:86)
        at com.grab.grazel.migrate.android.DefaultAndroidManifestParser.parsePackageName(AndroidManifestParser.kt:49)
        at com.grab.grazel.migrate.android.DefaultAndroidLibraryDataExtractor.extract(AndroidLibraryDataExtractor.kt:84)
        at com.grab.grazel.migrate.android.DefaultAndroidLibraryDataExtractor.extract(AndroidLibraryDataExtractor.kt:65)
        at com.grab.grazel.migrate.builder.KtAndroidLibTargetBuilder.build(KtAndroidLibTargetBuilder.kt:69)
        at com.grab.grazel.migrate.internal.ProjectBazelFileBuilder.build(ProjectBazelFileBuilder.kt:39)
        at com.grab.grazel.tasks.internal.GenerateBazelScriptsTask.action(GenerateBazelScriptsTask.kt:65)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.run(ExecuteActionsTaskExecuter.java:555)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
        at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:540)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:523)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$300(ExecuteActionsTaskExecuter.java:108)


meladRaouf avatar Sep 29 '21 11:09 meladRaouf

Hello this can happen if there is an Android library module without AndroidManifest.xml present with package name.

Could you please verify if all modules have AndroidManifest with package names present?

arunkumar9t2 avatar Sep 29 '21 13:09 arunkumar9t2

We need to run a validation and a descriptive error instead of failing like this.

arunkumar9t2 avatar Sep 29 '21 13:09 arunkumar9t2

Hello this can happen if there is an Android library module without AndroidManifest.xml present with package name.

Could you please verify if all modules have AndroidManifest with package names present?

I checked again and all modules has the AndroidManifest with package names present, is there anyway to bypass this problem ?

meladRaouf avatar Sep 29 '21 19:09 meladRaouf

I converted the module from dynamic feature id("com.android.dynamic-feature") to android library id("com.android.library")

and now grazel worked fine

meladRaouf avatar Sep 29 '21 21:09 meladRaouf

Thanks for the update, closing this please reopen if anything comes up.

arunkumar9t2 avatar Nov 01 '22 05:11 arunkumar9t2