🦋
build.gradle.ktsってなに?
16KBメモリのページサイズをサポート、から始まった
androidから、これまでリリースしてきたアプリに対して「16KBメモリのページサイズをサポートする必要があります」と言われたのが、そもそもの始まりだった。
Flutterを最新にするのが最も簡単な方法です、が、爺様のアドバイス。
ところが、
Flutter3.35.5にしたらcocoapodsがおかしくなった
podもUpgradeしようとしたら、rubyに合ってません、といわれた。
ruby3.3系を入れるために、ruby-buildをUpgradeした
最終的に、ruby3.3.5、cocoapods 1.16.2 にして、
さらにios/Flutter/Release.xcconfigに加筆修正して、なんとか動くようになった。
androidを修正するために、iOSがオオゴトになったわけ。
で、勢いでAndroidStudioも最新のNarwhal(イッカク)にして、さて、次。
Android版をこれまでどおりBuildしようとしたらエラーだらけ
よく見ると、build.gradleのつもりで追記したfile名が
build.gradle.ktsになっている。
これ、上記のUpgradeの、どの段階でそうなったのか、私には分からない。
なにが違うのかも分からないが、
そもそも書き方が違うんですよ〜 といって、爺様が直してくれた。
こちらは従来のbuild.gradleの書き方
plugins {
id "com.android.application"
id "kotlin-android"
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
id "dev.flutter.flutter-gradle-plugin"
}
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
namespace = "com.example.scatter3d_maker"
compileSdk = flutter.compileSdkVersion
ndkVersion = flutter.ndkVersion
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "com.laporte.scatter3d_maker"
// You can update the following values to match your application needs.
// For more information, see: https://flutter.dev/to/review-gradle-config.
minSdk = flutter.minSdkVersion
targetSdk = flutter.targetSdkVersion
versionCode = flutter.versionCode
versionName = flutter.versionName
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig = signingConfigs.release
shrinkResources false
minifyEnabled false
ndk {
debugSymbolLevel 'FULL'
}
}
}
}
flutter {
source = "../.."
}
こちらは新しいbuild.gradle.kts
import java.util.Properties
plugins {
id("com.android.application")
id("kotlin-android")
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
id("dev.flutter.flutter-gradle-plugin")
}
val keystoreProperties = Properties()
val keystorePropertiesFile = rootProject.file("key.properties")
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(keystorePropertiesFile.inputStream())
}
android {
namespace = "com.laporte.taiko_fu"
compileSdk = flutter.compileSdkVersion
ndkVersion = flutter.ndkVersion
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_11.toString()
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "com.laporte.taiko_fu"
// You can update the following values to match your application needs.
// For more information, see: https://flutter.dev/to/review-gradle-config.
minSdk = flutter.minSdkVersion
targetSdk = flutter.targetSdkVersion
versionCode = flutter.versionCode
versionName = flutter.versionName
}
signingConfigs {
create("release") {
val keyAliasProp = keystoreProperties.getProperty("keyAlias")
val keyPasswordProp = keystoreProperties.getProperty("keyPassword")
val storeFileProp = keystoreProperties.getProperty("storeFile")
val storePasswordProp = keystoreProperties.getProperty("storePassword")
if (!storeFileProp.isNullOrEmpty()) {
storeFile = file(storeFileProp)
}
if (!keyAliasProp.isNullOrEmpty()) keyAlias = keyAliasProp
if (!keyPasswordProp.isNullOrEmpty()) keyPassword = keyPasswordProp
if (!storePasswordProp.isNullOrEmpty()) storePassword = storePasswordProp
}
}
buildTypes {
release {
signingConfig = signingConfigs.getByName("release")
isShrinkResources = false
isMinifyEnabled = false
ndk {
debugSymbolLevel = "FULL"
}
}
}
}
flutter {
source = "../.."
}
Discussion