今天从 Github 下载 Flutter 项目,将项目导入到 Android studio,这期间碰到好几个问题。我觉得这类问题应该是导入开源工程共有的问题,将解决方案记录在这,希望帮到有需要的朋友。
1、the name myapp isn’t a class
这个问题很好解决,而且报错一半发生在 test.dart
类中,myapp
是 Flutter 默认启动类的名字。但我们也可以修改这个类的名字。
void main() {
runApp(const XXX());
}
如果你运行项目报如上错误,很有可能是默认启动类的名字变了,而 test 中没更新。修改成一样的名字就行。
await tester.pumpWidget(const XXX());
2、One or more plugins require a higher Android SDK version.
这个报错很简单,按照提醒,提高 Android SDK 的版本号,具体需要的版本号和修改位置看编辑器提醒。一般是在 android/app/build.gradle
文件,修改compileSdkVersion
和targetSdkVersion
为对应版本,比如我这边要求33。
接下来将 SDK Manager
打开,勾选使用的 SDK 版本,如果不存在,勾选后会自动下载。
安装完成后记得设置到工程,具体参考下图。如果刚新下载的版本索引不到,使用 New 选择到 SDK 路径,添加进去。
3、Your project requires a newer version of the Kotlin Gradle plugin.
还是按照如上提醒去解决。我们需要一个新版本的 Kotlin Gradle plugin
,找到项目根目录的build.gradle
文件。
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
再去修改$kotlin_version
的值。
ext.kotlin_version = '1.6.10'
4、build.gradle new Properties() cannot resolve 报红
这个问题我参考 First Flutter App error: cannot resolve symbol “Properties” 获得解决。文章的解决方案很详细,这里我就简单提一下,不懂的去看原文。设置整个工程的 SDK ,我这将电脑存在的最新版本设置上去,点击确定就行了。
5、gradleException cannot resolve 报错
和上面一样,在 android studio cannot resolve symbol ‘GradleException’ 找到解决方案,使用 FileNotFoundException
代替 GradleException
就行。
6、Flutter PackageManager has been Deprecated
permission_handler-8.3.0/android/src/main/java/com/baseflow/permissionhandler/PermissionUtils.java:317: 警告: [deprecation] PackageManager中的getPackageInfo(String,int)已过时
.getPackageInfo(context.getPackageName(), PackageManager.GET_PERMISSIONS);
这是权限申请框架permission_handler
依赖出问题了。参考 How to Solve the Flutter PackageManager has been Deprecated,在pubspec.yaml
中修改permission_handler
的版本。
但我根据上面步骤,并没解决这个问题,最后我是这样做的。
permission_handler: ^10.2.0
然后将整个工程 Android SDK 设置到 33。
本文由老郭种树原创,转载请注明:https://guozh.net/som-problems-with-importing-flutter-projects-into-android-studio/