uni-app は Java コードを呼び出します (uniapp ハイブリッド開発はネイティブ プラグイン aar を統合します)

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#

  1. HBuilder を使用して、プラグインを統合するプロジェクトを開きます
  2. プロジェクトの下にディレクトリnativepluginsを作成します(名称不可改)
  3. 公式形式の要件に従って、nativeplugins ディレクトリを変更します。
  4. 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 つの異なるプラグインが呼び出されています。上で呼び出されたプラグインは記事のデモです。
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_43548590/article/details/132333148