uni-app llama al código java (el desarrollo híbrido de uniapp integra el complemento nativo aar)
Directorio de artículos
Prefacio
Estuve investigando uniapp recientemente y el líder tenía una solicitud. Para llamar al método java en uniapp. De hecho, el método Java está escrito en Android y finalmente empaquetado en un complemento nativo de aar, y luego se llama al complemento aar en uniapp.
1. Entorno de desarrollo y documentación.
1.Descarga del entorno Java
Estoy usando JDK1.8 aquí, configure las variables de entorno usted mismo
Dirección de descarga oficial: https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html
2.Descarga del SDK sin conexión de la aplicación
Dirección de descarga oficial: https://nativesupport.dcloud.net.cn/AppDocs/download/android.html#
3.Descarga de AndroidStudio
Dirección de descarga oficial: https://developer.android.google.cn/studio/index.html
4.Descarga HBuilderX
Dirección de descarga oficial: https://www.dcloud.io/hbuilderx.html
5.uni-app amplía la documentación del complemento nativo
Dirección oficial: https://uniapp.dcloud.net.cn/plugin/native-plugin.html
6. Ejemplo oficial de complemento
Dirección oficial: https://ext.dcloud.net.cn/plugin?id=36
2. Empaquetar código Java en un archivo aar
1. Descargue el SDK de descompresión
Descargue y descomprima el SDK de la aplicación sin conexión
2. Abra el proyecto UniPlugin-Hello-AS.
3. Cree un nuevo módulo (Biblioteca de Android)
Haga clic derecho en el nombre del proyecto>Nuevo>Módulo>Biblioteca de Android. Configure el nombre del módulo, el nombre del paquete, la versión del SDK de Android, etc.
4. Modificar build.gradle
Copie todo el contenido de build.gradle en uniplugin_module y sobrescriba el contenido de build.gradle de mylibrary
5. Modifique AndroidManifest.xml
Elimine androidTest y pruebe en la ruta de mylibrary src
6. Escribe código Java
Notas de código:
1. La clase debe heredar UniModule
2. Agregue la anotación @UniJSMethod(uiThread = false) al método
3. El método debe ser un método público
4. El tipo de retorno del método debe devolverse en forma de JSONObject
Cree una nueva clase MyTest en el paquete src
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. Empaquetar en un archivo aar
Seleccione mylibrary y empaquetelo a través de build-makemodule "*.mylibrary"
Después del empaquetado, puede encontrar el archivo aar en compilación>salidas
3. uni-app llama complementos nativos
1. Cambiar la estructura del proyecto
Documento oficial sobre los requisitos del formato de desarrollo de complementos nativos: https://nativesupport.dcloud.net.cn/NativePlugin/course/package.html#
- Utilice HBuilder para abrir el proyecto donde desea integrar el complemento
- Cree el directorio nativoplugins en el proyecto.
(名称不可改)
- Realice cambios en el directorio Nativeplugins de acuerdo con los requisitos de formato oficiales.
- Escribir paquete.json
paquete.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"
}
}
}
El resultado final es el siguiente:
2. Agregue la configuración del complemento local en manifest.json
3. Empaca una base personalizada
Haga clic en "Ejecutar" en la barra de menú -> "Ejecutar en teléfono móvil o emulador" -> "Crear base personalizada" para generar un paquete de instalación base personalizado.
4. Ejecución de prueba
Haga clic en "Ejecutar" en la barra de menú -> "Ejecutar en teléfono o emulador" -> "Ejecutar en aplicación de Android" y seleccione la base personalizada
5. Llamada de código frontal
Utilice uni.requireNativePlugin para hacer referencia al complemento
const PluginName = uni.requireNativePlugin(PluginName); // PluginName 为原生插件名称
Ejemplo:
aquí se llaman dos complementos diferentes, el llamado arriba es la demostración del artículo.