2015-04-07 8 views
5

Hallo Ich versuche, meine aar-Datei mit gradle buil und benennen, aber die obige Fehlermeldung erhalten:Android fehlgeschlagen aar Datei in Build umbenennen

A problem occurred evaluating project ':app'. 
> Could not find property 'outputs' on BuildType_Decorated{name=variant, debuggable=false, testCoverageEnabled=false, jniDebuggable=false, pseudoLocalesEnabled=false, renderscriptDebuggable=false, renderscriptOptimLevel=3, applicationIdSuffix=null, versionNameSuffix=null, minifyEnabled=false, zipAlignEnabled=true, signingConfig=null, embedMicroApp=true, mBuildConfigFields={}, mResValues={}, mProguardFiles=[], mConsumerProguardFiles=[], mManifestPlaceholders={}}. 

Hier ist mein voller Build-Skript auf gradle

apply plugin: 'com.android.library' 

android.libraryVariants.all { variant -> 
    def alignedOutputFile = output.outputFile 
    def unalignedOutputFile = output.packageApplication.outputFile 

    logger.warn('You got to variant: ' + variant + ' and output: ' + output) 
    // Customise APK filenames (to include build version) 
    if (variant.buildType.zipAlignEnabled) { 
     // normal APK 
     output.outputFile = new File(alignedOutputFile.parent, alignedOutputFile.name.replace(".aar", "-" + defaultConfig.versionName + "-" + defaultConfig.versionCode + ".aar")) 
    } 
    // 'unaligned' APK 
    output.packageApplication.outputFile = new File(unalignedOutputFile.parent, unalignedOutputFile.name.replace(".aar", "-" + defaultConfig.versionName + "-" + defaultConfig.versionCode + ".aar")) 

} 

    android { 
     compileSdkVersion 21 
     buildToolsVersion '21.1.2' 

     repositories { 
      flatDir { 
       dirs 'libs' 
      } 
     } 



     defaultConfig { 
      minSdkVersion 14 
      targetSdkVersion 21 
      versionCode 1 
      versionName "1.0" 
     } 
     buildTypes { 

      release { 
       minifyEnabled false 
       proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      } 
     } 
    } 

    /* 
     Both Joda-Time imports have these 2 files and they conflict with each other. 'exclude' is 
     the workaround. 
    */ 
    android.packagingOptions { 
     exclude 'META-INF/LICENSE.txt' 
     exclude 'META-INF/NOTICE.txt' 
    } 

    dependencies { 
     compile fileTree(dir: 'libs', include: ['*.jar']) 
     compile 'com.android.support:appcompat-v7:21.0.3' 
     compile(name: 'etsdk-3.5.0', ext: 'aar') 
     // 3rd Party Libraries Required for SDK integration 
     compile 'com.fasterxml.jackson.core:jackson-annotations:2.4.4' 
     compile 'com.fasterxml.jackson.core:jackson-databind:2.0.6' 
     compile 'org.joda:joda-convert:1.7' 
     compile 'joda-time:joda-time:2.6' 
     compile 'com.j256.ormlite:ormlite-android:4.48' 
     compile 'com.j256.ormlite:ormlite-core:4.48' 
     compile 'com.belladati:httpclientandroidlib:4.3.0' 
     compile 'com.radiusnetworks:AndroidIBeaconLibrary:0.7.6' 
     compile 'com.google.android.gms:play-services:4.0.30' 
    } 

    // Top-level build file where you can add configuration options common to all sub-projects/modules. 

    buildscript { 
     repositories { 
      jcenter() 
     } 
     dependencies { 
      classpath 'com.android.tools.build:gradle:1.1.+' 

      // NOTE: Do not place your application dependencies here; they belong 
      // in the individual module build.gradle files 
     } 
    } 

    allprojects { 
     repositories { 
      jcenter() 
     } 
    } 

Antwort

3

Ich denke, Sie könnten Ihren Variantencode an der falschen Stelle haben. Ich habe versucht, die folgende und es für mich gearbeitet:

android.applicationVariants.all { variant -> 
    variant.outputs.each{ output -> 
     logger.warn('You got to variant: ' + variant + ' and output: ' + output) 
    } 
} 

ich dies auf der build.gradle auf höchstem Niveau setzen, nicht unter buildTypes oder irgendetwas anderes, und ich kann sehen:

You got to variant: com.and[email protected]3ab912fb and output: com.a[email protected]6441365a

You got to variant: com.and[email protected]dc7d23 and output: com.a[email protected]b9b8546

also findet es die Ausgaben variabel und iteriert darüber.

Edit: Da Sie die offiziellen Quellen wollen, gehen Sie auf die 'Manipulieren von Aufgaben' Abschnitt hier: http://tools.android.com/tech-docs/new-build-system/user-guide

Von der Website:

In Android projects, this is a bit more complicated because there could be a large number of the same task and their name is generated based on the Build Types and Product Flavors.

In order to fix this, the android object has two properties:

applicationVariants (only for the app plugin) 
libraryVariants (only for the library plugin) 
testVariants (for both plugins) 
+0

cool lassen Sie mich dies geben – jonney

+0

Immer noch nicht funktioniert. Ich erhalte diesen Fehler: > Konnte Eigenschaft "Ausgabe" auf com[email protected]f10d055 nicht finden. wird meine Post über – jonney

+0

aktualisieren Sie verpassten die Definition der Ausgangsvariable, denken Sie daran, die zweite Zeile in meiner Antwort zu tun: "variant.outputs.each {output ->" –

4

Sie erste Referenz output hier:
def alignedOutputFile = output.outputFile

Sie haben es jedoch nicht deklariert, weshalb Sie eine Warnung erhalten, dass Gradle Could not find property 'output'.

Sie müssen entweder eine Schleife durch die output s zu Ihrem variant gehören, wie in this post:

android.libraryVariants.all { variant -> 
    variant.outputs.each { output -> 
     output.outputFile = ...   
    } 
} 

oder sie vollständig zu qualifizieren, z.B.
def alignedOutPutFile = variant.outputs[0].outputFile

+0

Ich wünschte, ich könnte deine Antwort auch als die richtige markieren, aber ich habe Daniels als einen markiert, weil er mir geholfen hat, mehr darüber zu verstehen, was das Problem war. Danke trotzdem – jonney

Verwandte Themen