Flutter 上的 open_file_plus 插件出错 - 编译失败(找不到符号 PluginRegistry.Registrar)

问题描述 投票:0回答:1

我正在开发一个 Flutter 移动应用程序,我需要在应用程序中创建 PDF 文件后打开它。我使用的是 open_file_plus: ^3.4.1+1,这是最新版本,但我在编译过程中始终遇到与 PluginRegistry.Registrar 相关的构建错误。

这是我用来保存和打开 PDF 文件的代码:

openFile() async {
    String storeNameForInvoice = '${storeName.value} - $date';
    final invoicesPath = await getTargetDirectoryPath();
    final file = File("$invoicesPath/$storeNameForInvoice.pdf");
    await file.writeAsBytes(await pdf.save());
    await saveInvoiceToFirestore();
    loadInvoicesToCurrentInvoice(storeName.value);

    await OpenFile.open(file.path);
}

1-配置详细信息

Gradle 版本 在

gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip

2- 编译和目标 SDK 版本:

build.gradle (app-level)

compileSdk = 34
targetSdk = 34

3-Settings.gradle配置 这是我的

settings.gradle
设置:

pluginManagement {
    def flutterSdkPath = {
        def properties = new Properties()
        file("local.properties").withInputStream { properties.load(it) }
        def flutterSdkPath = properties.getProperty("flutter.sdk")
        assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
        return flutterSdkPath
    }()

    includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")

    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}

plugins {
    id "dev.flutter.flutter-plugin-loader" version "1.0.0"
    id "com.android.application" version "7.3.0" apply false
    id "com.google.gms.google-services" version "4.3.15" apply false
    id "org.jetbrains.kotlin.android" version "1.9.0" apply false
}

include ":app"

错误信息:

控制台出现的错误如下:

C:\Users\MQ\AppData\Local\Pub\Cache\hosted\pub.dev\open_file_plus-3.4.1+1\android\src\main\java\com\joutvhu\openfile\OpenFilePlusPlugin.java:66: error: cannot find symbol
    public static void registerWith(PluginRegistry.Registrar registrar) {
                                                  ^
  symbol:   class Registrar
  location: interface PluginRegistry
1 error

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':open_file_plus:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* Try:
> Run with --info option to get more log output.
> Run with --scan to get full insights.

BUILD FAILED in 1m 20s
Error: Gradle task assembleDebug failed with exit code 1

附加信息:

我尝试了几个步骤来解决此问题,包括:

跑步

flutter upgrade

跑步

flutter clean

执行中

flutter pub upgrade

使用

flutter pub outdated

检查过时的软件包

尽管进行了这些尝试,问题仍然存在。此外,我还测试了其他库,例如

open_file
url_launcher
open_filex
better_open_file
open_app_file
,但我仍然遇到类似的错误。

问题:

可能导致 PluginRegistry.Registrar 错误的原因是什么?如何解决此问题以在 Flutter 应用程序中成功打开 PDF 文件?

android flutter gradle
1个回答
0
投票

我找到了一个解决方案,虽然有点不寻常。

尝试了各种修复(例如更新和降级库,甚至删除一些软件包)后,没有任何效果。

最后,我决定:

1- 彻底卸载Android Studio和Flutter。

2- 单击“使缓存无效”。

3- 使用相同的项目和库重新安装 Android Studio 和 Flutter。

令我惊讶的是,这完全解决了问题。

我仍然不确定根本原因,但很高兴问题得到解决。希望这可以帮助任何面临类似挑战的人!

© www.soinside.com 2019 - 2024. All rights reserved.