2015-08-03 3 views
21

Я пытаюсь создать простой проект с новым Jack toolchain. Мой проект основан на плагине android-apt (он использует некоторый инструмент обработки аннотаций, но возникает ошибка сборки, даже до того, как я попытался добавить этот инструмент). Вот мой модуль сценарий сборки (я использую Android Studio 1.3 и Gradle плагин 1.3.0):Аварийная ошибка нового Jack при использовании андроида-apt-плагина

apply plugin: 'com.android.application' 

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.neenbedankt.gradle.plugins:android-apt:1.6' 
    } 
} 
apply plugin: 'android-apt' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.1" 

    defaultConfig { 
     applicationId "com.netimen.ui.demo" 
     minSdkVersion 16 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 
     useJack=true 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:22.2.0' 
} 

Я получаю следующее ouptup, когда я пытаюсь синхронизировать мой проект:

Error:Could not find property 'options' on task ':demo:compileDebugJavaWithJack'. 

Когда я пытаюсь запустить gradlew assembleDebug --stacktrace я получаю следующее:

org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':demo'. 
     at org.gradle.configuration.project.LifecycleProjectEvaluator.addConfigurationFailure(LifecycleProjectEvaluator.java:79) 
     at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:74) 
     at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:61) 
     at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:487) 
     at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:85) 
     at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:47) 
     at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:35) 
     at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:129) 
     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:90) 
     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:28) 
     at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:49) 
     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:37) 
     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.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47) 
     at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 
     at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:66) 
     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:71) 
     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.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41) 
     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:246) 
     at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54) 
     at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40) 
Caused by: groovy.lang.MissingPropertyException: Could not find property 'options' on task ':demo:compileDebugJavaWithJack'. 
     at org.gradle.api.internal.AbstractDynamicObject.propertyMissingException(AbstractDynamicObject.java:43) 
     at org.gradle.api.internal.AbstractDynamicObject.getProperty(AbstractDynamicObject.java:35) 
     at org.gradle.api.internal.CompositeDynamicObject.getProperty(CompositeDynamicObject.java:97) 
     at com.android.build.gradle.tasks.JackTask_Decorated.getProperty(Unknown Source) 
     at com.neenbedankt.gradle.androidapt.AndroidAptPlugin.configureVariant(AndroidAptPlugin.groovy:51) 
     at com.neenbedankt.gradle.androidapt.AndroidAptPlugin$_apply_closure1_closure3.doCall(AndroidAptPlugin.groovy:25) 
     at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:67) 
     at org.gradle.api.internal.DefaultDomainObjectCollection.all(DefaultDomainObjectCollection.java:110) 
     at org.gradle.api.internal.DefaultDomainObjectCollection.all(DefaultDomainObjectCollection.java:115) 
     at org.gradle.api.DomainObjectCollection$all$1.call(Unknown Source) 
     at com.neenbedankt.gradle.androidapt.AndroidAptPlugin$_apply_closure1.doCall(AndroidAptPlugin.groovy:24) 
     at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:40) 
     at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:25) 
     at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:87) 
     at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:31) 
     at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) 
     at com.sun.proxy.$Proxy11.afterEvaluate(Unknown Source) 
     at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:67) 
     ... 41 more 

Когда я попытался удалить андроид-apt плагин, проблема исчезнувший.

+3

Не стесняйтесь принять ответ, когда будете готовы :) – botteaap

ответ

27

Редактировать: По состоянию на последнюю версию Android Gradle плагин (2.2) обработка аннотации встроена, также поддерживает jack. Я записал шаги по migrate from android-apt

Старый ответ:

Задача компилятора Джек не поддерживает вариантов прохождения для обработки аннотаций все же, как он все еще является экспериментальной. Сам компилятор Jack поддерживает обработку аннотаций, но это пока не отображается в плагине Gradle. Когда это произойдет, android-apt, вероятно, будет обновлен для поддержки Джека.

+3

С предварительным просмотром Android N, Джек сейчас более открыт. У вас есть некоторая работа, чтобы сделать @botteaap :) – tasomaniac

+2

Без надлежащего API я не могу много сделать, хотя ... – botteaap

+0

@ tasomaniac Как может кто-то заставить их работать вместе? – eclipse1203

10

С момента выпуска Android Studio 2.2 вы можете использовать обработчики аннотаций с новым компилятором Jack.

Если вы хотите процессор аннотаций, которые должны применяться во время компиляции, но не должны быть включены в APK, использовать различные области видимости annotationProcessor зависимостей в модуле уровня build.gradle:

dependencies { 
    compile 'com.google.dagger:dagger:2.0' 
    annotationProcessor 'com.google.dagger:dagger-compiler:2.0' 
} 

Вы также можете применять процессоры аннотаций для конкретные варианты сборки:

debugAnnotationProcessor 'com.google.dagger:dagger-compiler:2.0' 

обработка аннотаций требует Android Gradle плагин версии 2.2.0-альфа1 или выше, так что вам нужно обновление до 2.2 является обязательным. Для того, чтобы использовать плагин, в уровне проекта build.gradle:

classpath 'com.android.tools.build:gradle:2.2.0-alpha1' 

Вы можете найти некоторую информацию в Android Tools Tech Docs или here в более conscise и получить и работает форму, включая некоторую информацию о популярных рамках обработки аннотаций, например, Dagger 2.

+1

Можете быть глупыми, но ваша версия кинжала должна соответствовать вашей версии компилятора кинжала. Кроме того, отсутствует 2.2.0-alph5, вот ссылка на выпуски инструмента сборки на bintray https://bintray.com/android/android-tools/com.android.tools.build.gradle – ObjectiveTruth

+1

В этом случае вы должны прокомментируйте эти строки в вашей графе '// применить плагин: com.neenbedankt.android-apt'' и' // apt 'com.google.dagger: dagger-compiler: 2.0'' – murt

Смежные вопросы