You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NativeScript中Native Modules异常,安卓Blurry模糊库调用问题排查

我来帮你搞定这个NativeScript里调用Blurry库的问题!

解决NativeScript中调用Blurry安卓库的问题

1. 先修正Gradle依赖配置

首先注意,最新版Gradle已经不再推荐使用compile指令,建议替换成implementation,你可以在/app/App_Resources/Android/app.gradle里修改依赖配置:

dependencies {
    implementation 'jp.wasabeef:blurry:4.0.0' // 可替换为你需要的最新版本号
}

修改后记得执行一次完整的项目重建,确保依赖包被正确引入。

2. 正确获取Blurry类的方式

你不能直接通过global['jp']来访问安卓的Java类——NativeScript有专门的类加载机制,需要用Java.type()方法来获取目标类,示例代码如下:

const application = require("@nativescript/core/application");
const isAndroid = application.android;

if (isAndroid) {
    try {
        const Blurry = Java.type('jp.wasabeef.blurry.Blurry');
        console.log("Blurry类已成功加载!");
        // 这里可以继续执行模糊操作
    } catch (error) {
        console.error("加载Blurry类失败:", error);
    }
}

3. 调用Blurry实现模糊效果的示例

假设你要模糊一个NativeScript视图(比如StackLayout),需要先获取它的安卓原生视图实例,再调用Blurry的API:

// 假设你已经通过页面获取到目标视图
const targetView = page.getViewById("myBlurryView");

if (isAndroid) {
    const nativeAndroidView = targetView.android;
    const Blurry = Java.type('jp.wasabeef.blurry.Blurry');
    
    // 执行模糊操作,这里设置模糊半径为25
    Blurry.with(application.android.context)
          .radius(25)
          .onto(nativeAndroidView);
}

4. 为什么global['jp']找不到类?

NativeScript并不会把所有Java类都挂载到global对象上,它是通过Java.type()按需加载类的,所以直接访问global['jp']自然找不到对应的类。使用Java.type()才是官方推荐的访问安卓原生类的标准方式。

如果还是遇到问题,可以排查这几点:

  • 确认你是在安卓模拟器/设备上运行项目(Blurry是安卓专属库,iOS无法使用)
  • 检查依赖的版本号是否拼写正确
  • 执行tns clean清理构建缓存后,再重新构建项目

内容的提问来源于stack exchange,提问作者ElGenius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:58:06