plug-in de développement Android natif uniapp (module) et débogage local dans l'environnement Android
1. Perspectives de développement
En raison des limitations du framework uniapp, de nombreuses fonctions ne peuvent pas être utilisées aussi facilement que le développement Android natif.Par conséquent, il est nécessaire d'utiliser des plug-ins pour l'assistance, puis uniapp introduit des plug-ins pour rendre les fonctions parfaites. Sans plus tarder, passons directement au tutoriel ! N'hésitez pas à liker si vous le trouvez utile !
2. Préparation
- Le projet uniapp (alias votre propre projet)
- Téléchargez et installez JDK (java JDK) jdk1.8
- Téléchargez et installez android studio ( téléchargement csdn ), téléchargez android studio depuis le site officiel (le téléchargement du site officiel doit contourner le mur et l'installation doit également contourner le mur, le réseau de l'entreprise doit pouvoir accéder au réseau externe, sinon le sdk ne sera pas téléchargé (le blogueur l'a aussi depuis longtemps))
- Téléchargez et décompressez le SDK uniapp offline ( App offline SDK )
et les préparatifs sont terminés
3. Android importe le SDK hors ligne de l'application (package compressé téléchargé au point 4)
-
Décompressez le SDK hors ligne de l'application
-
Importer le projet UniPlugin-Hello-AS dans le studio Android
-
Attendez que l'importation et la compilation soient terminées et passez en mode projet. La structure du projet après compilation est la suivante
4. Créer un nouveau module (un module qui implémente nos fonctions)
-
nouveau module
-
Sélectionnez la bibliothèque Android, remplissez le nom de votre package (n'oubliez pas de ne pas être le même que le nom du package lorsque uniapp a été empaqueté (c'est un puits, uniapp n'est pas compatible)), cliquez sur Terminer
-
Importez et importez le plug-in uniapp-release.aar, qui est la principale bibliothèque de dépendances du module étendu
Dans le SDK App Offline -> dossier SDK ----> libs -----> recherchez uniapp-release.aar
et déplacez-le vers android Dans le projet importé, passez au répertoire du projet
- Ajouter des dépendances au module nouvellement créé (uniplugin_sunmi est mon propre nouveau module)
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compileOnly fileTree(dir: 'libs', include: ['*.jar'])
compileOnly fileTree(dir: '../app/libs', include: ['uniapp-v8-release.aar'])
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'com.alibaba:fastjson:1.1.46.android'
implementation 'com.facebook.fresco:fresco:1.13.0'
testImplementation 'junit:junit:4.12'
}
Si la synchronisation échoue, veuillez vérifier si l' erreur suivante s'affiche. Aucune signature ofm.android0 n'est applicable pour arg. Réessayez .
cliquez sur le fichier -> synchroniser le projet avec les fichiers Gradle à synchroniser
- Créez une nouvelle classe java (la classe utilisée pour implémenter nos fonctions)
et configurez-la dans le fichier AndroidManifest.xml (obligatoire)
<application>
<activity android:name="com.example.uniplugin_sunmi.ScanCode"
android:theme="@android:style/Theme.DeviceDefault.Light.NoActionBar"></activity>
</application>
Écrivez la classe du module (c'est-à-dire notre nouveau nom de classe), écrivez le code
de test
package com.example.uniplugin_sunmi;
import com.alibaba.fastjson.JSONObject;
import io.dcloud.feature.uniapp.annotation.UniJSMethod;
import io.dcloud.feature.uniapp.bridge.UniJSCallback;
import io.dcloud.feature.uniapp.common.UniModule;
// 一定要继承UniModule
public class ScanCode extends UniModule {
// 使用UniJSMethod注解,才能使用js调用
@UniJSMethod(uiThread = true)
public void add (JSONObject json, UniJSCallback callback) {
final int a = json.getInteger("a");
final int b = json.getInteger("b");
callback.invoke(new JSONObject() {
{
put("code", 0);
put("result", a + b);
}});
}
}
fin d'écriture
- Ajoutez le plug-in uniapp dans build.gradle (app), cliquez sur synchroniser maintenant
- Ajouter un nouveau plugin dans dcloud_uniplugin.json, note : le nom du plugin sera référencé dans uniapp
- Empaquetez le module dans un fichier aar de plug-in.
Si vous ne trouvez pas le bouton assmbleRelese, vous pouvez
le définir. Après l'empaquetage, vous pouvez afficher le fichier aar dans la construction
5. Utilisation dans uniapp
- Créez un répertoire de plugins et configurez la configuration plugin package.json que vous venez de créer
{
"name": "sunmi-scan",
"id": "sunmi-scan",
"version": "1.0.0",
"description": "订单的",
"_dp_type": "nativeplugin",
"_dp_nativeplugin": {
"android": {
"integrateType": "aar",
"plugins": [{
"type": "module",
"name": "sunmi-scan",
"class": "com.example.uniplugin_sunmi.ScanCode"
}],
"minSdkVersion": "19"
}
}
}
- utiliser le plugin
Ajouter un plugin local
- Utiliser des plugins
à inclure dans la page
<template>
<view class="content">
<image class="logo" src="/static/logo.png"></image>
<view class="text-area">
<button @click="test">测试</button>
</view>
</view>
</template>
<script setup lang="ts">
const test= ()=>{
// 引入自定义插件
const testModule = uni.requireNativePlugin('sunmi-scan')
// 使用module的add方法
testModule.add({
a:1,b:3
},e=>{
uni.showToast({
title:JSON.stringify(e),
icon:'none'
})
})
}
</script>
Enfin : l'emballage comme base de test (le plus important)