2014-10-09 7 views
16

Przyjrzałem się kilku dyskusjom i blogom na temat kompilowania aplikacji na Androida w Android Studio ze strukturą AndroidAnnotations specjalnie this one, ale żadna z nich nie pomogła mi zacząć.Nie można utworzyć projektu w AndroidStudio z biblioteką AndroidAnnotations

Używam Androida Studio 0.8.9 i wskazuję na pobraną binarną Gradle 2.1. Używam Ubuntu 14.04.

Proces kompilacji gradacji mówi, że brakuje mi kopii pliku AndroidManifest.xml w danej lokalizacji (proszę zobaczyć wynik poniżej), mimo że znalazłem go podczas nawigacji do tego folderu za pomocą mojego eksploratora plików.

Należy również zauważyć, że w celu usunięcia ostrzeżenia, Wymieniłem

variant.processResources.manifestFile 

przez

variant.outputs.processResources.manifestFile 

w Gradle skryptu.

Oto moja Gradle skrypt kompilacji:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.13.2' 
     classpath 'com.neenbedankt.gradle.plugins:android-apt:1.3' 
    } 
} 

apply plugin: 'android' 

repositories { 
    mavenCentral() 
} 

configurations { 
    apt 
} 

dependencies { 
    compile fileTree(include: '*.jar', dir: 'libs') 
    compile files('libs/androidsvg-1.2.1.jar') 
    compile 'com.android.support:appcompat-v7:20.0.0' 
    compile 'org.androidannotations:androidannotations-api:3.0' 
    apt 'org.androidannotations:androidannotations:3.0' 
} 

android { 
    compileSdkVersion 20 
    buildToolsVersion "20.0.0" 

    defaultConfig { 
     minSdkVersion 9 
     targetSdkVersion 20 
    } 

    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aidl.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 

     // Move the tests to tests/java, tests/res, etc... 
     instrumentTest.setRoot('tests') 

     // Move the build types to build-types/<type> 
     // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ... 
     // This moves them out of them default location under src/<type>/... which would 
     // conflict with src/ being used by the main source set. 
     // Adding new build types or product flavors should be accompanied 
     // by a similar customization. 
     debug.setRoot('build-types/debug') 
     release.setRoot('build-types/release') 
    } 
} 

def getSourceSetName(variant) { 
    return new File(variant.dirName).getName(); 
} 

android.applicationVariants.all { variant -> 
    def aptOutputDir = project.file("${project.buildDir}/source/apt/") 
    def aptOutput = new File(aptOutputDir, variant.dirName) 
    println "****************************" 
    println "variant: ${variant.name}" 
    println "manifest: ${variant.outputs.processResources.manifestFile}" 
    println "aptOutput: ${aptOutput}" 
    println "****************************" 

    android.sourceSets[getSourceSetName(variant)].java.srcDirs+= aptOutput.getPath() 

    variant.javaCompile.options.compilerArgs += [ 
      '-processorpath', configurations.apt.getAsPath(), 
      '-AandroidManifestFile=' + variant.outputs.processResources.manifestFile, 
      '-s', aptOutput 
    ] 

    variant.javaCompile.source = variant.javaCompile.source.filter { p -> 
     return !p.getPath().startsWith(aptOutputDir.getPath()) 
    } 

    variant.javaCompile.doFirst { 
     aptOutput.mkdirs() 
    } 
} 

Oto moja Gradle wyjście konsoli:

