Android
 Computer >> コンピューター >  >> システム >> Android

Flutter チュートリアル:アプリを最新の V2 Android 埋め込みに移行する

Flutter チュートリアル:アプリを最新の V2 Android 埋め込みに移行する

Flutter の初期に流行に乗ったのであれば、おそらく Flutter バージョン 1.12 より前に作成されたプロジェクトが 1 つまたは 2 つあるでしょう。その場合は、プロジェクトの 1 つで Pub get を実行するたびに、次のメッセージが表示される可能性があります。

このアプリは、Android 埋め込みの非推奨バージョンを使用しています。
予期しない実行時エラーや将来のビルド失敗を回避するには、このアプリを V2 埋め込みに移行してみてください。

アプリの移行に関するドキュメントを参照してください:https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects

ドキュメント自体には、この警告を表示しないようにするために実行する必要がある手順が記載されていますが、どこを変更するかについては必ずしも明確ではありません。

この記事では、Flutter アプリケーションを V2 Embedding に移行して、警告を永久に解決できるようにするための段階的なチュートリアルを提供します。

自動移行 – 簡単な解決策

アプリケーションを簡単に再作成できる場合は、この移行プロセスを省略できることは言うまでもありません。それで、それは何を意味するのでしょうか?

アプリケーションのコードが複雑でない場合は、ファイルを lib フォルダーに保存し、flutter create を使用して新しいプロジェクトを作成するだけで済みます。 。こうすることで、プロジェクトはすでに V2 Embedding に移行されており、lib フォルダーにあるコードをコピーして貼り付けるだけで済みます。

ただし、プロジェクトがより複雑な場合、たとえばプラットフォーム固有のコードを含むパッケージである場合は、手動で移行した方がよいでしょう。

手動移行 – 次の手順に従ってください

