Introduction

忘備録。

Debug だろうが Release だろうが、Android デバイスにアプリをインストールする場合、署名が必要になる。
Debug の場合、複数人の開発者で同一の keystore を使えば、別のマシンで作成された *.apk ファイルをインストールできる。

How to use?

この手の記事はたくさんある。

上記に従って自動の Powershell スクリプトを組んだ。
Windows/Linux/Mac で使える。

ストアパスやエイリアス、CN や OU などのサブジェクトはルールとして決まっていることに注意。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
if ($global:IsWindows)
{
if (!(Test-Path(${env:JAVA_HOME})))
{
Write-Host "JAVA_HOME: ${env:JAVA_HOME} is missing" -ForegroundColor Red
exit
}

$keytool = Join-Path $env:JAVA_HOME jre | `
Join-Path -ChildPath bin | `
Join-Path -ChildPath keytool.exe
$destination = Join-Path $env:USERPROFILE ".android"
}
elseif ($global:IsMacOS)
{
$keytool = (which keytool)
$destination = Join-Path $env:HOME ".android"
}
elseif ($global:IsLinux)
{
$keytool = (which keytool)
$destination = Join-Path $env:HOME ".android"
}

if (!(Test-Path("${keytool}")))
{
Write-Host "keytool: '${keytool}' is missing" -ForegroundColor Red
exit
}

Write-Host "keytool: '${keytool}'" -ForegroundColor Green

$KEYSTORE="debug.keystore"
$ALIAS="androiddebugkey"
$NAME="CN=Android Debug, O=Android, C=US"
$STOREPASS="android"
$KEYPASS=$STOREPASS
$VALIDITY=10950

Write-Host "Delete Key..." -ForegroundColor Green
& "${keytool}" -delete `
-keystore ${KEYSTORE} `
-alias ${ALIAS} `
-storepass ${STOREPASS}

Write-Host "Generate Key..." -ForegroundColor Green
& "${keytool}" -genkey `
-v `
-storetype pkcs12 `
-keystore ${KEYSTORE} `
-keyalg RSA `
-validity ${VALIDITY} `
-storepass ${STOREPASS} `
-alias ${ALIAS} `
-dname "${NAME}" `
-keypass ${KEYPASS}

New-Item -Type Directory "${destination}" -Force | Out-Null
$destination = Join-Path $destination "${KEYSTORE}"
Write-Host "Move to ${destination} ..." -ForegroundColor Green
Move-Item "${KEYSTORE}" "${destination}" -Force

使用例

1
2
3
4
5
6
7
8
$ pwsh generate.ps1 
keytool: '/usr/bin/keytool'
Delete Key...
Generate Key...
10,950日間有効な2,048ビットのRSAのキー・ペアと自己署名型証明書(SHA256withRSA)を生成しています
ディレクトリ名: CN=Android Debug, O=Android, C=US
[debug.keystoreを格納中]
Move to /Users/xxxxx/.android/debug.keystore ...

できた keystore は Xamarin とかで

web

のようにインポートして使う。