分类 随手记 下的文章

Flutter 安卓开发第一坑
作者: 未知狐
时间: 2025-7-28
分类: 随手记,Linux,折腾=-=
评论
官方文档不全
直接运行 flutter run

...
"Install NDK (Side by side) 26.3.11579264 v.26.3.11579264" failed.

FAILURE: Build failed with an exception.

  • Where:
    Build file '/home/xfox/Dev/WatchLauncher/android/build.gradle.kts' line: 16
  • What went wrong:
    A problem occurred configuring project ':app'.

    java.lang.RuntimeException: com.android.builder.sdk.InstallFailedException: Failed to install the following SDK components:
    ndk;26.3.11579264 NDK (Side by side) 26.3.11579264

    Install the missing components using the SDK manager in Android Studio.
    ...
    直接通过AS尝试构建apk则:

/home/xfox/Dev/flutter-sdk/flutter/bin/flutter --no-color build apk
[!] No Android SDK found. Try setting the ANDROID_HOME environment variable.
Process finished with exit code 1
显而易见是的,从Flutter doctor里我只能看到AS这项是打了对号的并且我确定已经安装了Flutter 文档写的相关工具链,但是就是报错编译不了。
也就是说我应该安装对应版本的NDK,也就是SDK Manager->SDK Tools ->NDK(Side by Side)
这个问题我曾经怀疑需要下载NDK,因为曾经尝试过使用AS当时开发流程就需要使用,现在显然仍然需要。
糟糕的是Configure the Android toolchain in Android Studio压根就没写这条。对于不了解的新人实在是坑爹至极。

  • 阅读剩余部分 -
    内容已丢失

作者: 未知狐
时间: 2025-7-27
分类: 随手记,Linux,折腾=-=
1 条评论
今天本来准备看点Dart和信创的信息,然后忽然发现这玩意不支持LoongArch (不过释然了,反正龙芯生态现在也是半死不活,本来也没报太大期望,RISC-V倒是有支持) 然后又看了眼橘子派画的Nova龙芯开发板大饼,仍然是只有宣发(疑似宣发也删了)不见实物,倒是官网榜上华为的产品页面挺醒目。
遂漫游到华为那边,本来打算看看华为的DevEco现在有没有Linux支持,然而一点下载,跳转到一个华为账户登录界面,直接失去探索兴趣沉默一秒关闭网页。
😅 华为你还是自己玩吧,老老实实当中央的谈判工具。真他妈搞笑,下载IDE也得登录。想学苹果玩封闭生态?还是早点回到被制裁的半死不活的状态对中外用户都好些。

顺便还看了PyQt的讯息,对支持的安卓版本限制范围刚好把我的CP303C手表卡没了,还是老老实实继续学Flutter吧。

作者: 未知狐
时间: 2025-7-22
分类: 随手记,Linux,阅读笔记,折腾=-=
评论
github仓库地址
Python软件包,在多个常见Linux发行版及OSX平台具有官方仓库打包。
今晚察觉自己看的书不方便复制,部分繁体字第一次见不太熟悉于是尝试查找解决方案。
虽然能不能复制不是很重要,但是我还是希望能有一个可复制的选择。

作者: 未知狐 时间: 2025-7-19 分类: 随手记,阅读笔记
也是我用过最垃圾的自由的邮件软件。
SMTP什么都对就是发不出去,Connect Closed,开什么玩笑?服务器断开连接? 同网络K9-Mail能发你不能是吧。
太垃圾了,我甚至能在Reddit上找到三年前同样的问题,哪怕过了三年也没人去修,逆天。
KMail 发不了邮件
老老实实用雷鸟,商店打三星都是给KDE脸了😅

标签: none

仅有一条评论
mxdyeahmxdyeah
2025年7月19日14:06
还是Thunderbird好用,一个邮件客户端竟然能够接入IRC或者Matrix,还有各种插件。
最开始是用的Foxmail,Thunderbird已经用了快5年,啥问题都没遇到过。

作者: 未知狐 时间: 2025-7-19 分类: 随手记,Linux,趣分享,时间轴,折腾=-=,硬核灌水
前清提要:
为了方便使用,我用podman-compose 文件部署了pmail,配置如下:

pmail-compose.yml

version: '3'
services:
pmail:

image: ghcr.io/jinnrry/pmail:latest
container_name: pmail
restart: always
ports:
  - "25:25"
  - "80:80"
  - "443:443"
  - "110:110"
  - "465:465"
  - "995:995"
  - "993:993"
volumes:
  - "/root/podman/pmail/config:/work/config"

这样,更新pmail版本只需要执行:

podman stop pmail
podman rm pmail
podman rmi pmail:latest
podman-compose -f pmail-compose.yml up -d

就能完成数据无损更新。

