uni-app 原生插件SDK中debug新插件 提示基座不包含原生插件

uni-app 原生插件SDK中debug新插件 提示基座不包含原生插件

信息类别 详细信息
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 Windows 10 21H1
HBuilderX类型 正式
HBuilderX版本号 3.4.7
手机系统 Android
手机系统版本号 Android 11
手机厂商 华为
手机机型 P40
页面类型 vue
vue版本 vue2
打包方式 离线
项目创建方式 HBuilderX

操作步骤:

在Android Studio中打开原生插件SDK,然后添加新模块,在build.gradle中添加依赖,在dcloud_uniplugins.json中注册插件

预期结果:

正常载入模块

实际结果:

报错

bug描述:

我将原来在2.8.8SDK中创建的原生插件移植到3.3.13SDK中,按照文档配置了dcloud_uniplugins.json,但是一直提示“[WARN][JS Framework] 当前运行的基座不包含原生插件[AppManage],请在manifest中配置该插件,重新制作包括该原生插件的自定义运行基座”。

dcloud_uniplugins.json

{
  "nativePlugins": [
    {
      "plugins": [
        {
          "type": "module",
          "name": "AppManage",
          "class": "guolian.uni.app_manage.AppManageModule"
        }
      ]
    },
    {
      "plugins": [
        {
          "type": "module",
          "name": "TestModule",
          "class": "io.dcloud.uniplugin.TestModule"
        }
      ]
    },
    {
      "plugins": [
        {
          "type": "component",
          "name": "myText",
          "class": "io.dcloud.uniplugin.TestText"
        }
      ]
    },
    {
      "hooksClass": "",
      "plugins": [
        {
          "type": "module",
          "name": "DCloud-RichAlert",
          "class": "uni.dcloud.io.uniplugin_richalert.RichAlertModule"
        }
      ]
    }
  ]
}

build.gradle:app

apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    defaultConfig {
        applicationId "com.android.UniPlugin"
        minSdkVersion 21
        targetSdkVersion 26

        versionCode 1
        versionName "1.0"
        multiDexEnabled true
        ndk {
            abiFilters 'x86','armeabi-v7a'
        }
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    }

    signingConfigs {
        config {
            keyAlias 'key0'
            keyPassword '123456'
            storeFile file('D:\\Workspace\\HBuilder\\Android-SDK@3.3.13.81245_20220315\\test.jks')
            storePassword '123456'
            v1SigningEnabled true
            v2SigningEnabled true
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.config
            zipAlignEnabled true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            signingConfig signingConfigs.config
            zipAlignEnabled true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    androidResources {
        ignoreAssetsPattern '!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~'
        additionalParameters '--auto-add-overlay'
    }
    //使用uniapp时,需复制下面代码
    /*代码开始*/
    /*代码结束*/
}
repositories {
    flatDir {
        dirs 'libs'
    }
}
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation fileTree(dir: 'libs', include: ['*.aar'])

    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.appcompat:appcompat:1.0.0'

    /*uniapp所需库-----------------------开始*/
    implementation 'androidx.recyclerview:recyclerview:1.0.0'
    implementation 'com.facebook.fresco:fresco:1.13.0'
    implementation "com.facebook.fresco:animated-gif:1.13.0"
    /*uniapp所需库-----------------------结束*/
    // 基座需要,必须添加
    implementation 'com.github.bumptech.glide:glide:4.9.0'
    implementation 'com.alibaba:fastjson:1.1.46.android'

    // 添加uni-app插件
    implementation project(':uniplugin_component')
    implementation project(':uniplugin_module')
    implementation project(':uniplugin_richalert')
    implementation project(':app_manage')
}

AppManageMoudle

package guolian.uni.app_manage;

import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.view.Window;
import android.view.WindowManager;

import com.alibaba.fastjson.JSONObject;

import org.xbill.DNS.DClass;
import org.xbill.DNS.Lookup;
import org.xbill.DNS.Resolver;
import org.xbill.DNS.SimpleResolver;
import org.xbill.DNS.Type;

import io.dcloud.feature.uniapp.annotation.UniJSMethod;
import io.dcloud.feature.uniapp.bridge.UniJSCallback;
import io.dcloud.feature.uniapp.common.UniModule;

/**
 * Created by Hox_online on 2020/8/26.
 */

public class AppManageModule extends UniModule {
// ···
}

更多关于uni-app 原生插件SDK中debug新插件 提示基座不包含原生插件的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

应该代码报错了

更多关于uni-app 原生插件SDK中debug新插件 提示基座不包含原生插件的实战教程也可以访问 https://www.itying.com/category-93-b0.html


能够正常编译通过,在2.8.8里使用weex api能够正常运行,到3.3.13里用uni api就不能正常载入插件了,调试输出里没有报错

在使用 UniApp 开发原生插件时,如果你在调试新插件时遇到“基座不包含原生插件”的提示,通常是因为以下原因之一:

  1. 插件未正确打包到基座

    • 确保你已经在 nativeplugins 目录下正确配置了原生插件,并且在 manifest.json 文件中正确引用了插件。
    • 如果你使用的是自定义基座,确保在打包自定义基座时已经将插件包含进去。
  2. 未使用自定义基座

    • UniApp 默认的基座不包含任何原生插件,因此如果你在调试时使用的是默认基座,会提示“基座不包含原生插件”。
    • 你需要通过 HBuilderX 打包一个自定义基座,并确保在打包时勾选了你要调试的原生插件。
  3. 插件配置错误

    • 检查插件的 package.json 文件,确保插件的配置信息正确无误。
    • 确保插件的 moduleclass 名称与原生代码中的定义一致。
  4. 未重新打包自定义基座

    • 如果你在开发过程中修改了插件的代码或配置,需要重新打包自定义基座,以确保新的插件代码被包含进去。

解决步骤:

  1. 创建或更新自定义基座

    • 打开 HBuilderX,选择项目。
    • 点击菜单栏的“运行” -> “运行到手机或模拟器” -> “制作自定义调试基座”。
    • 在打包自定义基座时,确保勾选了你正在开发的原生插件。
  2. 使用自定义基座调试

    • 打包完成后,选择“运行” -> “运行到手机或模拟器” -> “使用自定义基座运行”。
    • 这样,你的应用就会使用包含原生插件的自定义基座进行调试。
  3. 检查插件配置

    • 确保 manifest.json 文件中的 nativePlugins 配置正确。
    • 例如:
      "nativePlugins": {
        "myPlugin": {
          "version": "1.0.0",
          "provider": "your-plugin-provider"
        }
      }
回到顶部