首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gradle zipAlign任务不工作?

Gradle zipAlign任务不工作?
EN

Stack Overflow用户
提问于 2013-07-12 06:14:34
回答 2查看 13.2K关注 0票数 14

似乎Gradle zipAlign任务对我不起作用,不确定我做错了什么。我尝试包括zipAlign任务,但没有包括它,但似乎没有什么不同。我的gradle脚本显示了一个"release“版本,但当我尝试上传我的.apk时,根据开发人员控制台,它从来都不是zipAligned。

下面是我的构建脚本:

代码语言:javascript
复制
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']
                }
            }
        }
    }
}

感谢任何人的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-12 13:21:48

您的发布版本类型未配置为签名。

如果你手动签署你的apk,你也需要手动运行ZipAlign。ZipAlign必须在签名后发生。

Gradle只有在apk也能签名的情况下才会对齐。

要为发布配置设置签名,您需要首先创建一个新的签名配置,然后将其分配给构建类型。

代码语言:javascript
复制
android {
  signingConfigs {
    release {
      storeFile file("/path/to/keystore")
      storePassword "??"
      keyAlias "??"
      keyPassword "??"
    }
  }

  buildTypes {
    release {
      signingConfig signingConfigs.release
    }
  }
}

注意,签名配置中的所有4个参数都是必需的,否则它会认为缺少一些值,甚至不会尝试签名。

票数 28
EN

Stack Overflow用户

发布于 2014-08-12 05:45:23

可以从命令行获取任何现有的Android Studio gradle项目并对其进行构建/签名,而无需编辑任何文件。这使得它非常适合将项目存储在版本控制中,同时将密钥和密码分开,而不是存储在build.gradle文件中:

代码语言:javascript
复制
./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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17604448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档