プラットフォームチャネル を使用すると、Flutterはネイティブプラットフォームと相互運用できます(つまり、バッテリーレベルを読み取ります)。 Androidでは、これにはJavaメソッドを呼び出す必要があります。
サードパーティのJava SDK(AWS Cognito用)を使用したいのですが、このライブラリを/Android
、それと対話しますか?もしそうなら、どうすればそれを行うことができますか?
プラグインプロジェクトをまだ開始していない場合は、作成します。
サードパーティのjarファイルをどこかに収集します。それらをpluginproject/Android/...フォルダーに配置しないでください。
IDE-私の場合IDEA-でプラグインプロジェクトを開き、サードパーティのjarをJavaクラスパスに追加します。(IDEAで、プロジェクト構造/モジュールをクリックしますpluginName _ Android /依存関係タブ/緑のPlusSign/jarまたはディレクトリ-を選択し、個々のjarまたはフォルダー全体を選択します。スコープはコンパイルのままにしておきます。 tエクスポートを確認してください。)
pluginproject/Android/src/main/Java/com/yourcompanyのJava(またはKotlin))にAndroid固有のコードを実装します。 ../.../PluginnamePlugin.Java。サードパーティのjarによって宣言されたクラスを使用できるようになります。
依存関係をgradleに追加して、コンパイルできるようにします。 pluginproject/Android/build.gradle(注-build.gradlesがいくつかあります)の最後に、Android {}セクションの後に追加します
dependencies {
implementation files('../../../Java/someapi/somejar.jar')
}
パスはpluginproject/Androidフォルダーからの相対パスである必要があります。代わりに、この構文でフォルダ全体を指定できます
implementation fileTree(dir: '../../../somewhere/somefolder', include: ['*.jar'])
プラグインプロジェクトで提供されているサンプルアプリケーションを実行します。
サードパーティのjarをpluginproject/Android/libなどに入れることができない理由はわかりませんが、それによってdexエラーが発生します。 pluginproject /フォルダーが機能します。
私はこれまで、適切に動作するサードパーティのjarのみを使用しました(JNIなし、独自のスレッドを作成しないなど)。
はい、できます。
その上で documentation を確認できます。または、必要に応じて tutorial を確認できます。 AndroidとiOSの両方にネイティブコードを提供するSDKを使用している場合は役に立ちますが、そうでない場合は難しいでしょう。頑張ってください。
Android flutterのサイドはGradleを使用します(他のAndroidプロジェクトと同じ)。既存のAndroidアプリでは、gradleファイルから同じ設定のほとんどを移植できます。
あなたがすでにそれをしていて、jarを管理するためのシステムを持っているのでなければ、jarファイルをプロジェクトに直接コピーすることをお勧めしません、したがってソース管理。
代わりに、gradleの組み込みの依存関係解決を使用してください。あなたは従うことができるはずです AmazonのAndroid sdkセットアップ手順 。違いは、メソッドチャネルを通じてSDKへの呼び出しをフックする必要があることです。独自の相互運用コードを記述します。