uni-app は Java コードを呼び出します (uniapp ハイブリッド開発はネイティブ プラグイン aar を統合します)
記事ディレクトリ
序文
最近uniappについて調べていたのですが、リーダーから要望がありました。uniappでJavaメソッドを呼び出す。実際、Java メソッドは Android で記述され、最終的に aar ネイティブ プラグインにパッケージ化され、その後、aar プラグインが uniapp で呼び出されます。
1. 開発環境とドキュメント
1.Java環境のダウンロード
ここではJDK1.8を使用しているので、環境変数は自分で設定してください
公式ダウンロードアドレス:https ://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html
2.アプリのオフラインSDKダウンロード
公式ダウンロード アドレス: https://nativesupport.dcloud.net.cn/AppDocs/download/android.html#
3.AndroidStudioダウンロード
公式ダウンロードアドレス: https://developer.android.google.cn/studio/index.html
4.HBuilderXダウンロード
公式ダウンロードアドレス: https://www.dcloud.io/hbuilderx.html
5.uni-app はネイティブプラグインドキュメントを拡張します
公式アドレス: https://uniapp.dcloud.net.cn/plugin/native-plugin.html
6. プラグイン公式例
公式アドレス: https: //ext.dcloud.net.cn/plugin?id =36
2. Java コードを aar ファイルにパッケージ化する
1.解凍SDKをダウンロードする
アプリのオフライン SDK をダウンロードして解凍します。
2. UniPlugin-Hello-AS プロジェクトを開きます
3. 新しいモジュール(Android ライブラリ)を作成します
プロジェクト名を右クリックし、[新規] > [モジュール] > [Android ライブラリ] を選択します。モジュール名、パッケージ名、Android SDKのバージョンなどを設定します。
4. build.gradleを変更する
uniplugin_module 内のすべての build.gradle コンテンツをコピーし、mylibrary の build.gradle コンテンツを上書きします。
5. AndroidManifest.xmlを変更する
androidTest を削除し、mylibrary パス src の下でテストします。
6. Javaコードを書く
コードのメモ:
1. クラスは UniModule を継承する必要があります。
2. アノテーション @UniJSMethod(uiThread = false) をメソッドに追加します。
3. メソッドはパブリック メソッドである必要があります
。 4. メソッドの戻り値の型は JSONObject の形式で返される必要があります。
src パッケージの下に新しいクラス MyTest を作成します。
import com.alibaba.fastjson.JSONObject;
import io.dcloud.feature.uniapp.annotation.UniJSMethod;
import io.dcloud.feature.uniapp.common.UniModule;
public class MyTest extends UniModule {
@UniJSMethod(uiThread = false)
public JSONObject getTestData(){
JSONObject object = new JSONObject();
object.put("test_data","成功返回调用数据");
return object;
}
}
代码中涉及到com.sun.crypto.provider.SunJCE()报错问题,可在C:\Program Files\Java\jdk1.8.0_72\jre\lib\ext拷贝sunjce_provider.jar至libs中,并通过右键-add as library 引用即可
7. aar ファイルにパッケージ化する
mylibrary を選択し、build-makemodule "*.mylibrary" を通じてパッケージ化します。
パッケージ化後、「build」>「outputs」で aar ファイルを見つけることができます。
3. ユニアプリはネイティブプラグインを呼び出します
1. プロジェクト構造の変更
ネイティブ プラグインの開発形式要件に関する公式ドキュメント: https://nativesupport.dcloud.net.cn/NativePlugin/course/package.html#
- HBuilder を使用して、プラグインを統合するプロジェクトを開きます
- プロジェクトの下にディレクトリnativepluginsを作成します
(名称不可改)
- 公式形式の要件に従って、nativeplugins ディレクトリを変更します。
- package.jsonを書く
パッケージ.json
{
"name": "mylibrary-debug",
"id": "mylibrary-debug",
"version": "1.1.1",
"description": "测试使用",
"_dp_type": "nativeplugin",
"_dp_nativeplugin": {
"android": {
"plugins" :[
{
"type": "module",
"name": "mylibrary-debug",
"class": "uni.dcloud.io.mylibrary.MyTest"
}
],
"integrateType": "aar"
}
}
}
最終的な結果は次のとおりです。
2.manifest.jsonにローカルプラグイン設定を追加します。
3. カスタムベースを梱包する
メニューバーの「実行」→「携帯電話またはエミュレータへの実行」→「カスタムベースの作成」をクリックして、カスタムベースインストールパッケージを生成します。
4. 試運転
メニューバーの「実行」→「電話またはエミュレータで実行」→「Android アプリで実行」をクリックし、カスタムベースを選択します
5. フロントエンドコード呼び出し
uni.requireNativePlugin を使用してプラグインを参照します
const PluginName = uni.requireNativePlugin(PluginName); // PluginName 为原生插件名称
例:
ここでは 2 つの異なるプラグインが呼び出されています。上で呼び出されたプラグインは記事のデモです。