2016-12-12 2 views
0

は、Androidモバイルアプリケーションのバージョンコードとバージョン名をプログラマチックに更新することはできますか。Google PlayのVSTSによるバージョンコード

  • XamarinのAndroid開発のバージョン管理のための
  • のVisual Studio Team Servicesを(Gitの)、建物、 をテストし、解除する:我々が使用するモバイルアプリについては

  • Googleは配信用にプレーします。

当社の継続的な統合の流れは以下のようになります:

Visual studio (xamarin) -> 
Git(Code) -> 
Build -> 
Test(Xamarin testcloud) -> 
Release Google Play (Alpha/Beta/Production) 

は現在、私は流れのもう一方の端に、Googleは文句を言うでしょう、そうでない場合は、手動でのGitにコミットする前に、バージョンコード/名を更新する必要があります新しくリリースされたapkのバージョン番号は、既にPlayストアにあるapkのバージョン番号以下です。

しかし、私たちはたくさんコミットして自動的にビルドリリースを行うので、リリースコードのみをリリースしたい場合は、(googleが拒否する場合)です。これはこの小さなジレンマを引き起こしました。バージョン管理が存在するAndroidManifestは、すでに署名付きで圧縮されたAPKにパッケージ化されているためです。

もう一つは、次のとおりです。直前をリリースバージョン番号を更新するために、(私たちが何を考えて)手動更新事はレースの条件を引き起こす可能性がありますので、我々はこのプロジェクトに複数の開発者と作業しているので、最善の方法です。はGoogle Playから 開発者向けAPIを経由して現在のバージョン番号を取得し、バージョン番号

  • としてビルド番号を使用して、どこかVSTS
  • にバージョン番号を格納

    • 物事は私が考えます

    でも、少しでも行き詰まり、一般的な/ベストプラクティスを探している

  • +0

    おそらく、この上のアンディの答えは役立つかもしれない:http://stackoverflow.com/questions/27058172/xamarin-mobile-app-version-number-scheme-across -3プラットフォームは具体的にhttps://github.com/soltechinc/soltechxf/blob/master/UpdateVersionInfo/Program.cs#L68-L77 –

    答えて

    1

    キャスパー、

    あなたは、パッケージ、看板、ジップALIGNを構築し始めると、それは後半のプロセスでありますので、私は、アプリケーションをパッケージ化/構築する前にマニフェストを修正するアプローチをとりました。ビルド定義では

    、最初のタスクとして、ビルドタスクの前に、マニフェストを更新するタスクを追加:タスクカタログ/ユーティリティで

    • は、
    • のPowerShellスクリプトを追加するには、それを設定しますインライン
    • として

    引数:

    -filePath '$(FilePath)' -oldValue '$(OldValue)' -newValue '$(NewValue)' 
    

    スクリプト:

    param ([string] $filePath, [string] $oldValue, [string] $newValue) 
    
    Write-Host "---Replacing value $oldValue with new value $newValue in file $filePath---" 
    
    $content = [System.IO.File]::ReadAllText($filePath).Replace("$oldValue", $newValue) 
    
    [System.IO.File]::WriteAllText($filePath, $content) 
    

    $ FilePathパラメーターのようなマニフェストへのパスです:

    $(Build.SourcesDirectory)\MyAndroidApp\Properties\AndroidManifest.xml 
    

    $ OLDVALUEパラメータは、バージョンコードプロパティのようになります。

    android:versionCode="1" 
    

    $、newValueパラメーターには、新しいなりますバージョンコードプロパティ:

    android:versionCode="$(AndroidVersionCode)" 
    

    "$(AndroidVersionCode)"は、ビルド定義の変数で、キュー時またはビルド番号で使用できます。


    私はあなたに簡単なパスを与えたが、保守性と利便性のために、私はVSTS Task groupsを利用しました。最後に、ファイル内のテキストを置換するスクリプトはタスクグループであり、どのビルド定義でも使用できます。

    あなたはこのようなもので終わる: Build definition

    +0

    こんにちはVivien、これは私がpowershellスクリプトで一日中一日過ごしたように見えます。 AndroidVersionCodeはここで重要な部分です。 Googleのプレイは、それが最後の成功したリリースから次の連続する整数であることを要求しているようです。あなたはこれを怒りで設定し、それをうまく使いましたか? –

    +0

    hmmm。この [リンク](https://stackoverflow.com/questions/9629125/versioncode-vs-versionname-in-android-manifest) '内部バージョン番号を発見しました。この番号は、あるバージョンが別のバージョンより新しいかどうかを判別するためにのみ使用され、数字が大きいほど最新のバージョンを示します。これはユーザーに表示されるバージョン番号ではありません。その番号はversionName属性によって設定されます。この値は、「100」などの整数で設定する必要があります。連続した各バージョンの数値が高い限り、必要に応じて定義することができます –

    関連する問題