Flutter 打包的坑

打包运行白屏

问题:

  • 生产打包后启动白屏,日志报错 没有找到 libflutter.so

场景:

  • 执行命令

    1
    2
    flutter clean 
    flutter build apk --release --target-platform android-arm
  • 分析:

    发现一个问题,除了 v7a 其他的几个目录大小明显不对,这要是找不到 so 文件的根本原因

  • 解决方案

    build.gradle中指定abiFilters即可

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    android {
    // 前略

    defaultConfig {
    ndk {
    //选择要添加的对应 cpu 类型的 .so 库。
    abiFilters 'armeabi-v7a';
    }
    }

    // 余略
    }

阅读全文

MacOS 活动监视器表头丢失

原文:解决MACOS-活动监视器表头不见了 - 简书

最近遇到一个问题,macOS 的活动监视器表头丢失了,见图

  1. 解决思路
    一般这种情况是软件运行出现BUG了,重置一下软件设置就会恢复;

  2. 解决手段
    终端中输入一下代码:

    1
    rm -rf ~/Library/Preferences/com.apple.ActivityMonitor.plist

    重启即解决

阅读全文

Flutter StatefulWidget组件不刷新问题

问题

一个 Flutter 项目中,使用 provider 模式管理状态。我在在 PageView 里嵌套了 ListViewListViewItem 视图是继承自 StatefulWiget

我在 model 里删除 List 数据源中的某一个数据,ListView 渲染的长度变了,内容却没变。

方案

  1. Item 的视图改为继承自 StatelessWidget

  2. 使用 keyflutter的渲染机制会自动对比新老 key 值,从而刷新。(这一方案类似与 vue 中的 v-bind:key)

阅读全文

Flutter 屏幕适配

前言

任何一个前端平台开发无不可避免的都会遇到适配问题。

在 Flutter 中,默认是使用logical pixel逻辑像素的,系统拿到我们设的值,会自动判断在iOS或者Android上对应的尺寸,不用我们强制转换成某一个单位。

但是现在,我们希望可以与设计稿保持一致,所以需要一些解决方案。

阅读全文

curl 显示上传进度

最近在编写一个分发脚本时,遇到一个小问题,文件较大,上传速度略慢,curl 默认下不展示上传进度,特此记录一下解决方案。

1
2
3
4
5
6
7
curl "$api" \
--progress-bar \
--verbose \
-F "file=@$full" \
-F "uKey=$uKey" \
-F "_api_key=$apiKey" |
tee -a "${LOG_FILE}" ; test ${PIPESTATUS[0]} -eq 0

说明:

有用的部分是:curl "$api" --progress-bar,它告诉curl在上传期间显示进度条(而不是默认的“进度表”)。

并且:| tee -a "{LOG_FILE}" ; test {PIPESTATUS[0]} -eq 0 它将命令的输出附加到日志文件,并将其回显到stdout

test ${PIPESTATUS[0]} -eq 0部分使得该行(在bash脚本中)的退出状态与curl命令返回的退出代码相同,而不是tee命令的退出状态。

阅读全文

学习网站收集

语言学习

Java

Python

Kotlin

Go

阅读全文

macOS 崩溃定位处理

前言

macOS 系统升级 后,频繁出现温度过高、重启的问题,中间处理过程真的是一波三折,最终根据崩溃日志处理掉。

环境

macOS 10.15.4

阅读全文

MySQL正确清理 binlog

前言

MySQL中的binlog日志记录了数据库中数据的变动,便于对数据的基于时间点和基于位置的恢复,但是binlog也会日渐增大,占用很大的磁盘空间,因此,要对binlog使用正确安全的方法清理掉一部分没用的日志。

环境信息

MySQL 8.0.19

阅读全文

《On Java8》第四章

前记

最近重温 Java 的基础思想和设计,想看看《Java 编程思想》,后来得知第五版改名为《On Java 8》了,更新了一些东西。

海边拾贝,边读边写,温故知新。

对象创建

内存分配(4.2.1)

程序在运行时如何存储的呢?

  • 寄存器(Registers)

    位于 CPU 内部,速度最快,数量极少,无法在我们的程序中获取控制权,按需分配。

  • 栈内存(Stack)

    位于 RAM 中,通过栈指针获得处理器的支持,栈指针,下移分配内存,上移释放内存。创建程序是,Java 程序需要准确地知道栈内保存的所有对象的生命周期,由于该约束限制了程序的灵活性。

阅读全文

Flutter 学习笔记

一些学习网站

  1. 《Flutter实战》

  2. Flutter 社区中文资源

如何强制竖屏

1
2
3
4
5
6
void main() {
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp])
.then((_) {
runApp(new MyApp());
});
}

阅读全文

MySQL 5.7 索引

分类

  1. 普通索引/唯一索引UNIQUE

    • 普通索引:基本索引类型,允许列中出现空值和重复值

    • 唯一索引:

      • 值唯一,允许控制。

      • 组合索引的情况下,组合值需唯一

      • 主键索引是特殊的唯一索引,不许空值

  2. 单列索引/组合索引

    • 组合索引:只有查询条件中使用了组合字段的左边字段才会触发索引,遵循左前缀集合。
  3. 全文索引 FULLTEXT

    • 允许重复、空值

    • 在 char/varchar/text 类型上创建

    • MyISAM 支持

  4. 空间索引 SPATIAL

    • 针对空间数据类型:geometry、point、linestring、polygon

    • 非空索引