但是今天发现kmail无法正常连接邮件服务器,打开浏览器一检查后台,发现web后台也挂了,那肯定是后端服务出问题了。
遂SSH上线Debug。
podman logs -f pmail
发现日志疯狂刷新不带停的,Ctr+C 好几次后才停下来。报错和ssl.go等文件有关系,我不是开发者也看不明白,不过报错文件路径前有一句指向明确的英语意思是警告证书过期,这句倒是看懂了🤣。
那么接下来就是更新证书了,查看服务配置文件发现,我配置的是手动管理证书。
参见: 配置文件说明

{

"logLevel": "",
"domain": "linuxuser.site",
"domains": [
    "linuxuser.site"
],
"webDomain": "mail.linuxuser.site",
"dkimPrivateKeyPath": "/work/config/dkim/dkim.priv",
"sslType": "1",
"SSLPrivateKeyPath": "/work/./config/ssl/private.key",
"SSLPublicKeyPath": "/work/./config/ssl/public.crt",
"dbDSN": "/work/config/pmail.db",
"dbType": "sqlite",
"httpsEnabled": 0,
"spamFilterLevel": 1,
"httpPort": 0,
"httpsPort": 0,
"weChatPushAppId": "",
"weChatPushSecret": "",
"weChatPushTemplateId": "",
"weChatPushUserId": "",
"tgBotToken": "",
"tgChatId": "",
"isInit": true,
"webPushUrl": "",
"webPushToken": ""

}
显然是当初部署的时候因为已经有服务器部署了ACME.sh更新证书所以不能用项目推荐的证书更新管理方式;这等于是又挖了个更新的坑————配置A-B服务器证书文件同步。

编写证书同步脚本:
首先要厘清我的服务架构,我在ClawHK服务器(也就是本博客所在的服务器)部署了ACME.sh管理证书并对其他服务器线路不佳的Web服务(RackNerd-USA)进行反代,因此证书本身是处于ClawHK上的,现在我需要把它同步到Racknerd-USA的指定路径供PMail使用。
先自己简单写出来基本操作流程,再用DeepSeek和ChatGPT进行细节润色。

!/bin/bash

PmailSSLSync.sh

本脚本应该运行在Racknerd-USA

定义变量

local_private_key_path="/root/podman/pmail/config/ssl/private.key"
local_public_key_path="/root/podman/pmail/config/ssl/public.crt"
remote_private_key_path="/home/xfox/www/all_linuxuser.site/privkey.pem"
remote_public_key_path="/home/xfox/www/all_linuxuser.site/fullchain.pem"
temp_dir=$(mktemp -d /tmp/cert_sync_XXXXXX)

停止服务

sudo podman stop pmail

删除本地过期证书

sudo rm -f "$local_private_key_path" "$local_public_key_path"

从ClawHK同步证书文件到临时目录

sudo rsync -avz -e "ssh -i /root/.ssh/id_ed25519 -o StrictHostKeyChecking=no" \
[email protected]:"$remote_private_key_path" \
[email protected]:"$remote_public_key_path" \
"$temp_dir/"

检查文件是否存在

if [ ! -f "$temp_dir/privkey.pem" ] || [ ! -f "$temp_dir/fullchain.pem" ]; then
echo "证书同步失败!"
sudo podman start pmail
exit 1
fi

移动证书到最终位置

sudo mkdir -p "/root/podman/pmail/config/ssl"
sudo mv "$temp_dir/privkey.pem" "$local_private_key_path"
sudo mv "$temp_dir/fullchain.pem" "$local_public_key_path"
sudo chmod 600 "$local_private_key_path"
sudo chmod 644 "$local_public_key_path"

清理临时目录

rm -rf "$temp_dir"

重启服务

sudo podman start pmail

有脚本了,还得保证脚本及脚本所需命令能能按时跑。
在邮件服务器上安装好所需工具,并添加定时任务
apt install crontab rsync
crontab -e
添加如下条目

0 4 * /root/PmailSSLSync.sh

应该不会有人凌晨四点给我发邮件吧 ;)
添加完成后检查一下:
crontab -l
大功告成!

作者: 未知狐 时间: 2025-7-13 分类: 随手记 2 条评论
最近才发现这个问题,Youtube就没这个问题,通过统计信息可以发现AV1编码是不受影响的,并且默认AV1编码的这类视频通常是对象存储而不是带有mcdn的PCDN类型。
下面是一个可以正常播放的视频:
https://www.bilibili.com/video/BV1KHNizkEdD

Mime Type: video/mp4;codecs="av01.0.00M.10.0.110.01.01.01.0", audio/mp4;codecs="mp4a.40.2"
Player Type: DashPlayer
Resolution: 720 x [email protected]
Video DataRate: 526 Kbps
Audio DataRate: 93 Kbps
Segments: 5 / 17
Dropped Frames: 8 / 678
Video Host: upos-sz-mirror08c.bilivideo.com
Audio Host: xy183x93x100x12xy.mcdn.bilivideo.cn:8082
Video Speed: 9494 Kbps
Audio Speed: 2072 Kbps
Network Activity: 0 KB
Integrated Loudness: -28.67 LUFS
4.9.39-Log: [Copy] [Download]
下面是一个不能正常播放的视频(开头几秒可以播放但是闪屏卡顿)随后跳转B站视频播放错误的视频。
https://www.bilibili.com/video/BV1Cy7azWEG1/

