🗝️

Android jks生成

2024/08/26に公開

成功例

証明書を生成する際のコマンド。

keytool -genkey -v -keystore ~/release.jks -keyalg RSA -keysize 2048 -validity 10000 -alias release -storetype JKS

こちらのコマンドを実行してください。
keystore名はrelease.jksでキーエイリアス名はreleaseです。(任意に変更して下さい。)

このコマンドで大事なのは**-storetype JKS** です。

そしてこちらをandroid/app直下にコピーしてFinder(フォルダ)上で置いてください。

証明書の作り方は普通の作り方と変わりません(姓名と2桁のJPのみは入れましょう)

/app/build.gradleファイルを更新する

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
   localPropertiesFile.withReader('UTF-8') { reader ->
       localProperties.load(reader)
   }
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
   throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
   flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
   flutterVersionName = '1.0'
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
   compileSdkVersion 30

   sourceSets {
       main.java.srcDirs += 'src/main/kotlin'
   }

   defaultConfig {
       // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
       applicationId "com.pokeca_deck_manager"
       minSdkVersion 16
       targetSdkVersion 30
       versionCode flutterVersionCode.toInteger()
       versionName flutterVersionName
       testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
   }

   signingConfigs {
       release {
           storeFile file("release.jks")
           storePassword "release000"
           keyAlias "release"  
           keyPassword "release000"
       }
   }

   buildTypes {
       release {
           // TODO: Add your own signing config for the release build.
           // Signing with the debug keys for now, so `flutter run --release` works.
           signingConfig signingConfigs.release
       }
   }
}

flutter {
   source '../..'
}

dependencies {
   implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

signingConfigs内のreleaseは証明書発行時のパスなどを設定して下さい。
ここが隠されていると分からなくなりそうなので試しに適当な文字列で入力したコードの状態にしております。

これでいけます。

key.propertiesを作成してbuild.gradleを参照するだけで分からなくして、key.propertiesをgit
ignoreにするのもありだと思います。

追記

1回アプリ名に類似した証明書を作成したら失敗しました。名前だけ変えたら成功しました。一度下記そのまんまでやってみてください。

keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload -storetype JKS

Discussion