阅读全文

136.Single Number

题目

给定一个 非空 整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

输入: [2,2,1]
输出: 1

示例 2:

输入: [4,1,2,1,2]
输出: 4

解答

阅读全文

《Linux就该这么学》第六章

主要内容

  1. 一切从 “/” 开始
  2. 物理设备的明明规则
  3. 文件系统与数据资料
  4. 挂在硬件设备
  5. 添加交换分区
  6. 磁盘容量配合
  7. 软硬方式连接

一切从 “/” 开始

Linux 中的一切文件都是从根"/"目录开始,按照文件系统层次化标准(FHS)采用属性接口存放。

Linux 系统中,文件和目录名严格区分大小写。

FHS

关于文件系统层次化标准(FHS)是由 Linux 系统用户和开发者从经验中总结出来的,是用户在 Linux 系统中存储文件所需要遵守的规则。

但是 FHS 对用户而言,只算是一种道德上的约束。

阅读全文

PHP 学习笔记

  1. PHP 7.3 安装 xdebug.so

    1. mac 上 brew install php
    2. 执行php -i,复制打印内容
    3. 打开网址 https://xdebug.org/wizard.php,粘贴
    4. 跟着网址上的导引走
  2. PHPStrom debug 配置

阅读全文

《Linux就该这么学》第五章

主要内容

  1. 用户身份和能力
  2. 文件权限与归属
  3. 文件的特殊权限
  4. 文件的隐藏权限
  5. 文件的访问控制列表
  6. su 命令与sudo 服务

用户的身份和能力

  1. 用户
    Linux 中,每一个用户都有一个自己的 UID(User IDentification),该身份号码具有唯一性,因此可以通过 UID 值来判断用户身份。
    在 RHEL7 中,用户身份如下:

    • UID [0]:系统管理员
    • UID [1,999]:Linux 系统为了避免因为漏洞(系统或应用的)被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,继而有效控制被破坏范围。
    • UID [1000, +]:管理创建的用以日产工作的普通用户
  2. 特殊用户 root
    有种说法,Linux 中的管理员就是 root,这其实是错误的。
    Linux 的管理员是 root 并不是因为名字,而是因为 UID 的数值为 0。

阅读全文

《Linux就该这么学》第四章

主要内容

  1. Vim 文本编辑器
  2. 编写 Shell 脚本
  3. 流程控制语句
  4. 计划任务服务程序

Vim 文本编辑器

1
在 Linux 中,一切都是文件,而配置一个服务就是在修改器配置文件的参数。
  1. 三种模式
    • 命令模式:控制光标移动,对文本进行复制、粘贴、删除和查找等操作
    • 输入模式:正常的文本录入
    • 末行模式:保存或退出文档,以及设置编辑环境
  2. 流程
    • 每次运行 Vim,默认是命令模式
    • 先切换(aio)输入模式进行文本编写
    • 然后(esc)返回命令模式
    • 再进入(:)末行模式进行保存或退出
    • 无法从输入模式直接切换到末行模式
  3. Vim 常用命令

阅读全文

工具收集

写作
  1. markdown

阅读全文

Git 技巧集录

提取差异并打包

  1. 查看版本 id

    1
    2
    3
    4
    5
    6
    # 64b76ec0e81dc45b8d4dea418afe34e5c49e7c09 (HEAD -> master, origin/master) 变更说明
    # 9dd00bc6e704c8d4ddeb9001f3eeb3ff8ebfb744 变更说明
    # d4549e575d3114210dc22a903ff708768f81dddc 变更说明
    # eb11b702409f2170644a30ed749e1bea6eeade16 变更说明
    # ……
    git log --pretty=oneline
  2. 对比差异

    • 注意:commit hash 不用全部的,前 7 位就好

    • 如:64b76ec0e81dc45b8d4dea418afe34e5c49e7c09 -> 64b76ec

      1
      2
      3
      4
      5
      # 差异文件 1
      # 差异文件 2
      # 差异文件 3
      # ……
      git diff 64b76ec eb11b70 --name-only
  3. 打包

阅读全文

《Linux就该这么学》第三章

管道符、重定向与环境变量

输入、输出重定向

  1. 输入重定向是文件导入命令

  2. 输出重定向是原本输出到屏幕的命令结果写入到指定文件中

    • 种类
      1. 标准输出重定向
      2. 错误输出重定向
    • 行为
      1. 清空:清空原有内容
      2. 追加:在原有内容尾部追加
    • 具体
      1. 标准输入重定向(STDIN,文件描述符 0):默认从键盘输入,也可从其他文件或命令输入
      2. 标准输出重定向(STDOUT,文件描述符 1):默认输出到屏幕
      3. 错误输出重定向(STDERR,文件描述符 2):默认输出到屏幕

阅读全文

《Linux就该这么学》第二章

新手必须掌握的 Linux 命令

Shell

  1. 主流 Linux 默认终端是 Bash,优点如下:
    • 命令执行历史;
    • 命令或参数 Tab 补全;
    • 批处理脚本;
    • 环境变量功能。

帮助命令

  1. 标准格式:命令名称 [命令参数] [命令对象]

    • 长格式:man --help
    • 短格式:man -h
  2. 查看命令帮助 man 命令,如man pingman man

常用工作命令

阅读全文