Mime Type: video/mp4;codecs="avc1.640028", audio/mp4;codecs="mp4a.40.2"
Player Type: DashPlayer
Resolution: 720 x [email protected]
Video DataRate: 1785 Kbps
Audio DataRate: 92 Kbps
Segments: 1 / 18
Dropped Frames: 12 / 62
Video Host: xy221x130x104x24xy.mcdn.bilivideo.cn:4483
Audio Host: xy221x130x104x21xy.mcdn.bilivideo.cn:4483
Video Speed: 9900 Kbps
Audio Speed: 930 Kbps
Network Activity: 0 KB
Integrated Loudness: -27.15 LUFS
4.9.39-Log: [Copy] [Download]
PCDN确实给这些公司节约了不少成本(顺带还坑了一把普通宽带用户,运营商上行甚至下行限速的视频B站比比皆是),不过这种玩意在我看来降本增笑的成分更多点。

目前可以确定B站和Chromium的编译参数都有责任,在Google Chrome上AVC和AV1都是完全正常的,考虑到国内资本家无利不起早的一贯做风详细的日志不发了,我也没有时间提交这些日志,就算递交也多半石沉大海。至于Fedora 团队打包者对Chromium的默认编译参数,涉及到专利问题,本身也无解,只能等视频平台统一使用AV1
希望各大平台都加快推用AV1编码,尽早联合硬件厂商淘汰AVC和HEVC编码降低不必要的流量成本。

作者: 未知狐 时间: 2025-7-17 分类: Linux,折腾=-= 2 条评论
没错我是儿童(=-=)
摸鱼刷B站视频偶然看到的,当场下单两个。顺带花了14块买了充电器(经典上游渠道拆分货品配件各赚各的。)
配置:
2025-07-17T01:53:11.png
2025-08-01T00:29:51.png
性能自然是没有的,但是作为手表貌似也足够了。
后续开发内容会同步上去。
手表支持WIFI、蓝牙、GPS可谓要素齐全。
另外确定中国电信澳门的卡也能用,但是没有拨号程序测试电话是否正常。

作者: 未知狐 时间: 2025-6-30 分类: 随手记,Linux,折腾=-= 2 条评论
参考:
修正linux下wayland的chrome輸入與顯示錯誤
无法在Chrome(Wayland)中使用fcitx5
Wayland下使用UseOzonePlatform无法显示界面 #2300
support IME under native Wayland #33662
Vscode does not launch in wayland session #146349
Ozone-wayland: support text_input_v3 protocol

Chromium从98版本开始已经默认支持Wayland,用户可以通过--ozone-platform-hint=auto参数启用Wayland支持。问题根源在于 Chromium对Wayland的兼容措施还没有完全释出, text-input-v3 支持虽然已经合并但因为前者还存在一些问题。
2025-06-29T19:56:53.png
作为对wayland支持的努力,UseOzonePlatform现在是 chrome://flags/#ozon-platform-hint 中的一个实验性选项,默认没有启用。
启用后选择auto即可,但是理论上应该确保XDG_RUNTIME_DIR 和 WAYLAND_DISPLAY 等环境变量正常传递,这可能影响Chromium对当前运行环境的识别,
终端执行 echo $XDG_RUNTIME_DIR 和 echo $WAYLAND_DISPLAY,正常应返回类似 /run/user/1000 和 wayland-0 的路径。
查找资料过程中发现用户使用--ozone-platform-hint=wayland 后只有第一次重新启动是正常的,第二次就无法启动
我的终端里可以看到刷屏的报错:

[10091:10136:0630/034118.878942:ERROR:gpu/command_buffer/client/client_shared_image.cc:133] Failed to map the buffer.
[10091:10136:0630/034118.878946:ERROR:gpu/command_buffer/client/client_shared_image.cc:231] ScopedMapping init failed.
[10091:10136:0630/034118.878951:ERROR:gpu/command_buffer/client/client_shared_image.cc:431] Unable to create ScopedMapping
[10091:10136:0630/034118.878957:ERROR:cc/raster/one_copy_raster_buffer_provider.cc:303] MapSharedImage Failed.
[10091:10136:0630/034118.878964:ERROR:ui/gfx/linux/client_native_pixmap_dmabuf.cc:49] Failed to mmap dmabuf: 权限不够 (13)
丢给Deepseek分析:
根据您提供的错误日志,问题核心在于 Chromium 在 Wayland 环境下尝试使用 DMA-BUF 共享内存时出现权限问题,导致 GPU 进程初始化失败。以下是针对性的解决方案:
内容已丢失