我正在开发一个 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 文件?
我找到了一个解决方案,虽然有点不寻常。
尝试了各种修复(例如更新和降级库,甚至删除一些软件包)后,没有任何效果。
最后,我决定:
1- 彻底卸载Android Studio和Flutter。
2- 单击“使缓存无效”。
3- 使用相同的项目和库重新安装 Android Studio 和 Flutter。
令我惊讶的是,这完全解决了问题。
我仍然不确定根本原因,但很高兴问题得到解决。希望这可以帮助任何面临类似挑战的人!