2017-03-13 9 views
1

내가 proguard를 사용하여 내 안드로이드 프로젝트를 난독 화하려고 시도 했으므로 많은 소스를 참조했는데 정확히 어떻게 처리 할 수 ​​있습니까? 내 프로젝트에 자바 스크립트 인터페이스가 포함되어 있고 웹 뷰에 동적 자바 스크립트 삽입이 포함되어 있습니다. 이것은 내가 라이브러리와 자바 스크립트 인터페이스와 인젝터 클래스Proguard 난독 화 오류

다음
-keep class com.codemybrainsout.** 
-keep interface ocom.codemybrainsout.** 
-keep class com.beardedhen.** 
-keep interface ocom.beardedhen.** 
-keep class com.flyco.** 
-keep interface com.flyco.** 
-keep class com.joanzapata.** 
-keep interface com.joanzapata.** 
-keep class com.pedant.** 
-keep interface com.pedant.** 
-keep class com.github.** 
-keep interface com.github.** 
-keep class com.goebl.** 
-keep interface com.goebl.** 
-keep class com.google.** 
-keep interface com.google.** 
-keep class com.wdullaer.** 
-keep interface com.wdullaer.** 
-keep class com.yinglan.** 
-keep interface com.yinglan.** 
-keep class com.yarolegovich.** 
-keep interface com.yarolegovich.** 
-keep class me.everything.** 
-keep interface me.everything.** 
-keep class me.squareup.** 
-keep interface me.squareup.** 

-keep public class com.apps.appname.Activity.WebActivity 
-keep public class com.apps.appname.fillers.* 

-keepclassmembers class * { 
@android.webkit.JavascriptInterface <methods>; 
} 

클래스 com.apps.appname.fillers를 제외하는 시도 내 Proguard와 구성입니다. * 필러 패키지 및 클래스 com.apps.appname.Activity을 말한다 .WebActivity는 활동을 의미합니다.

,210

다음은이 빌드가 쉽게 새로운 응용 프로그램을 다시 컴파일해서는 안

내가 내 코드를 당황하게 할 실패

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':app:transformClassesAndResourcesWithProguardForDebug'. 
> 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:transformClassesAndResourcesWithProguardForDebug'. 
    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.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:50) 
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) 
    at org.gradle.tooling.internal.provider.runner.RunAsBuildOperationBuildActionRunner$1.execute(RunAsBuildOperationBuildActionRunner.java:43) 
    at org.gradle.tooling.internal.provider.runner.RunAsBuildOperationBuildActionRunner$1.execute(RunAsBuildOperationBuildActionRunner.java:40) 
    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.tooling.internal.provider.runner.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:40) 
    at org.gradle.tooling.internal.provider.runner.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:75) 
    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:185) 
    at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:181) 
    at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102) 
    at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:176) 
    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) 
    ... 78 more 
Caused by: java.io.IOException: proguard.ParseException: Expecting keyword 'class', 'interface', or 'enum' before end of line 53 of file '/home/jithin/QBlaze/QBlaze/app/proguard-rules.pro' 
    at com.android.build.gradle.internal.transforms.ProGuardTransform.doMinification(ProGuardTransform.java:283) 
    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:48) 
    at com.android.build.gradle.tasks.SimpleWorkQueue$EmptyThreadContext.runTask(SimpleWorkQueue.java:41) 
    at com.android.builder.tasks.WorkQueue.run(WorkQueue.java:225) 
Caused by: proguard.ParseException: Expecting keyword 'class', 'interface', or 'enum' before end of line 53 of file '/home/jithin/QBlaze/QBlaze/app/proguard-rules.pro' 
    at proguard.ConfigurationParser.readNextWord(ConfigurationParser.java:1207) 
    at proguard.ConfigurationParser.parseKeepClassSpecificationArguments(ConfigurationParser.java:492) 
    at proguard.ConfigurationParser.parse(ConfigurationParser.java:165) 
    at com.android.build.gradle.internal.transforms.BaseProguardAction.applyConfigurationFile(BaseProguardAction.java:137) 
    at com.android.build.gradle.internal.transforms.ProGuardTransform.doMinification(ProGuardTransform.java:245) 
... 5 more 

Gradle을 콘솔에서 메시지를 내 Gradle을

apply plugin: 'com.android.application' 

android { 
    dexOptions { 
     jumboMode = true 
    } 
    compileSdkVersion 25 
    buildToolsVersion '25.0.0' 
    defaultConfig { 
     applicationId "com.app.appname" 
     minSdkVersion 15 
     targetSdkVersion 25 
     versionCode 33 
     versionName "2.5" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles 'proguard-rules.pro' 
     } 
     debug { 
      minifyEnabled true 
      proguardFiles 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 

    compile 'com.codemybrainsout.rating:ratingdialog:1.0.7' 
    compile 'com.android.support:appcompat-v7:25.1.0' 
    compile 'com.android.support:design:25.1.0' 
    compile 'com.android.support:cardview-v7:25.1.0' 
    compile 'com.beardedhen:androidbootstrap:2.3.1' 
    compile 'com.flyco.roundview:FlycoRoundView_Lib:[email protected]' 
    compile 'com.joanzapata.iconify:android-iconify-fontawesome:2.2.2' 
    compile 'cn.pedant.sweetalert:library:1.3' 
    compile 'com.github.gabrielemariotti.cards:cardslib-core:2.1.0' 
    compile 'com.github.satyan:sugar:1.4' 
    compile 'com.goebl:david-webb:1.3.0' 
    compile 'com.google.firebase:firebase-core:10.2.0' 
    compile 'com.google.firebase:firebase-messaging:10.2.0' 
    compile 'com.google.firebase:firebase-crash:10.2.0' 
    compile 'com.google.firebase:firebase-ads:10.2.0' 
    compile 'com.wdullaer:materialdatetimepicker:3.1.3' 
    compile 'com.yinglan.keyboard:hidekeyboard:1.0.3' 
    compile 'com.android.support:palette-v7:25.1.0' 
    compile 'com.github.johnkil.android-robototextview:robototextview:2.5.1' 
    compile 'com.yarolegovich:lovely-dialog:1.0.5' 
    compile 'me.everything:providers-android:1.0.1' 
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha8' 
    compile 'com.github.matthiasrobbers:shortbread:1.0.1' 
    compile 'com.github.paolorotolo:appintro:4.1.0' 
    compile 'com.squareup.picasso:picasso:2.5.2' 
    annotationProcessor 'com.github.matthiasrobbers:shortbread-compiler:1.0.1' 
} 
apply plugin: 'com.google.gms.google-services' 

입니다 , 일부는 내 응용 프로그램을 일찍 복제하고 그것에 대해 Google에 알리고 저장소에서 제거하는 데 많은 시간이 걸렸습니다.

답변

0

나는 똑같은 문제가 있습니다. 업그레이드 후 'com.android.tools.build:gradle:2.3.0'으로 변경되기 시작 했으므로 다운 그레이드 할 수 있습니다. 나는 이것이 2.3.0에서 proguard로 구축하는 문제를 해결하지 못한다는 것을 알고 있지만, 여전히 당신이 의미있는 시간에 할 수있는 일입니다.