android studio gradlew编译时proguardRelease报错

来源:互联网 发布:linux修复windows引导 编辑:程序博客网 时间:2024/06/08 12:26

项目开发过程中,编译遇到这样的错误。
不进行混淆,用android studio直接编译不报错。
但是混淆后,就报错。而且报错代码与项目代码无关。
错误如下:

:app:compileReleaseNdk UP-TO-DATE:app:proguardReleaseWarning: u.aly.bt: can't find referenced method 'int checkSelfPermission(java.lang.String)' in library class android.content.ContextWarning: there were 1 unresolved references to library class members.         You probably need to update the library versions.         (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedlibraryclassmember):app:proguardRelease FAILEDFAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':app:proguardRelease'.> java.io.IOException: Please correct the above warnings first.* Try:Run with --info or --debug option to get more log output.* Exception is:org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:proguardRelease'.    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:64)    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42)    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.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:305)    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79)    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63)    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51)    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:23)    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:88)    at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29)    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62)    at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)    at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:68)    at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62)    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:55)    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149)    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106)    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86)    at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:80)    at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33)    at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24)    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:36)    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)    at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:51)    at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:171)    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237)    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210)    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.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)    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:54)    at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)    at org.gradle.launcher.GradleMain.main(GradleMain.java:23)    at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:33)    at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:130)    at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48)Caused by: org.gradle.internal.UncheckedException: java.io.IOException: Please correct the above warnings first.    at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:39)    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:66)    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:218)    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:211)    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:200)    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:579)    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:562)    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)    ... 47 moreCaused by: java.io.IOException: Please correct the above warnings first.    at proguard.Initializer.execute(Initializer.java:473)    at proguard.ProGuard.initialize(ProGuard.java:222)    at proguard.ProGuard.execute(ProGuard.java:97)    at proguard.gradle.ProGuardTask.proguard(ProGuardTask.java:1074)    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63)    ... 54 moreBUILD FAILEDTotal time: 28.777 secs

stackoverflow上搜了很多,大部分都是说,android.support的library版本不对,或者build sdk版本不对,一直也没解决得了。

checkSelfPermission(java.lang.String)’ in library class android.content.Context
Warning: there were 1 unresolved references to library class members.
You probably need to update the library versions.

后来从上面这段话入手,在proguard.txt中,添加了如下两句。

-keep class android.content.* {;}
-dontwarn android.content.**

即不再混淆android.content包下面的内容。问题是解决了,但是总是一个治标不治本的方法。

具体原因还是要进一步调查。

0 0
原创粉丝点击