Information:Gradle tasks [:compileDebugSources] 
**************************** 
variant: debug 
manifest: [<my_home>/AndroidStudioProjects/ChessPositionManagerAndroid/build/intermediates/manifests/full/debug/AndroidManifest.xml] 
aptOutput: <my_home>/AndroidStudioProjects/ChessPositionManagerAndroid/build/source/apt/debug 
**************************** 
**************************** 
variant: release 
manifest: [<my_home>/AndroidStudioProjects/ChessPositionManagerAndroid/build/intermediates/manifests/full/release/AndroidManifest.xml] 
aptOutput: <my_home>/AndroidStudioProjects/ChessPositionManagerAndroid/build/source/apt/release 
**************************** 
:preBuild 
:preDebugBuild 
:checkDebugManifest 
:preReleaseBuild 
:prepareComAndroidSupportAppcompatV72000Library UP-TO-DATE 
:prepareComAndroidSupportSupportV42000Library UP-TO-DATE 
:prepareDebugDependencies 
:compileDebugAidl UP-TO-DATE 
:compileDebugRenderscript UP-TO-DATE 
:generateDebugBuildConfig UP-TO-DATE 
:generateDebugAssets UP-TO-DATE 
:mergeDebugAssets UP-TO-DATE 
:generateDebugResValues UP-TO-DATE 
:generateDebugResources UP-TO-DATE 
:mergeDebugResources UP-TO-DATE 
:processDebugManifest UP-TO-DATE 
:processDebugResources UP-TO-DATE 
:generateDebugSources UP-TO-DATE 
:compileDebugJava 
Note: Resolve log file to <my_home>/AndroidStudioProjects/ChessPositionManagerAndroid/build/source/apt/androidannotations.log 
Note: 18:29:17.724 [Daemon Thread 16] INFO o.a.AndroidAnnotationProcessor:86 -  Initialize AndroidAnnotationProcessor with options {androidManifestFile=[<my_home>/AndroidStudioProjects/ChessPositionManagerAndroid/build/intermediates/manifests/full/debug/AndroidManifest.xml]} 
Note: 18:29:17.869 [Daemon Thread 16] INFO o.a.AndroidAnnotationProcessor:117 - Start processing for 1 annotations on 8 elements 
Error:18:29:17.885 [Daemon Thread 16] ERROR o.a.h.AndroidManifestFinder:95 - Could not find the AndroidManifest.xml file in specified path : [<my_home>/AndroidStudioProjects/ChessPositionManagerAndroid/build/intermediates/manifests/full/debug/AndroidManifest.xml] 
Note: 18:29:17.886 [Daemon Thread 16] INFO o.a.p.TimeStats:81 - Time measurements: [Whole Processing = 17 ms], [Extract Annotations = 13 ms], [Extract Manifest = 3 ms], 
Note: 18:29:17.887 [Daemon Thread 16] INFO o.a.AndroidAnnotationProcessor:131 - Finish processing 
Note: 18:29:17.954 [Daemon Thread 16] INFO o.a.AndroidAnnotationProcessor:117 - Start processing for 0 annotations on 0 elements 
Note: 18:29:17.954 [Daemon Thread 16] INFO o.a.p.TimeStats:81 - Time measurements: [Whole Processing = 0 ms], 
Note: 18:29:17.955 [Daemon Thread 16] INFO o.a.AndroidAnnotationProcessor:131 - Finish processing 
Warning:Unclosed files for the types '[dummy1412872157721]'; these types will not undergo annotation processing 
1 warning 
Error:Execution failed for task ':compileDebugJava'. 
> Compilation failed; see the compiler error output for details. 
Information:BUILD FAILED 
Information:Total time: 3.981 secs 
Information:2 errors 
Information:1 warning 
Information:See complete output in console 

chciałbym przeprosić jeśli kiedykolwiek mój błąd jest zbyt oczywiste, ale byłem szukając kilka godzin, bez powodzenia.

Odpowiedz

30

Czy próbowałeś dodając trochę config dla apt:

dependencies { 
     ... 
     classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4' 
    } 

    apply plugin: 'android-apt' 

    apt { 
     arguments { 
      androidManifestFile variant.processResources.manifestFile 
      resourcePackageName '<your package>' 
     } 
    } 
+0

Próbowałem dodać swój sugestia (zastąpienie moim pakietem), ale dostałem błąd "Nieobsługiwana metoda DSL z gradientem: apt()". I dodanie "Zastosuj plugin: apt" wpadł mi w inny błąd (wtyczka nie została znaleziona) – loloof64

+1

Zaktualizowałem swoją odpowiedź, upewnij się, że używasz Androida-apt jako wtyczki – brwngrldev

+0

Zaktualizowałem mój skrypt: dostałem się do błędu "Brak takiej właściwości: projectDependencies dla klasy: com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated " – loloof64

4

Zastosuj wtyczki wewnątrz buid.gradle (poziom Gradle Module) plik zostanie on rozwiązany

apply plugin: 'android-apt' 
Powiązane problemy