============================================================
1.Flutter SDK not found. Define location with flutter.sdk in the local.properties file.
Open File
解決:在.android下面增加local.properties,里面加入flutter.sdk=E:\flutter
============================================================
cannot resolve symbol binding 解決:
gradle-wrapper使用4.10.2 (5.1.1以下就可以)
============================================================
- C:\Project\teck_note\module_flutter.android\include_flutter.groovy (C:\Project\teck_note\module_flutter.android\include_flutter.groovy)
Open File
解決:把報(bào)錯的路徑復(fù)制到電腦文件管理器宙地,會報(bào)錯。
改到路徑對了為止。
============================================================
4.Configuration with name 'default' not found
解決:settings.gradle中的工程下面炸渡,沒有build.gradle
============================================================
5.重建.android文件夾
解決:刪除.android 沛硅,之后flutter packages get
============================================================
6.webView選擇
webview_flutter:官方巫糙,功能少
flutter_webview_plugin: 不在Flutter Widget Tree內(nèi)
flutter_inappwebview 最終選用這個,上面兩個要么加載復(fù)雜本地html不方便查坪,要么和js交互不方便
flutter_inappwebview加載本地html,需要把html用到的所有層級的js和資源宁炫,加到pubspec.yaml里面偿曙;和js的交互是異步的
============================================================
7.混合開發(fā)
原先的混合開發(fā)方式已不再適用,現(xiàn)在用
FlutterEngine flutterEngine = new FlutterEngine(this);
// Start executing Dart code in the FlutterEngine.
flutterEngine.getDartExecutor().executeDartEntrypoint(
DartExecutor.DartEntrypoint.createDefault()
);
// Cache the pre-warmed FlutterEngine to be used later by FlutterFragment.
FlutterEngineCache
.getInstance()
.put(MethodChannelPlugin.ENGINE_ID, flutterEngine);
GeneratedPluginRegistrant.registerWith(flutterEngine);
MethodChannelPlugin.registerWith(flutterEngine);
}
FlutterFragment flutterFragment = FlutterFragment.withCachedEngine(MethodChannelPlugin.ENGINE_ID).build();
============================================================
8.open for editing in android studio 不見了
復(fù)制別的項(xiàng)目的android/[project_name]_android.iml
============================================================
9.提示升級embedded v2
https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects
============================================================
10.無法運(yùn)行profile模式
-- 把build.gradle中羔巢,debug和release的自定義配置信息(如multiDexEnabled buildConfigField)望忆,放到defaultConfig中一份。
-- android/app/src/profile/AndroidManifest.xml 中修改包名等
============================================================
11.devTools跑不起來朵纷,一直build in progress
嘗試如下也不行
flutter pub global deactivate devtools
flutter pub cache repair
flutter pub global activate devtools
flutter pub global run devtools
進(jìn)入報(bào)錯目錄炭臭,用老版本覆蓋
============================================================
- as中dart analyze 失敗,但是命令行可以編譯過
解決:as中設(shè)置flutter sdk路徑
//flutter 2.0時(shí)代
============================================================
13.直接run的release包袍辞,沒有arm-v7的.so鞋仍。couldn't find "libflutter.so"啟動崩潰
常見的 無效的 解決辦法:
1:gradle中設(shè)置 abiFilters指定v7,這種只在用as打開app目錄build.gradle中有效
release {
ndk {
abiFilters 'armeabi-v7a'
}
}
2:local.properties中設(shè)置target-platform=android-arm
3: 其他命令行加參數(shù)等方法
解決:在sdk/flutter/packages/flutter_tools/gradle/flutter.gradle中
private List<String> getTargetPlatforms() {
if (!project.hasProperty('target-platform')) {
println("NO!!!!!!!!!!!!!!!!!target-platform")
return DEFAULT_PLATFORMS
}
return project.property('target-platform').split(',').collect {
println("split!!!!!!!!!!!!!!!!!target-platform $it\n")
if (!PLATFORM_ARCH_MAP[it]) {
throw new GradleException("Invalid platform: $it.")
}
return it
}
}
然后編譯看日志結(jié)果搅吁。
app模塊中apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
把project傳入給SDK的flutter.gradle
所以我們需要給app module中增加property
先在gradle.properties中設(shè)置target-platform=android-arm
然后在項(xiàng)目的根目錄的build.gradle
rootProject.setProperty('target-platform', 'android-arm')
subprojects {
project.setProperty('target-platform', 'android-arm')
}
============================================================
14.直接run的debug包威创,couldn't find "libflutter.so"啟動崩潰,即使apk中有對應(yīng).so
解決:檢查各個子module中不能有其他格式的abiFilters
============================================================
15.ScrollAppBar配合listView滾動異常
滾不到最底
解決:延時(shí)100ms執(zhí)行animateTo谎懦,動畫duration要根據(jù)list長度大于100ms到1500ms
ListView逐漸邊長肚豺,剛把SrollAppBar快頂出屏幕,ScrollAppBar異常跳動
解決:ListView高度不對界拦,沒有算進(jìn)去ScrollAppBar
ListKey.currentContext.size.height不對
============================================================
16.語法小坑:
坑1:
dart的對象是引用傳遞
但是有一種情況不能傳遞吸申。
class A{
Obj? obj;
classB.setValue(obj);//會給obj賦值
onDispose() {
obj?.dispose(); //obj一直是null
}
}
建議在A中初始化好obj
坑2:
static void send(String name, {Map<String, dynamic>? map}) {
if (map == null) map = {};
map.addAll({
"info": 'aaa',
});
send(name, map);
}
會報(bào)錯type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'Map<String, Object>' in type cast
建議指明類型
Map<String, String> infoMap = {
"info": 'aaa',
};
map.addAll(infoMap);
============================================================
17.flutter compileDebugJavaWithJavac
cd /Applications/Android\ Studio.app/Contents/jre
ln -s ../jre jdk
ln -s "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin" jdk
flutter doctor -v