Flutter3.16ãã3.19ã¸ç§»è¡ãã¦ã¿ããã¨æã£ããã
ããªãããã£ãã®ã§ããããã調ã¹ãã¨ãã®åå¿é²(*´Ïï½*)
ç°å¢ã¯ãããªæãã主ã«Androidå´ã®è¨å®ã§ããã
- VSCode/Mac M2
- FVM: 2ç³» â 3ç³»
- Flutter: 3.16.9 â 3.19.6
- AndroidStudio: â 2022.1.1(JDK11) â 2023.3.1(JDK17)
- Gradle: 7.5 â 8.2
- share_plus: 7.2.2 -> 9.0.0
- package_info_plus: 4.1.0 -> 8.0.0
- purchases_flutter(RevenueCat): 6.27.0
注æ
RevenueCatã®purchases_flutter
ã¯ã¾ã æ°ããæ¸ãæ¹ã«å¯¾å¿ãã¦ããªãã£ã½ã
Purchases.getOfferings()
ãPurchases.getCustomerInfo()
ãå®è¡ããã¨ã
ã¬ã¹ãã³ã¹ãè¿ã£ã¦ããªãã¦ãåããªããªããã
build.gradleå¨ãã®å¤æ´ãããªãã¨ãæ£å¸¸ã«åããã
Purchases.setLogLevel(LogLevel.verbose)
ã«ãã¦ããªã«ãããããªã
ããããRevenueCatèªä½ã®ãã£ãã·ã¥ãããã®ã§ã
ã¢ããªãåé¤ãã¦ãåã¤ã³ã¹ãã¼ã«ããªãã¨çºè¦ã§ããªããã
ãã ãã®ããããè¦ãã¨ããµã³ãã«ãæ´æ°ããã¦ããã®ã§ã
ãããã対å¿ããããããããªãã
- Migration to applying Gradle plugins with the declarative plugins block in sample by vegaro · Pull Request #1062 · RevenueCat/purchases-flutter
- [AUTOMATIC] Release/6.29.1 by RCGitBot · Pull Request #1068 · RevenueCat/purchases-flutter
ãã£ããã¨
ã¨ãããããéä¸ã¾ã§ãããã調ã¹ãã®ã§ã
ãã£ããã¨ãã¾ã¨ãã¦ãã
FVM/FlutterSDKã®ã¢ãããã¼ã
- FVM: 2ç³» â 3ç³»
- Flutter: 3.16.9 â 3.19.6
Homebrewã§ç®¡çãã¦ããã®ã§ãbrew
ã³ãã³ãã§ã¢ãã
$ brew upgrade fvm $ fvm install 3.19.6 $ fvm use 3.19.6
.fvm/
é
ä¸ã®SDKã®å ´æã ã£ããã
.fvmrc
ã追å ãããããªã©ã¡ãã£ã¨å¤ãã£ã¦ãã
// .vscode/settings.json { - "dart.flutterSdkPath": ".fvm/flutter_sdk", + "dart.flutterSdkPath": ".fvm/versions/3.19.6", // ç¥ }
// .fvm/fvm_config.json { - "flutterSdkVersion": "3.16.9" + "flutterSdkVersion": "3.19.6" }
// .fvmrc + { + "flutter": "3.19.6", + "flavors": {} + }
// android/local.properties sdk.dir=/Users/myuser/Library/Android/sdk - flutter.sdk=/Users/myuser/fvm/versions/3.16.9 + flutter.sdk=/Users/myuser/fvm/versions/3.19.6 flutter.buildMode=debug flutter.versionName=0.0.1 flutter.versionCode=1
ã¢ãã¬ãã§è¤æ°ããã¸ã§ã¯ãã«ãã¦ãã¦ã
åããã¸ã§ã¯ãã«ã.vscode/settings.json
ãããå ´åã¯ã
ãã£ã¡ã®ãã¼ã¸ã§ã³å¤æ´ã確èª
android/local.properties
ãè¦è½ã¨ããã¡
fvm use 3.19.6
ãããã ãã ã¨åæ ãããã
ã¿ã¼ããã«ãä¸åº¦åèµ·åããå¿
è¦ãããã®ã§ã
fvm flutter --version
ã§ç¢ºèª
AndroidStudioå¨ãã®ã¢ãã
- AndroidStudio: â 2022.1.1(JDK11) â 2023.3.1(JDK17)
- Gradle: 7.5 â 8.2
主ã«ããã®å¯¾å¿ãbuild.gradleã®æ¸ãæ¹ãå¤ããããã
AndroidStudioã®æ´æ°
AndroidStudioãHomebrew管çãªã®ã§ãbrew
ã³ãã³ãã§ã¢ãã
$ brew brew upgrade android-studio
JDKã¯AndroidStudioçµã¿è¾¼ã¿ã®JDKã使ã£ã¦ãããã©ã
以ä¸ã®ããã±ã¼ã¸ãJDK17ãå¿
è¦ã«ãªãã®ã§ã
å¤ãAndroidStudioã ã¨ãã«ãã¨ã©ã¼ã«ãªãããã
- share_plus: 7.2.2 -> 9.0.0
- package_info_plus: 4.1.0 -> 8.0.0
主ã«ãã®ãããã®å¯¾å¿é¢é£ã£ã½ã
build.gradleã®æ´æ°
ã¾ã ãéæ¨å¥¨ãªã®ã§ãå¤æ´ããªãã¦ãè¦åãåºãã ãã ãã©ã 以ä¸ã®å¯¾å¿ããã¦ããã
FlutterFireãFirebaseå¨ãã«ã¤ãã¦ã¯æ¸ãã¦ãªãã®ã§ããã£ã¡ãã¯ã¾ããã
android/build.gradle
ãã®ãããããã£ããåé¤ãåãã¼ã¸ã§ã³ã¯å¾ã§ä½¿ãã®ã§ãæ§ãã¦ãã
- buildscript { - ext.kotlin_version = '1.7.10' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:7.3.0' - // START: FlutterFire Configuration - classpath 'com.google.gms:google-services:4.3.10' - classpath 'com.google.firebase:perf-plugin:1.4.1' - classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1' - // END: FlutterFire Configuration - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } - } allprojects { repositories { google() mavenCentral() } } rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" } subprojects { project.evaluationDependsOn(':app') } tasks.register("clean", Delete) { delete rootProject.buildDir }
android/settings.gradle
android/build.gradle
ã§åé¤ããå
容ãæã£ã¦ããæã
app_plugin_loader
ãflutter-gradle-plugin
ã使ããªããªãã
flutter-plugin-loader
ãå©ç¨ããããã«ãªã
pluginManagement { def flutterSdkPath = { def properties = new Properties() file("local.properties").withInputStream { properties.load(it) } def flutterSdkPath = properties.getProperty("flutter.sdk") assert flutterSdkPath != null, "flutter.sdk not set in local.properties" return flutterSdkPath } settings.ext.flutterSdkPath = flutterSdkPath() includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") - plugins { - id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false - } + repositories { + google() + mavenCentral() + gradlePluginPortal() + } } + plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "7.3.0" apply false + id "org.jetbrains.kotlin.android" version "1.7.10" apply false + // START: FlutterFire Configuration + id "com.google.gms.google-services" version "4.3.15" apply false + id "com.google.firebase.firebase-perf" version "1.4.1" apply false + id "com.google.firebase.crashlytics" version "2.8.1" apply false + // END: FlutterFire Configuration + } include ":app" - apply from: "${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle/app_plugin_loader.gradle"
android/app/build.gradle
android/settings.gradle
ã§å®ç¾©ããã©ã¤ãã©ãªãã
å®éã«å©ç¨ããããã«ããè¨å®ã
android/build.gradle
ã«æ¸ãã¦ãã¿ãããªæãã
plugins { id "com.android.application" id "kotlin-android" id "dev.flutter.flutter-gradle-plugin" + // START: FlutterFire Configuration + id 'com.google.gms.google-services' + id 'com.google.firebase.firebase-perf' + id 'com.google.firebase.crashlytics' + // END: FlutterFire Configuration } // ç¥
Gradle/Android Gradle Plugin(AGP)ã®æ´æ°
- Gradle: 7.5 â 8.2
gradle-wrapper.properties
android/gradle/wrapper/gradle-wrapper.properties
ã§ã
å©ç¨ããGradleãã¼ã¸ã§ã³ãå¤æ´ãã
// android/gradle/wrapper/gradle-wrapper.properties distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists - distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip + distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
android/settings.gradle
Gradleãã¼ã¸ã§ã³ã«ããããcom.android.application
ãå¤æ´
// android/settings.gradle pluginManagement { // ç¥ } plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" - id "com.android.application" version "7.3.0" apply false + id "com.android.application" version "8.2.0" apply false id "org.jetbrains.kotlin.android" version "1.7.10" apply false // START: FlutterFire Configuration id "com.google.gms.google-services" version "4.3.15" apply false id "com.google.firebase.firebase-perf" version "1.4.1" apply false id "com.google.firebase.crashlytics" version "2.8.1" apply false // END: FlutterFire Configuration } include ":app"
Android Gradleãã©ã°ã¤ã³(com.android.application)ã®ãã¼ã¸ã§ã³ã¨ã
対å¿ãã¦ããGradleã®ãã¼ã¸ã§ã³ã¯ä»¥ä¸ã«ã¾ã¨ã¾ã£ã¦ãã
ãã®ä»ã®å¤æ´
fluttre create -t app
ã®ãã³ãã¬ã¼ãæ¯è¼ããã¨ã
AndroidManifest.xmlãã¡ãã£ã¨ããã£ã¦ãã
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <application android:label="sample" android:name="${applicationName}" android:icon="@mipmap/ic_launcher"> <!- ç¥ --> </application> + <!-- Required to query activities that can process text, see: + https://developer.android.com/training/package-visibility?hl=en and + https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT. + + In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. --> + <queries> + <intent> + <action android:name="android.intent.action.PROCESS_TEXT"/> + <data android:mimeType="text/plain"/> + </intent> + </queries> </manifest>
NDKã®ãã¼ã¸ã§ã³
å¿ è¦ã«å¿ãã¦ãNDKã®ãã¼ã¸ã§ã³ãæå®ããå¿ è¦ãããã
android { ndkVersion "26.3.11579264" // or ndkVersion "25.2.9519653" }
å種ã³ãã³ã
å¤ããã£ãã·ã¥ãæªãããã¦ããããã®ã§ã
é©å®æ¶ããªããã試ãã¦ã¿ãã¨ããæãã
# ãã«ããããã¡ã¤ã«ãåé¤ $ fvm flutter clean # pub getã§åå¾æã®ãã£ãã·ã¥ãåé¤ $ fvm flutter pub cache clean # pub getã§åå¾ããããã±ã¼ã¸ãåã¤ã³ã¹ãã¼ã« $ fvm flutter pub cache repair # Androidå´(Gradle)ã®clean $ cd android && ./gradlew clean # iOSå´(CocoaPods)ãclean $ cd ios && .pod cache clean # ããã±ã¼ã¸ã®ã¢ãããã¼ãã®ç¢ºèª $ fvm flutter pub outdated # ããã±ã¼ã¸ã®ã¢ãããã¼ããå®è¡ $ fvm flutter pub upgrade <package_name> # 詳細çã§è¦ãã¨ãJDKã®ãã¼ã¸ã§ã³ã確èªã§ãã $ fvm flutter doctor -v [â] Android Studio (version 2023.3) ⢠Android Studio at /Applications/Android Studio.app/Contents ⢠Flutter plugin can be installed from: ð¨ https://plugins.jetbrains.com/plugin/9212-flutter ⢠Dart plugin can be installed from: ð¨ https://plugins.jetbrains.com/plugin/6351-dart ⢠Java version OpenJDK Runtime Environment (build 17.0.10+0-17.0.10b1087.21-11572160)
以ä¸!! ããªãããã£ããã©ããªãã¨ãã¢ããã§ãããã(*´Ïï½*)
åèã«ãããµã¤ããã¾
- purchases-flutter/revenuecat_examples/purchase_tester/android at main · RevenueCat/purchases-flutter
- Android Gradle plugin 8.4 release notes  | Android Studio  | Android Developers
- Android is all of a sudden DEAD - getCustomerInfo doesn't work and getOfferings · Issue #992 · RevenueCat/purchases-flutter
- [Android] Autofill from saved credentials doesn't work · Issue #137760 · flutter/flutter
- ã17ã¯ç¡å¹ãªã½ã¼ã¹ã»ãªãªã¼ã¹ã§ããã¨ããã¨ã©ã¼
- ãFlutterãAndroidã®APKãã«ããgradleãAndroid 12ã®ã¨ã©ã¼ãã§ã¦åºæ¥ãªãåé¡ã®è§£æ±ºç #Android - Qiita
- ãFlutterããYou are applying Flutterâs main Gradle pluginãã®è¦åã解決âFlutter Salon
- Flutterã§ã¨ã©ã¼ãçºçããæã®è§£æ±ºæ¹æ³ #iOS - Qiita