Gradle Задача zipAlign не работает? - программирование
Подтвердить что ты не робот

Gradle Задача zipAlign не работает?

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

Здесь моя сборка script:

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']
                }
            }
        }
    }
}

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

4b9b3361

Ответ 1

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

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

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

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

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

  buildTypes {
    release {
      signingConfig signingConfigs.release
    }
  }
}

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

Ответ 2

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