2013-10-07 16 views
11

をした私は自分のアプリケーションに署名するために来るとき、私は大きな問題を持っている:私は、docに従って署名構成を設定している:は「署名の設定はスクリプトを構築するのGradleで指定する必要があります」...私はそれを

signingConfigs { 
    release { 
     storeFile file("lomapnew.keystore") 
     storePassword "myPassword" 
     keyAlias "myAlias" 
     keyPassword "Something...." 
    } 
} 

しかし、私はまだ、このエラーメッセージが出ます:「署名の設定がスクリプトを構築するのGradleで指定されなければならない」

enter image description here

+0

リリースビルドタイプにこの署名設定を設定しましたか? – Krylez

+0

私は、メッセージが意味するのは、signingConfigsがグラデルファイルの 'buildscript {}'の内側にあることが必要だと思います。 –

+1

@JBNizet私はそれが本当であるとは思わない、少なくとも私の設定では真実ではない。 – Krylez

答えて

19

私は手足に出て行って、あなたが設定していないことを推測するつもりだしリリースビルドタイプの署名設定。デバッグのビルドタイプは自動ですので、リリースを含めてすべて他のビルドタイプではこれが必要なステップであることは明白ではありません。

そうようにあなたが署名の設定を適用することができます。

android { 
    signingConfigs { 
     // It's not necessary to specify, but I like to keep the debug keystore 
     // in SCM so all our debug builds (on all workstations) use the same 
     // key for convenience 
     debug { 
      storeFile file("debug.keystore") 
     } 
     release { 
      storeFile file("release.keystore") 
      storePassword "myPassword" 
      keyAlias "myAlias" 
      keyPassword "Something...." 
     } 
    } 

    buildTypes { 
     /* This one happens automatically 
     debug { 
      signingConfig signingConfigs.debug 
     } 
     */ 
     release { 
      signingConfig signingConfigs.release 
     } 
    } 
} 
+0

ファイル( "release.keystore")が動作するためには、 'release.keystore'ファイルの場所を教えてください。 – Bhargav

+0

@Bhargavファイルメソッドは、プロジェクトルートからの相対パスです。キーストアは、ビルドファイル内のパスを更新する限り、プロジェクト内のどこにでも存在します。 https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html#file(java.lang.Object) – Krylez

+0

gitのリポジトリと共にキーストアファイルを個人的にバックアップすることをお勧めしますか? – Bhargav

0

回答が我々がフル指定する必要がどこ我々は以下のような情報を手動で指定することができ、すでに与えられているが、私は、他の方法を強調したいと思い、 あなたは

に行けば、この

signingConfigs { 
    release { 
     storeFile file('O:/Android/Projects/yourKeyStore.jks') 
     storePassword "qwerty" 
     keyAlias "yourProjectKeyAlias" 
     keyPassword "ProjectKeyPassword" 
    } 
} 

このような私たちのキーストアの場所へのパスも署名報告書で指定することができますファイル - >プロジェクト構造

プロジェクトのアプリケーションモジュールを選択し、情報を入力できる署名レポートを選択すると、以前のリリース情報が自動的にgradleファイルに追加されます。

最後に、あなただけのbuildTypes {...}セクションで

signingConfig android.signingConfigs.release 

を追加する必要があります。署名手続きが完了します。

0

私は自分のビルドファイルからパスワードを削除するのが好きです。

signingConfigs { 
    releaseSigning { 
     storeFile file(keystoreProperties['storeFile']) 
     storePassword keystoreProperties['keystore.live.storepassword'] 
     keyAlias = keystoreProperties['keystore.live.keyalias'] 
     keyPassword = keystoreProperties['keystore.live.keypassword'] 
    } 
    debugSigning { 
     storeFile file(keystoreProperties['storeFile']) 
     storePassword keystoreProperties['keystore.debug.storepassword'] 
     keyAlias = keystoreProperties['keystore.debug.keyalias'] 
     keyPassword = keystoreProperties['keystore.debug.keypassword'] 
    } 
} 

これは、メニューオプション「署名付きのapkを作成する」とうまく動作しないので、私は味を作成します。したがって、私は、プロパティはその後、私はそうのようなsigningConfigsを定義し、私は

def keystorePropertiesFile = rootProject.file("./local.properties") 
def keystoreProperties = new Properties() 
keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) 

で読み込むことファイルを作成します:

productFlavors { 
    mydebug { 
     signingConfig signingConfigs.debugSigning 
    } 
    myrelease { 
     signingConfig signingConfigs.releaseSigning 
    } 
} 

これで、signingconfigsはツールバーの実行ボタンで動作します。 local.propertiesは、スクリプトを作成あなたのジェンキンスで

ndk.dir=/opt/sdk/ndk-bundle 
sdk.dir=/opt/sdk 
storeFile=/home/christine/.android/debug.keystore 
keystore.debug.storepasswd=android 
keystore.debug.keyalias=androiddebugkey 
keystore.debug.keypassword=android 
keystore.live.storepasswd=android 
keystore.live.keyalias=androiddebugkey 
keystore.livetest.keypassword=android 

のように見えるデフォルトのキーストアの場合、あなたはlocal.propertiesからプロパティファイルは、ビルドサーバー上にある場所にシンボリックリンクを作成する必要があります。

関連する問題