2013-07-11 12 views
14

Gradle zipAlignタスクが私のために機能していないように見えますが、私が間違っていることがわかりません。私はzipAlignタスクを含めて試してみましたが、それを含めませんでしたが、違いはありません。私のgradleスクリプトは "リリース"ビルドを吐き出しましたが、私の.apkをアップロードしようとすると、開発者用コンソールには決してzipAlignedされません。すべてのヘルプは感謝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は署名することができる場合のみ、apkをzipalignします。

リリースコンフィグレーションの署名を設定するには、まず新しい署名設定を作成し、それをビルドタイプに割り当てる必要があります。

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

    buildTypes { 
    release { 
     signingConfig signingConfigs.release 
    } 
    } 
} 

署名configにすべての4つのパラメータが必要であることに注意してください、それ以外の場合は、いくつかの値が欠落している考えるだろうし、それも署名しようとしません。

+0

Thanks Xav。自動的に署名するようにリリースビルドを設定するにはどうすればよいですか?リリースキーストアを作成してsigningConfigsの下に設定するだけですか? –

+0

この情報を追加するために編集されました。 –

+2

ビルド中にそれらの値に対してgradleプロンプトを表示することはできますか?私は実際にパスワードをプレーンテキストとして保存したくないのです。 –

3

既存のAndroidスタジオのグラデーションプロジェクトを使用して、ファイルを編集せずにコマンドラインからビルド/サインすることは可能です。これはあなたのプロジェクトをバージョン管理に保存して、あなたのbuild.gradleファイルではなく、キーとパスワードを別々に保存するのに非常に便利です:

関連する問題