当我运行时,flutter build apk --split-per-abi我两次获得三个 apk:一次在目录 build/app/outputs/ apk/release 下,一次在 build/app/outputs/ flutter-apk 下。这两个目录有什么区别?
我有一个简单的应用程序,它通过CustomPainter画布上的红色或绿色圆圈进行绘制,具体取决于按下的按钮AppBar:
该类ColorCircle扩展CustomPainter并负责绘制彩色圆圈:
class ColorCircle extends CustomPainter {
MaterialColor myColor;
ColorCircle({@required this.myColor});
@override
void paint(Canvas canvas, Size size) {
debugPrint('ColorCircle.paint, ${DateTime.now()}');
final paint = Paint()..color = myColor;
canvas.drawCircle(Offset(size.width / 2, size.height / 2), 100, paint);
}
@override
bool shouldRepaint(CustomPainter oldDelegate) => false;
}
Run Code Online (Sandbox Code Playgroud)
不同颜色的绘制效果很好,但是当我单击(仅一次!)或将鼠标悬停在其中一个按钮上时,该paint方法会被调用多次:
进一步的实现细节:我使用 aStatefulWidget来存储actualColor. 在 build 方法中actualColor传递给ColorCircle构造函数:
class _MyHomePageState extends State<MyHomePage> {
MaterialColor actualColor = Colors.red;
@override
Widget build(BuildContext context) { …Run Code Online (Sandbox Code Playgroud) 当我运行时,flutter build apk --split-per-abi我在目录中得到 4 个文件flutter-apk:
我已经知道前三个 apk 是由于不同的 cpu 架构/指令集。在我的安卓手机上,我可以安装 app-armeabi-v7a-release.apk和 app.apk。那么它们是一样的吗?区别在哪里?
在我的 Flutter 项目中,除了 main.dart 之外,我还有第二个 dart 文件 (helpers.dart),我在其中尝试使用该debugPrint()函数:
debugPrint(someString);
Run Code Online (Sandbox Code Playgroud)
我收到以下消息:
函数“debugPrint”未定义。尝试导入定义“debugPrint”的库,将名称更正为现有函数的名称,或定义名为“debugPrint”的函数。
Flutter 官方文档指出 debugPrint 函数是 Flutter 基础库的一部分。但并import 'package:flutter/foundation.dart'; 没有解决问题。那么我必须导入哪个库/包?
在调试控制台上有时会出现类似W/IInputConnectionWrapper ...,I/zygote ....或 的消息I/choreographer ....。字母“W”和“I”的含义是什么?