2015-01-06 14 views
8

DebugとReleaseビルドを同時にデバイスにデプロイしたいと思います。ビルドする前にマニフェストのパッケージ名を手動で変更すると、これを行うことができます。ビルド時にパッケージ名を動的に指定することはできますか?

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="my.package"> 

しかし

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="my.packageDEBUG"> 

に私は解決策を構築していたとき、私はこれを自動的に行うしたいと思い変更。デバッグビルドを行うと、マニフェストに package="my.packageDEBUG"というビルドが作成されます。

これは可能ですか?あれば、どうですか?

答えて

13

プロジェクトのカスタムプリビルドイベントを作成する必要があります。

プロジェクトを右クリックし、[プロパティ]を選択...

次にビルドイベントをクリックして、ビルド前イベントテキストボックスにこれを追加します。

PowerShell -File "$(SolutionDir)Update-PackageName.ps1" $(ProjectDir) $(ConfigurationName) 

コピーし、次のPowerShellスクリプトと保存それあなたのソリューションフォルダのように更新-PackageName.ps1

param ([string] $ProjectDir, [string] $ConfigurationName) 
Write-Host "ProjectDir: $ProjectDir" 
Write-Host "ConfigurationName: $ConfigurationName" 

$ManifestPath = $ProjectDir + "Properties\AndroidManifest.xml" 

Write-Host "ManifestPath: $ManifestPath" 

[xml] $xdoc = Get-Content $ManifestPath 

$package = $xdoc.manifest.package 

If ($ConfigurationName -eq "Release" -and $package.EndsWith("DEBUG")) 
{ 
    $package = $package.Replace("DEBUG", "") 
} 
If ($ConfigurationName -eq "Debug" -and -not $package.EndsWith("DEBUG")) 
{ 
    $package = $package + "DEBUG" 
} 

If ($package -ne $xdoc.manifest.package) 
{ 
    $xdoc.manifest.package = $package 
    $xdoc.Save($ManifestPath) 
    Write-Host "AndroidManifest.xml package name updated to $package" 
} 

幸運!

+1

ありがとうございました。できます! PowerShellでは、これが動作する前に 'Set-ExecutionPolicy RemoteSigned'を適用する必要があります。 – DaveDev

+1

PowerShellでこれを行う必要がありました。 "Set-ExecutionPolicy RemoteSigned -Scope CurrentUser" – xleon

+0

このPowerShellのバリエーションを使用して、アプリケーションラベル(アプリケーション名)を変更する方法はありますか? –

1

Xamarinのフォーラムでthis questionによると、パッケージのプロパティを変更し、各ビルドに異なるAndroidManifest.xmlファイルを指定することができます。 droid.csprojファイルで

は、各ビルド構成のために、そのよう<AndroidManifest>タグを追加します。

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
    ... 
    <AndroidManifest>Properties\AndroidManifestDbg.xml</AndroidManifest> 
    ... 

ここXamarin's documentation on itです。

+1

アンドロイドマニフェストタグをグローバル/外部のプロパティグループから削除しましたか? – david

関連する問題