スマホ - android バージョン




Androidリリースビルドの自動化 (4)

this記事を見てください。特に、 key.store.passwordについて言及していkey.store.password 。 私は悩みなくそれを使用しました。

基本的には、あなたの(ビルド)マシンのローカルなsecure.propertiesファイルを作成してください。これは、比較的安全に保たれなければなりません。 このファイルはパスワードを正しい名前のプロパティとして保存し、プロジェクトのANTビルドファイルにインポートします。

私は1つのフォルダに10個のAndroidプロジェクトを持っています。 プロジェクトごとに、私はant debugを使ってビルドすることができます。 したがって、これらのプロジェクトをすべてコンパイルするための簡単なスクリプトを書くことは問題ありません。 私は毎日これらのプロジェクトをビルドするためにHudsonを使用し、うまく動作します。

しかし今、私たちのプロジェクトは段階をリリースする必要があります。 したがって、コンパイルコマンドはant releaseます。 リリースプロジェクトをコンパイルするには、コンパイル時に毎回証明書のパスワードを入力する必要があります。 だから私はリリースのための自動化を行うことはできません。

このコンパイルジョブは私がパスワードを入力することと相互作用する必要がある10のプロジェクトがあるので私を殺します。

リリースビルドを自動化する方法を教えてください。


Gradleベースのビルド

1)パスワードを格納するsecure.propertiesファイルを作成します。

key.store.password=<your keystore password>
key.alias.password=<your alias password>

バージョン管理下に置いておきたいと思うかもしれません。そのため、パスワードを別の*.propertiesファイルに入れているのです。 バージョン管理下にパスワードを置いても構わない場合は、パスワードをbuild.gradleに直接入力することもできますが、これはお勧めできませんので、直接表示しません。

2) build.gradleを次のように設定します。

Properties secureProperties = new Properties()
secureProperties.load(new FileInputStream("secure.properties"))

android {
    signingConfigs {
        release {
            storeFile file("<path to your keystore>")
            storePassword secureProperties['key.store.password']
            keyAlias "<alias name>"
            keyPassword secureProperties['key.alias.password']
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }
}

以上です。 ./gradlew assembleReleaseはパスワードを要求せずにAPKをビルドして署名するようになりました。

Antベースのビルド

1)パスワードを格納するsecure.propertiesファイルを作成します。

key.store.password=<your keystore password>
key.alias.password=<your alias password>

バージョン管理下に置いておきたいと思うかもしれません。なぜなら、パスワードを既存の*.propertiesファイルに入れないからです。 あなたがバージョン管理下にパスワードを持っていてもかまわないなら、 ant.propertiesにこれらの2行をant.propertiesば完了です。

2) custom_rules.xmlファイルを作成して、ビルドシステムにcustom_rules.xmlファイルを伝えます。

<?xml version="1.0" encoding="UTF-8"?>
<project name="custom_rules" default="help">
  <property file="secure.properties" />
</project>

私はこのビルドシステムに精通していないので、 project要素のnamedefaultプロパティについてはわかりませんが、私が選んだのはみんなにとってうまくいくはずです。

2b) Android SDKツールの最近のバージョンはすばらしいはずですが、何らかの理由でbuild.xmlファイルに次のものが含まれていない場合は追加する必要があります:

<import file="custom_rules.xml" optional="true" />

そしてそれはそれでなければなりません。 ant releaseで、パスワードの入力を求めずにAPKをビルドしてサインするようになりました。


ちょっとメモ...私は小道具ファイルにパスワードを設定したくないのですが、デフォルトではあなたのパスワードはコマンドラインにも表示され、これも懸念しています。 SecureInputHandlerをmain_rules.xmlに追加すると、パスワードがコマンドラインに表示されなくなります。

<target name="-release-prompt-for-password" if="has.keystore" unless="has.password">
    <!-- Gets passwords -->
    <input
            message="Please enter keystore password (store:${key.store}):"
            addproperty="key.store.password" >
        <handler classname="org.apache.tools.ant.input.SecureInputHandler" />
    </input>
    <input
            message="Please enter password for alias '${key.alias}':"
            addproperty="key.alias.password" >
        <handler classname="org.apache.tools.ant.input.SecureInputHandler" />
    </input>
</target>

プロジェクトフォルダ内のproject.propertiesでキーストア設定を定義することができます。 ちょうどこのような

key.store = / path / to / your / keystore

key.alias = yourkeyalias

key.store.password = yourkeystorepassword

key.alias.password = yourkeyaliaspassword





android