2013-07-11 1 views
14

Gradle zipAlign 작업이 저를 위해 작동하지 않는 것 같습니다. 내가 잘못하고있는 것이 확실하지 않습니다. zipAlign 작업을 포함하여 시도했지만 포함 시키지는 않았지만 차이를 만드는 것 같지 않습니다. 내 grad 스크립트는 "릴리스"빌드를 내뱉지 만 .apk를 업로드하려고하면 개발자 콘솔에 따라 zipAligned가되지 않습니다. 어떤 도움을 주시면 감사지렛대 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은 서명 할 수있는 경우에만 apipal을 zipalign합니다.

릴리스 구성에 대한 서명을 설정하려면 먼저 새 서명 구성을 만든 다음 빌드 유형에 할당해야합니다.

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

    buildTypes { 
    release { 
     signingConfig signingConfigs.release 
    } 
    } 
} 

서명 구성의 4 개 매개 변수가 모두 필요하며 그렇지 않으면 일부 값이 누락되었다고 간주되어 서명하지 않습니다.

+0

Thanks Xav. 자동으로 서명하도록 릴리스 빌드를 구성하려면 어떻게합니까? 릴리스 키 저장소를 만들고 signingConfigs 아래에 설정하면됩니까? –

+0

이 정보를 추가하기 위해 편집 됨. –

+2

빌드하는 동안 해당 값에 대해 gradle 프롬프트를 표시 할 수 있습니까? 나는 비밀 번호를 일반 텍스트로 저장하고 싶지 않습니다. –

3

기존 Android Studio gradle 프로젝트를 가져 와서 파일을 수정하지 않고 명령 줄에서 빌드/서명 할 수 있습니다. 따라서 버전 관리에 프로젝트를 저장하는 동안 build.gradle 파일에 키와 비밀번호를 별도로 저장하는 것이 좋습니다.

관련 문제