2015-09-21 11 views
11

A causa di un problema durante la creazione della mia applicazione in modalità di rilascio con il plugin gradle 1.3.0, sono passato a 1.4.0 (beta 2), che risolve detto build problema.Impossibile filtrare le risorse per più densità utilizzando gli strumenti di sviluppo SDK 21 o successivi

Tuttavia, mentre alcuni sapori costruire perfettamente, altri hanno la loro costruzione interrotta con il seguente messaggio di errore:

Non è possibile filtrare le attività per la densità multiple utilizzando SDK strumenti 21 o successive costruire. Considera invece l'utilizzo di divisioni di apk.

non ho trovato alcun riferimento alla frase di cui sopra, che cosa devo fare con le risorse di questi sapori, o anche il motivo per cui questo errore appare solo in un paio di sapori e non in tutti loro.

Edit: build.gradle

apply plugin: 'com.android.application' 

android { 
    signingConfigs { 
     config { 
     } 
    } 
    compileSdkVersion 23 
    buildToolsVersion "23.0.1" 
    defaultConfig { 
     applicationId "com.example.appname" 
     minSdkVersion 8 
     targetSdkVersion 23 
     versionCode 1 
     versionName '0.0.1' 
    } 
    buildTypes { 
     release { 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      minifyEnabled true 
      zipAlignEnabled true 
      signingConfig signingConfigs.config 
     } 
     debug { 
      applicationIdSuffix 'debug' 
      versionNameSuffix '_debug' 
     } 
    } 
    flavorDimensions "googleplay" 
    productFlavors { 
     noplay { 
      dimension "googleplay" 
      versionCode Integer.parseInt(defaultConfig.versionCode + "0") 
      buildConfigField "boolean", "HAS_GOOGLE_PLAY", "false" 

      resConfigs "ldpi", "mdpi" 
      // so far we are using the noplay flavor only for old devices, which do not have hidpi 
     } 
     play { 
      dimension "googleplay" 
      versionCode Integer.parseInt(defaultConfig.versionCode + "1") 
      buildConfigField "boolean", "HAS_GOOGLE_PLAY", "true" 
      minSdkVersion 9 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 

    // Google Play services (analytics) 
    playCompile 'com.google.android.gms:play-services-analytics:8.1.0' 

    // ActionBar and support libraries 
    compile 'com.android.support:appcompat-v7:23.0.1' 
    compile 'com.android.support:support-v4:23.0.1' 
} 
+0

Pubblica il tuo build.gradle (non dimenticare di rimuovere le opzioni di firma). –

+1

Fatto; Grazie per il tuo tempo. –

+0

Quali varianti falliscono? È sempre lo stesso (i)? – stkent

risposta

11

resConfigs è sostituito dal APK splits per densità e architetture. Tenere presente quanto segue sentence:

Quando si utilizzano strumenti di generazione di età superiore ai 21 Si potrebbe anche aggiungere resConfigs "nodpi", "hdpi" per limitare anche le cartelle di densità che sono confezionati. Invece, usa le divisioni apk per fornire apk diversi ai dispositivi con densità differenti .

C'è un bug report for this issue.

È necessario rimuovere i resConfigs all'origine e utilizzare al loro posto le divisioni di apk.

In alternativa, passare a build-tool 20.0.0 sembra aggirare questo problema.

+0

Grazie per il puntatore. Ulteriori informazioni su apk splits: http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits e http://geeks.everything.me/2015/06/10/ take-the-ks-off-your-apks-part-1/ –

+0

OMG - hanno cercato dappertutto prove che facessero sì che Splits smettesse di funzionare all'improvviso! Incredibile non c'è alcun avviso o avviso in altro modo a causa di questo ... – slott

Problemi correlati