LoginSignup
0
0

More than 3 years have passed since last update.

Flutter+Android4.4(Kitkat)でクラッシュする件の対応策

Last updated at Posted at 2020-05-06

現象

Android4.4(Kitkat)の端末にFlutterアプリをビルドしてインストールしたところ、splash後にクラッシュする。

環境など

ツールなど バージョンなど
MacBook Air Early2015 macOS Mojave 10.14.5
Android Studio 3.6.1
Java 1.8.0_131
Flutter 1.12.13+hotfix.5
Dart 2.7.0
Xcode 10.2

クラッシュログ

debug起動した際のクラッシュログです

E/flutter (10422): [ERROR:flutter/shell/platform/android/platform_view_android_jni.cc(39)] java.lang.SecurityException: uid 10290 does not have android.permission.UPDATE_DEVICE_STATS.
E/flutter (10422):  at android.os.Parcel.readException(Parcel.java:1474)
E/flutter (10422):  at android.os.Parcel.readException(Parcel.java:1427)
E/flutter (10422):  at android.app.ActivityManagerProxy.reportActivityFullyDrawn(ActivityManagerNative.java:4637)
E/flutter (10422):  at android.app.Activity.reportFullyDrawn(Activity.java:1475)

原因

ERROR:flutter/shell/platform/android/platform_view_android_jni.cc(39)] java.lang.SecurityException: uid 10290 does not have android.permission.UPDATE_DEVICE_STATS.でググって直ぐに辿り着きました。

解決策はこちらにありました。
https://github.com/flutter/flutter/issues/46172

対応策

MainActivity.ktを開き、以下の記述を追加します。

MainActivity.kt

import android.os.Build // 追加

class MainActivity : FlutterActivity() {

    ....

    // 追加
    override fun onFlutterUiDisplayed() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            reportFullyDrawn();
        }
    }
}

importも忘れずに。

ちなみに、Lollipop5.0、APIレベル21です。
Kitkatは4.4で、APIレベル19です。

ちょうど、19未満は対応する予定無かったのに、MinSDKが16になっていたのでそれも変えておきました。

app/build.gradle
android {
    compileSdkVersion 28

    ...

    defaultConfig {
        ..
        minSdkVersion 19
        targetSdkVersion 28

4.4以下に手持ちがが無いので・・・
4.0.1はなぜか後生大事に持ってますが^^;

iOS版の最低OSバージョンの設定箇所

ところで、iOSの最低OSバージョンってどこで設定するのかな。
これも手持ちのiPadを最低にしておきたいな・・・
ということで調べました。

こちらが参考になりました。
https://teratail.com/questions/87725#reply-137103

  • XcodeでRunnerプロジェクトを開き、[Runner]-右側の[General]タブをタップ
  • Deployment Infoにある[Deployment Target]が該当の箇所

私は手持ちのiPadが9.3.5なので、9.3にしました。(10に上げられないやつw)

そういえば、最新OSに対応してないといけないのって、どこでやるんだろう?

こちらによると、
https://qiita.com/OkamotoHaru/items/0f285e399ed3fc44ea99

Xcodeを最新版に上げないとダメ?ていうかそれだけでいいのかな?

ついにCatlinaに上げるときか・・・

(自宅待機)現場からは以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0