Sentry-react-native: Unable to build app via gradle after installing sentry

Created on 11 Aug 2017  路  26Comments  路  Source: getsentry/sentry-react-native

_Platform:_

  • [x] Android

I have successfully installed the sentry client on my android app for local development, however on building the app and initialising proguard, my app build fails and i get the following error. Are there any rules that i have to enable to allow the build.

```
Warning: Exception while processing task java.io.IOException: Please correct the above warnings first.
:app:transformClassesAndResourcesWithProguardForReleaseGiant FAILED

FAILURE: Build failed with an exception.

Most helpful comment

I was able to make build successfully after adding following code in proguard setting

-keepattributes LineNumberTable,SourceFile
-dontwarn org.slf4j.*
-dontwarn javax.
*

All 26 comments

Hey, I need a bit more output than that, can you run it with
./gradlew assembleRelease --stacktrace

Sure

* What went wrong:
Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.
> Job failed, see logs for details

* Try:
Run with --info or --debug option to get more log output.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:84)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
        at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.execute(DefaultTaskGraphExecuter.java:236)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.execute(DefaultTaskGraphExecuter.java:228)
        at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:61)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:228)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:215)
        at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:77)
        at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:58)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:32)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:113)
        at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
        at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
        at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
        at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
        at org.gradle.initialization.DefaultGradleLauncher$3.execute(DefaultGradleLauncher.java:196)
        at org.gradle.initialization.DefaultGradleLauncher$3.execute(DefaultGradleLauncher.java:193)
        at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:56)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:193)
        at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:119)
        at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:102)
        at org.gradle.launcher.exec.GradleBuildController.run(GradleBuildController.java:71)
        at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:41)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:49)
        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:44)
        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:29)
        at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:47)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
        at org.gradle.util.Swapper.swap(Swapper.java:38)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
        at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
        at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
Caused by: java.lang.RuntimeException: Job failed, see logs for details
        at com.android.build.gradle.internal.transforms.ProGuardTransform.transform(ProGuardTransform.java:196)
        at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:178)
        at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:174)
        at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:156)
        at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:173)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
        at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$IncrementalTaskAction.doExecute(DefaultTaskClassInfoStore.java:163)
        at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134)
        at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:123)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:95)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:76)
        ... 70 more
Caused by: java.io.IOException: Please correct the above warnings first.
        at proguard.Initializer.execute(Initializer.java:473)
        at proguard.ProGuard.initialize(ProGuard.java:233)
        at proguard.ProGuard.execute(ProGuard.java:98)
        at com.android.build.gradle.internal.transforms.BaseProguardAction.runProguard(BaseProguardAction.java:54)
        at com.android.build.gradle.internal.transforms.ProGuardTransform.doMinification(ProGuardTransform.java:254)
        at com.android.build.gradle.internal.transforms.ProGuardTransform.access$000(ProGuardTransform.java:63)
        at com.android.build.gradle.internal.transforms.ProGuardTransform$1.run(ProGuardTransform.java:173)
        at com.android.builder.tasks.Job.runTask(Job.java:49)
        at com.android.build.gradle.tasks.SimpleWorkQueue$EmptyThreadContext.runTask(SimpleWorkQueue.java:41)
        at com.android.builder.tasks.WorkQueue.run(WorkQueue.java:223)


BUILD FAILED

@nitish24p This is the default rules file that will be generated when enabling it in react-native
https://facebook.github.io/react-native/docs/signed-apk-android.html#enabling-proguard-to-reduce-the-size-of-the-apk-optional

# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

# Disabling obfuscation is useful if you collect stack traces from production crashes
# (unless you are using a system that supports de-obfuscate the stack traces).
-dontobfuscate

# React Native

# Keep our interfaces so they can be used by other ProGuard rules.
# See http://sourceforge.net/p/proguard/bugs/466/
-keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip
-keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters
-keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip

# Do not strip any method/class that is annotated with @DoNotStrip
-keep @com.facebook.proguard.annotations.DoNotStrip class *
-keep @com.facebook.common.internal.DoNotStrip class *
-keepclassmembers class * {
    @com.facebook.proguard.annotations.DoNotStrip *;
    @com.facebook.common.internal.DoNotStrip *;
}

-keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * {
  void set*(***);
  *** get*();
}

-keep class * extends com.facebook.react.bridge.JavaScriptModule { *; }
-keep class * extends com.facebook.react.bridge.NativeModule { *; }
-keepclassmembers,includedescriptorclasses class * { native <methods>; }
-keepclassmembers class *  { @com.facebook.react.uimanager.UIProp <fields>; }
-keepclassmembers class *  { @com.facebook.react.uimanager.annotations.ReactProp <methods>; }
-keepclassmembers class *  { @com.facebook.react.uimanager.annotations.ReactPropGroup <methods>; }

-dontwarn com.facebook.react.**

# TextLayoutBuilder uses a non-public Android constructor within StaticLayout.
# See libs/proxy/src/main/java/com/facebook/fbui/textlayoutbuilder/proxy for details.
-dontwarn android.text.StaticLayout

# okhttp

-keepattributes Signature
-keepattributes *Annotation*
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.**

# okio

-keep class sun.misc.Unsafe { *; }
-dontwarn java.nio.file.*
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-dontwarn okio.**

Can you also please update to the latest version 0.22.0, we've changed a few things regarding gradle.

Sure will try and let you know.

Same for me with 0.23 version (and RN 0.42.3):

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:66)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
        at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
        at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
        at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
        at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
        at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
        at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
        at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:153)
        at org.gradle.internal.Factories$1.create(Factories.java:22)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:53)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:150)
        at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
        at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:98)
        at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:92)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:63)
        at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:92)
        at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:83)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:99)
        at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:48)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
        at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:81)
        at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:46)
        at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:51)
        at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:28)
        at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43)
        at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:173)
        at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:239)
        at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:212)
        at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
        at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
        at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
        at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
        at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:205)
        at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
        at org.gradle.launcher.Main.doAction(Main.java:33)
        at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:55)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:36)
        at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
        at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30)
        at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:127)
        at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
Caused by: java.lang.RuntimeException: Job failed, see logs for details
        at com.android.build.gradle.internal.transforms.ProGuardTransform.transform(ProGuardTransform.java:196)
        at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:178)
        at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:174)
        at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:156)
        at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:173)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
        at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.java:245)
        at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:221)
        at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.java:232)
        at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:210)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
        ... 60 more
Caused by: java.io.IOException: Please correct the above warnings first.
        at proguard.Initializer.execute(Initializer.java:473)
        at proguard.ProGuard.initialize(ProGuard.java:233)
        at proguard.ProGuard.execute(ProGuard.java:98)
        at com.android.build.gradle.internal.transforms.BaseProguardAction.runProguard(BaseProguardAction.java:54)
        at com.android.build.gradle.internal.transforms.ProGuardTransform.doMinification(ProGuardTransform.java:254)
        at com.android.build.gradle.internal.transforms.ProGuardTransform.access$000(ProGuardTransform.java:63)
        at com.android.build.gradle.internal.transforms.ProGuardTransform$1.run(ProGuardTransform.java:173)
        at com.android.builder.tasks.Job.runTask(Job.java:49)
        at com.android.build.gradle.tasks.SimpleWorkQueue$EmptyThreadContext.runTask(SimpleWorkQueue.java:41)
        at com.android.builder.tasks.WorkQueue.run(WorkQueue.java:223)

Just to clear things up, have you guys seen the proguard documentation: https://docs.sentry.io/clients/java/modules/android/#proguard

I just followed the documentation and had no problem I am not really sure if the is Sentry related.

Oh I didn't see that page, thanks.
Unfortunately Gradle can't compile it:

FAILURE: Build failed with an exception.

* Where:
Build file '/Users/antoine/Sites/tribeez/android/app/build.gradle' line: 1

* What went wrong:
A problem occurred evaluating project ':app'.
> Failed to apply plugin [id 'com.android.application']
   > Minimum supported Gradle version is 3.3. Current version is 2.14.1. If using the gradle wrapper, try editing the distributionUrl in /Users/antoine/Sites/tribeez/android/gradle/wrapper/gradle-wrapper.properties to gradle-3.3-all.zip

(this error appears when adding classpath 'io.sentry:sentry-android-gradle-plugin:1.5.3' to the dependencies although it says here that the gradle dependency is 2.X)

Could this be because my RN version is 0.42.3 and this plugin is for a newer one?
But it looks like RN still relies on Gradle 2.14.1:
https://github.com/facebook/react-native/blob/master/local-cli/templates/HelloWorld/android/gradle/wrapper/gradle-wrapper.properties

@antoinerousseau As far as I know it shouldn't be a problem updating gradle to 3.3, I've tried it before and it worked without any problems.

I tried but it needs the SDK build tools 25.0.0 instead of 23.0.1, and when I set buildToolsVersion to 25.0.0 in app/build.gradle I get:

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':app'.
> Could not resolve all dependencies for configuration ':app:_debugApk'.
   > A problem occurred configuring project ':react-native-sentry'.
      > The SDK Build Tools revision (23.0.1) is too low for project ':react-native-sentry'. Minimum required is 25.0.0

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Which makes sense here: https://github.com/getsentry/react-native-sentry/blob/master/android/build.gradle#L6

@antoinerousseau I am able to build the app with 23.0.1 and 25.0.0 so I am not really sure how to help, it must be something with your setup.

@HazAT with RN 0.42 ?

I tried with compileSdkVersion 22 and 23, the buildToolsVersion is 23.0.1, minSdkVersion is 16 and targetSdkVersion is 23...

my proguard-rules.pro is the same than RN's one

Warning: io.sentry.servlet.SentryServletContainerInitializer: can't find superclass or interface javax.servlet.ServletContainerInitializer
Warning: io.sentry.servlet.SentryServletRequestListener: can't find superclass or interface javax.servlet.ServletRequestListener
Warning: io.sentry.config.JndiLookup: can't find referenced class javax.naming.InitialContext
Warning: io.sentry.config.JndiLookup: can't find referenced class javax.naming.InitialContext
Warning: io.sentry.config.JndiLookup: can't find referenced class javax.naming.Context
Warning: io.sentry.config.JndiLookup: can't find referenced class javax.naming.NoInitialContextException
Warning: io.sentry.config.JndiLookup: can't find referenced class javax.naming.NamingException
Warning: io.sentry.config.JndiLookup: can't find referenced class javax.naming.NoInitialContextException
Warning: io.sentry.config.JndiLookup: can't find referenced class javax.naming.NamingException
Warning: io.sentry.config.JndiLookup: can't find referenced class javax.naming.Context
Warning: io.sentry.config.JndiLookup: can't find referenced class javax.naming.Context
Warning: io.sentry.config.JndiLookup: can't find referenced class javax.naming.NoInitialContextException
Warning: io.sentry.config.JndiLookup: can't find referenced class javax.naming.NamingException
Warning: io.sentry.event.helper.BasicRemoteAddressResolver: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.helper.BasicRemoteAddressResolver: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.helper.BasicRemoteAddressResolver: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.helper.BasicRemoteAddressResolver: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.helper.ForwardedAddressResolver: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.helper.ForwardedAddressResolver: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.helper.ForwardedAddressResolver: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.helper.ForwardedAddressResolver: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.helper.HttpEventBuilderHelper: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.helper.HttpEventBuilderHelper: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.helper.HttpEventBuilderHelper: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.helper.HttpEventBuilderHelper: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.helper.HttpEventBuilderHelper: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.helper.HttpEventBuilderHelper: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.helper.HttpEventBuilderHelper: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.helper.HttpEventBuilderHelper: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.helper.RemoteAddressResolver: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.Cookie
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.Cookie
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.Cookie
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.Cookie
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.Cookie
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.Cookie
Warning: io.sentry.event.interfaces.HttpInterface: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.servlet.SentryServletContainerInitializer: can't find referenced class javax.servlet.ServletContext
Warning: io.sentry.servlet.SentryServletContainerInitializer: can't find referenced class javax.servlet.ServletContainerInitializer
Warning: io.sentry.servlet.SentryServletContainerInitializer: can't find referenced class javax.servlet.ServletException
Warning: io.sentry.servlet.SentryServletContainerInitializer: can't find referenced class javax.servlet.ServletContext
Warning: io.sentry.servlet.SentryServletContainerInitializer: can't find referenced class javax.servlet.ServletContext
Warning: io.sentry.servlet.SentryServletContainerInitializer: can't find referenced class javax.servlet.ServletContext
Warning: io.sentry.servlet.SentryServletContainerInitializer: can't find referenced class javax.servlet.ServletContext
Warning: io.sentry.servlet.SentryServletRequestListener: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.servlet.SentryServletRequestListener: can't find referenced class javax.servlet.ServletRequestEvent
Warning: io.sentry.servlet.SentryServletRequestListener: can't find referenced class javax.servlet.ServletRequestListener
Warning: io.sentry.servlet.SentryServletRequestListener: can't find referenced class javax.servlet.ServletRequest
Warning: io.sentry.servlet.SentryServletRequestListener: can't find referenced class javax.servlet.ServletRequestEvent
Warning: io.sentry.servlet.SentryServletRequestListener: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.servlet.SentryServletRequestListener: can't find referenced class javax.servlet.http.HttpServletRequest
Warning: io.sentry.servlet.SentryServletRequestListener: can't find referenced class javax.servlet.ServletRequestEvent
Warning: io.sentry.servlet.SentryServletRequestListener: can't find referenced class javax.servlet.ServletRequestEvent
Warning: io.sentry.servlet.SentryServletRequestListener: can't find referenced class javax.servlet.ServletRequestEvent
Warning: io.sentry.servlet.SentryServletRequestListener: can't find referenced class javax.servlet.ServletRequestEvent
Warning: io.sentry.servlet.SentryServletRequestListener: can't find referenced class javax.servlet.ServletRequest

...

Warning: there were 93 unresolved references to classes or interfaces.
         You may need to add missing library jars or update their versions.
         If your code works fine without the missing classes, you can suppress
         the warnings with '-dontwarn' options.
         (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)
Warning: Exception while processing task java.io.IOException: Please correct the above warnings first.
:app:transformClassesAndResourcesWithProguardForRelease FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.
> Job failed, see logs for details

Can you try to add -dontwarn io.sentry.**?

I tried with -dontwarn io.sentry.** { *; } without luck, but just tried with -dontwarn io.sentry.** and it builds! And the app seems to work. Thanks!! :)

wait no, I had switched enableProguardInReleaseBuilds back to false, sorry my mistake... no more luck then, it fails :/

I am not really sure how to help you from here.
To be honest I am not a Android pro myself, so if I am able to reproduce this locally it's hard to fix.
What you could try is setting it up in the example project
https://github.com/getsentry/examples/tree/master/react-native
and tell me the steps to reproduce it, otherwise, it must be something with your setup.

If tested it and following the proguard documentation
https://docs.sentry.io/clients/java/modules/android/#proguard
I got it to work properly, so I am closing this now.

I was able to make build successfully after adding following code in proguard setting

-keepattributes LineNumberTable,SourceFile
-dontwarn org.slf4j.*
-dontwarn javax.
*

@yudhisthira8fit worked for me, thanks a lot!!! how did you find this?!

It's also in our doc, I probably forgot to mention it specifically.
https://docs.sentry.io/clients/java/modules/android/#manual-integration

OH I see! Sorry didn't see this!

But I can't use the plugin to do this automatically (and then upload the mappings) because of:

Download https://jcenter.bintray.com/io/sentry/sentry-android-gradle-plugin/1.5.4/sentry-android-gradle-plugin-1.5.4.pom
Download https://jcenter.bintray.com/io/sentry/sentry-android-gradle-plugin/1.5.4/sentry-android-gradle-plugin-1.5.4.jar

FAILURE: Build failed with an exception.

* Where:
Build file 'android/app/build.gradle' line: 1

* What went wrong:
A problem occurred evaluating project ':app'.
> Failed to apply plugin [id 'com.android.application']
   > Minimum supported Gradle version is 3.3. Current version is 2.14.1. If using the gradle wrapper, try editing the distributionUrl in android/gradle/wrapper/gradle-wrapper.properties to gradle-3.3-all.zip

and if I try to use Gradle 3.3 (and then the SDK build tools 25), I get:

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':app'.
> Could not resolve all dependencies for configuration ':app:_debugApk'.
   > A problem occurred configuring project ':react-native-sentry'.
      > The SDK Build Tools revision (23.0.1) is too low for project ':react-native-sentry'. Minimum required is 25.0.0

Also, there isn't any sentry-debug-meta.properties in intermediates/assets/release/ after running the command

Note that my outputs/apk/intermediates etc are in ~/Android/..., not in my project folder

This issue is coming due to pro-guard enable in the release config of the app. So the solution is either remove pro-guard or put the indicated code snippet as in the link https://readyandroid.wordpress.com/errorexecution-failed-for-task-apptransformclassesandresourceswithproguardforrelease/

subprojects { afterEvaluate {project -> if (project.hasProperty("android")) { android { compileSdkVersion 25 buildToolsVersion '25.0.0' } } } }

add this script on build.gradle - android

Fixed : I removed pro-guard and used gradle 3.1.3 instead on 3.2.0

Was this page helpful?
0 / 5 - 0 ratings