<オル>
  • メインアクティビティを開きます アプリケーション内の .kt (または .java) ファイル
  • このファイルに含まれるコンテンツはすべて削除し、クラス宣言だけを含めてそのままにしておく必要があります (そこに特定のロジックがある場合を除く)。
  • すべてのインポートを削除し、次のインポートが 1 つあることを確認します。
  • import io.flutter.embedding.android.FlutterActivity;
    

    最終結果は次のようになります。

    import io.flutter.embedding.android.FlutterActivity;
    public class MainActivity extends FlutterActivity { 
     // Nothing should be here
    }
    
    <オル>
  • AndroidManifest.xml ファイルを開き、application タグの下の name 属性を ${applicationName} に変更します。 – つまり、次のようになります:
  • <application 
     android:name="${applicationName}"> 
     .... 
    </application>
    
    <オル>
  • アプリケーション タグ内に次のメタデータを追加する必要があります:
  • <meta-data 
     android:name="flutterEmbedding" 
     android:value="2" />
    
    <オル>
  • 特定のスプラッシュ スクリーンの動作が必要な場合は、スプラッシュ スクリーンのメタ タグを削除する必要があります。
  • <meta-data android:name="io.flutter.app.android.SplashScreenUntilFirstFrame" android:value="true" />
    
    <オル>
  • 次に、styles.xml ファイルに移動し、好みのドローアブルを使用して LaunchTheme を設定します。
  • <?xml version="1.0" encoding="utf-8"?>
    <resources> 
     <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar"> <item name="android:windowBackground">@drawable/launch_background
     </item> 
     </style>
    </resources>
    

    上記のすべての変更を行うと、AndroidManifest.xml は次のようになります。

    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="PACKAGE_NAME">
    <application 
     android:name="${applicationName}" 
     android:label="APPLICATION_LABEL" 
     android:icon="@mipmap/ic_launcher"> 
     <activity 
     android:name=".MainActivity"
     android:exported="true" 
     android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize"> 
     <intent-filter> 
     <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
     </activity> 
     <meta-data 
     android:name="flutterEmbedding" 
     android:value="2" /> 
     </application>
    </manifest>
    

    AndroidX のサポート

    古いサポート ライブラリの代わりに AndroidX ライブラリを使用するようにプロジェクトを移行する必要がある場合もあります。アプリケーションをビルドして実行するときに、このことについて警告が表示されます。

    アプリは AndroidX を使用していません。潜在的なビルドの失敗を避けるために、https://goo.gl/CP92wY の手順に従ってアプリを迅速に移行できます。

    Android Studio には AndroidX への移行サポートが組み込まれているため、この問題を修正するのはかなり簡単です。

    まず、Flutter アプリケーションの Android フォルダーをスタンドアロン プロジェクトとして開きます。

    「リファクタリング」→「AndroidX に移行」をクリックします。

    Flutter チュートリアル:アプリを最新の V2 Android 埋め込みに移行する AndroidX に移行するためのドロップダウン メニュー

    次に、プロジェクトのコピーを保存するように求められ、その後、移行プロセスが実行されます。

    表示される可能性のあるエラー

    この移行プロセス中に、アプリケーションを構築するときにいくつかのエラーが発生する可能性があります。最も顕著なものは次のとおりです。

    • 変更可能な Windows 環境変数マップを取得できません
    • cvc-complex-type.2.4.a:要素「base-extension」で始まる無効なコンテンツが見つかりました。 「{layoutlib}」 の 1 つが必要です
    • 警告:このバージョンは SDK XML バージョン 2 までしか認識しませんが、バージョン 3 の SDK XML ファイルが検出されました。これは、 異なる時期にリリースされた Android Studio のバージョンとコマンドライン ツールを使用している場合に発生する可能性があります

    最初の 2 つのエラーは相互に関連しており、両方とも同じ根本原因から生じています。これは、プロジェクトが古い Gradle バージョンでセットアップされており、それをアップグレードする必要があるためです。

    これを行うには、次の手順に従います。

    <オル>
  • Flutter アプリケーションの Android フォルダーをスタンドアロン プロジェクトとして開きます
  • 「ファイル」→「プロジェクト構造」をクリックします。
  • Flutter チュートリアル:アプリを最新の V2 Android 埋め込みに移行する プロジェクト構造を選択するためのドロップダウン メニュー

    <オル>
  • Gradle のバージョンを、現在使用している Android Studio のバージョンと一致する新しいものに変更します
  • Flutter チュートリアル:アプリを最新の V2 Android 埋め込みに移行する AGP および Gradle 設定画面

    [ツール] → [AGP アップグレード アシスタント] に移動して、AGP アップグレード アシスタントを使用してこれを行うこともできます。

    Flutter チュートリアル:アプリを最新の V2 Android 埋め込みに移行する AGP アップグレード アシスタントを使用して AGP をアップグレードするためのドロップダウン メニュー

    3 番目の問題は警告であり、古いバージョンの Android SDK ツールが原因で発生する可能性があります。その方法については、ここにアクセスしてください。

    これでプロジェクトが完全に移行され、コンパイルと実行がスムーズに行われるはずです。

    私が書いた他の記事を読みたい場合は、ここでチェックしてください:

    無料でコーディングを学びましょう。 freeCodeCamp のオープンソース カリキュラムは、40,000 人以上の人々が開発者としての職に就くのに役立ちました。始めましょう


    1. どのAndroidランチャーを使用する必要がありますか?最高のものを比較します!

      Androidでは、携帯電話に付属しているデフォルトの外観に固執する必要はありません。あなたがしなければならないのはあなたのホームスクリーンがどのように見えるかを制御する新しい「ランチャー」をインストールすることです。しかし、Playストアにはそのようなアプリがたくさんあるので、どのランチャーを使用する必要がありますか? いくつかのランチャーは物事を成し遂げることに焦点を合わせています、他のものはあなたがそれらを最高の程度にカスタマイズすることを可能にします、そしていくつかは軽量であることについてです。ちなみに、Googleでもデフォルトのランチャーをダウンロードできます。 いつものように

    2. Android Bluetooth の信頼性を高める:一貫した接続のための実証済みのヒント

      ワイヤレスイヤホンがある日は完璧に接続したのに、次の日にはスマートフォンに一度も触れなかったかのように動作するというようなことを以前に経験したことがあるかもしれません。あるいは、スマートウォッチがランニングの途中で落ちてしまいます。 Bluetooth は機能するときは素晴らしいですが、機能しないときはイライラします。 私はスマートグラスなどのウェアラブル デバイスの Bluetooth ソフトウェア エンジニアとして働いており、これらのデバイスが壊れる原因を追求するのに、認めたくないほど多くの時間を費やしてきました。 この記事では、Android の Bluetooth スタックが実際に