Flutter Log
Flutter Log
Flutter异常分为VM异常和Dart异常:
Dart异常: 出错不会导致崩溃, 一般会导致代码不继承执行(没有任何反应),如果是界面错误会导致跳转ErrorWidget
VM异常:会导致程序崩溃,跳出
Dart异常分为同步异常和异步异常:
同步异常:可以使用try-catch捕获
异步异常:使用try-catch捕获不到
Flutter日志输出,看print函数会发现,如果设置了Zone会调用printToZone, 如果没有会调用printToConsole().
Flutter中Zone, 是一个封闭区域,为了让异步
调用之间保持稳定,代码总在当前区域的上下文中执行。主要用来处理print, timers, micr...
Flutter IO编程
Flutter IO编程
Flutter File编程
使用path_previder库操作本地文件及目录
文件操作类有File、Directory、Link, 都继承至FileSystemEntity 每种操作函数都有两个版本
同步和异步(如, rename()和renameSync())
使用File.open(FileMode) 得到IOSink或者RandomAccessFile来对文件进行读写,读写对象需要close()
Flutter Socket编程
Tcp使用Socket、ServerSocket 及 RawSocket、RawServerSocket
ServerSocket.bind('127.0.0.1', 4041)
.then((serv...
Linux 源
Linux 源
linux
#deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib
#deb-src https://mirrors.aliyun.com/kali kali-rolling main non-free contrib
github
1. 修改Hosts 速度到100kb
2. 使用码云转一道, 麻烦 但是速度快
flutter
SDK下载地址: https://storage.flutter-io.cn/flutter_infra/releases/stable/windows/flutter_windows_v1.0.0-stable.zip
export PUB...
Linux C/C++跨平台编程
Linux C/C++跨平台编程
使用POSIX 函数
windows
需要使用Cygwin, Cygwin中脚本文件需要使用dos2unix程序 转换一下
1. 找不到ntohll和htonll函数
需要自己实现
u_int64_t my_htonll(u_int64_t val) {
return (((u_int64_t) htonl(val)) << 32) + htonl(val >> 32);
}
u_int64_t my_ntohll(u_int64_t val) {
return (((u_int64_t) ntohl(val)) << 32) + ntohl(val >> 32);
}
R...
Android Studio 下载jar包
Android Studio 下载jar包
Android Studio下载kotlin-compiler-embeddable 非常慢, 时间长了还会报read time out
所以需要自行下载后, 把jar放到正确的位置.
https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.2.31/kotlin-compiler-embeddable-1.2.31.jar
https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/kotlin-compiler/26.2.1/kotli...
Android 权限
Android 权限
系统6.0后需要动态获取权限
判断系统版本 Build.VERSION.SDK_INT >= 23
判断是否有对应的权限
int checkCallPhonePermission = ContextCompat.checkSelfPermission(WelcomeActivity.this, Manifest.permission.READ_PHONE_STATE);
if (checkCallPhonePermission != PackageManager.PERMISSION_GRANTED)
请求权限
requestPermissions(new String[]{Manifest...
Android 使用老库, 32位库支持64位
Android 使用老库, 32位库支持64位
如果第三方库蛮老(使用旧版本的NDK编译), 那么在新系统上会报错
java.lang.UnsatisfiedLinkError: dlopen failed:
"/data/app/com.teamsun.community.report-1/lib/arm64/libIDCardengine.so"
is 32-bit instead of 64-bit
目前常用的ABI平台有arm64-v8a,armeabi-v7a,armeabi, 前面两个较新
java.lang.UnsatisfiedLinkError: dlopen failed:
"/data/app/com.teamsun.community.report...
Compute Unicode
Compute Unicode
如果是UTF-8, UTF-16, UTF-32, 那么需要使用零宽度非换行空格(ZERO WIDTH NO-BREAK SPACE)
来表示字节顺序. FEFF表示大端, FFFE表示小端
UTF-8
可变长度的编译, 英文一个字节, 常用中文3字节, 不常用中文4字节.
UTF-16
分为大头端UTF-16BE, 小头端UTF-16LE
最少2个字节, 中字4字节
Reference
463 post articles, 58 pages.