2013-07-11 2 views
14

Кажется, задача Gradle zipAlign не работает для меня, не знаю, что я делаю неправильно. Я попытался включить задачу zipAlign, и не включая ее, но, похоже, это не имеет значения. Мои сценарии градиента выплевывают сборку «release», но это никогда не zipAligned в соответствии с консолью разработчика, когда я пытаюсь загрузить мой .apk.Задача Gradle zipAlign не работает?

Вот мой сценарий сборки:

buildscript { 
    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     classpath 'com.android.tools.build:gradle:0.4.2' 
    } 
} 

apply plugin: 'android' 

dependencies { 
    compile project(':facebook-android-sdk-3.0.1:facebook') 
    compile project(':google-play-services_lib') 
    compile project(':nineoldandroids') 
    compile project(':SlidingMenu-master:library') 
    compile project(':ViewPagerIndicator') 
    compile project(':volley') 
    compile project(':windowed-seek-bar') 
    compile files('compile-libs/androidannotations-2.7.1.jar', 'libs/Flurry_3.2.1.jar', 'libs/google-play-services.jar', 'libs/gson-2.2.4.jar', 'libs/picasso-1.1.1.jar', 'libs/crittercism_v3_0_11_sdkonly.jar', 'libs/gcm.jar', 'libs/apphance-library.jar') 
} 

android { 
    buildToolsVersion "17.0" 
    compileSdkVersion 17 

    signingConfigs { 
     debug { 
      storeFile file('keystores/debug.keystore') 
     } 
    } 

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

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

Любая помощь приветствуется!

ответ

28

Тип выпуска не настроен для подписания.

Если вы подписываете свой apk вручную, вам также нужно запустить ZipAlign вручную. ZipAlign должно произойти после подписания.

Gradle будет zipalign apk, только если он может подписать также.

Чтобы настроить подписку на конфигурацию выпуска, вам необходимо сначала создать новый конфиг подписания, а затем присвоить его типу сборки.

android { 
    signingConfigs { 
    release { 
     storeFile file("/path/to/keystore") 
     storePassword "??" 
     keyAlias "??" 
     keyPassword "??" 
    } 
    } 

    buildTypes { 
    release { 
     signingConfig signingConfigs.release 
    } 
    } 
} 

Обратите внимание, что все 4 параметра в конфигурации подписи требуется, в противном случае он будет рассматривать некоторые значения отсутствуют, и это не будет даже пытаться подписать.

+0

Thanks Xav. Как настроить автоматическую подписку на выпуск? Должен ли я просто создать хранилище ключей для выпуска и установить его под ключ подписи? –

+0

Отредактировано для добавления этой информации. –

+2

Возможно ли иметь подсказку о градации для этих значений во время сборки? Я действительно не хочу, чтобы пароли хранились как обычный текст. –

3

Можно выполнить любой существующий проект градиента Android Studio и построить/подписать его из командной строки без редактирования каких-либо файлов. Это делает его очень приятным для хранения вашего проекта в управлении версиями, сохраняя ваши ключи и пароли отдельно, а не в файле build.gradle:

./gradlew assembleRelease -Pandroid.injected.signing.store.file=$KEYFILE -Pandroid.injected.signing.store.password=$STORE_PASSWORD -Pandroid.injected.signing.key.alias=$KEY_ALIAS -Pandroid.injected.signing.key.password=$KEY_PASSWORD 
Смежные вопросы