android-linux-编译项目

https://download.visualstudio.microsoft.com/download/pr/8fdc33a5-2cf8-4e3a-82a8-abe718da0aea/3b5bfd6f361adec250a8f6693820736b/microsoft-jdk-17.0.19-windows-x64.exe

set HTTP_PROXY=socks5://127.0.0.1:2080
set HTTPS_PROXY=socks5://127.0.0.1:2080
Windows:
gradlew.bat assembleDebug
gradlew.bat assembleRelease

# Linux
#
wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O cmdline-tools.zip
mkdir -p ~/Android/Sdk/cmdline-tools
unzip cmdline-tools.zip -d ~/Android/Sdk/cmdline-tools
mv ~/Android/Sdk/cmdline-tools/cmdline-tools ~/Android/Sdk/cmdline-tools/latest
# nano ~/.bashrc
export ANDROID_HOME=~/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
# source ~/.bashrc
sdkmanager “platform-tools” “build-tools;34.0.0” “platforms;android-34”
sdkmanager –list
adb –version

# keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias
# app/build.gradle
#
# android {
# signingConfigs {
# create(“release”) {
# storeFile = file(“./my-release-key.jks”) // 确保文件路径正确
# storePassword = “your_store_password”
# keyPassword = “your_key_password”
# keyAlias = “my-key-alias”
# }
# }
# }

./gradlew assembleDebug
./gradlew assembleRelease

export ANDROID_KEY_ALIAS=my-key-alias
export ANDROID_KEY_PASSWORD=123456
export ANDROID_STORE_PASSWORD=123456
export ANDROID_KEYFILE=./my-key-alias.jks

~/Android/Sdk/build-tools/34.0.0/apksigner
apksigner sign \
–ks 你的密钥文件.jks \
–ks-key-alias 别名 \
–ks-pass pass:密钥库密码 \
–key-pass pass:密钥密码 \
–out 输出签名包.apk \
app-release-unsigned.apk

~/Android/Sdk/build-tools/34.0.0/apksigner sign –ks ./my-key-alias.jks –ks-key-alias my-key-alias –ks-pass pass:123456 –key-pass pass:123456 –out app-release-signed.apk app-release-unsigned.apk

erp-next


## 快速创建erp-next 服务
## quick-start-erp-next

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mariadb:11.8
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mariadb:11.8  docker.io/mariadb:11.8

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/redis:6.2-alpine
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/redis:6.2-alpine  docker.io/library/redis:6.2-alpine

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/frappe/erpnext:v16.25.0
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/frappe/erpnext:v16.25.0  docker.io/frappe/erpnext:v16.25.0

## git clone https://github.com/frappe/frappe_docker.git
git clone https://gitee.com/apnode/frappe_docker.git

cd frappe_docker

docker compose -f pwd.yml up -d

ip addr | grep 'inet '

# open 8080 , with user :  administrator  , admin  

# docker compose -f pwd.yml down
# docker volume ls
# docker volume ls -f dangling=true
# docker volume prune
# docker volume rm frappe_docker_sites
# docker volume rm   frappe_docker_db-data frappe_docker_logs   frappe_docker_redis-queue-data  frappe_docker_sites

docker  exec -it frappe_docker-backend-1 bash
bench get-app https://gitee.com/yuzelin/erpnext_chinese.git
bench install-app erpnext_chinese

拆分大日志文件

碰到日志文件太大,咋整


#!/bin/bash
#
# 按段拆分大文件,不暴增磁盘占用
#
set -e

src="file.log"
prefix="file"
ext=".log"
chunk=$((  1024 * 1024 * 1024 * 1))   # 1G

size=$(stat -c%s "$src")
if [ "$size" -le 0 ]; then
    echo "empty file"
    exit 1
fi

# 向上取整,算总片数
total=$(( (size + chunk - 1) / chunk ))

for ((idx=total; idx>=1; idx--)); do
    size=$(stat -c%s "$src")
    part=$(printf "%s-%03d%s" "$prefix" "$idx" "$ext")

    if [ "$size" -le "$chunk" ]; then
        mv "$src" "$part"
        echo "created $part (last part)"
        break
    fi

    tail -c "$chunk" "$src" > "$part"
    truncate -s $((size - chunk)) "$src"
    echo "created $part"
done

windows-sshd

步骤 1: 按 Windows + R,输入 powershell,再按 Ctrl + Shift + Enter 以管理员身份运行。
(按Win, 输入powershell, 右键以管理员身份登录)

步骤 2:

#检查安装状态:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
# 安装客户端
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# 安装服务器
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
# 设置开机自启并启动服务
Set-Service -Name sshd -StartupType Automatic
Start-Service sshd


配置 OpenSSH 服务器
# 检查22端口监听
netstat -an | findstr ":22"
# 开放防火墙端口
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' `
-Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
#如需修改访问权限,可编辑:
notepad C:\ProgramData\ssh\sshd_config
Restart-Service sshd

#连接远程主机
ssh 用户名@服务器IP
# 非22端口需指定:
ssh 用户名@服务器IP -p 自定义端口
# 在远程服务器上访问本地端口
# 效果:在192.168.10.1的服务器上访问localhost:8080 即本地的 localhost:80
# ssh -R 8080:127.0.0.1:80 root@192.168.10.1 -p 2222

2026-04-学习-推荐

https://tabby.sh/

如何在VSCode中配置Cline?完整步骤+国内中转推荐
https://zhuanlan.zhihu.com/p/1979176784533673899

https://openclaudia.com/

cargo install openclaude
#Compiling openclaude v0.1.0 (registry+https://github.com/rust-lang/crates.io-index)
#Finished release [optimized] target(s) in 42.3s

openclaude serve --model llama-3.3-70b
#Server running on http://localhost:3000
#Model loaded in 1.2s · VRAM: 38.4 GB · Ready

openclaude chat "Explain quantum computing simply"
#Quantum computing uses qubits that can be 0, 1, or both at once
#(superposition). This lets quantum computers explore many solutions
#simultaneously, making them powerful for specific problems...

https://github.com/Gitlawb/openclaude

npm install -g @aryanjsx/openclaude
added 70 packages in 4s
~ export CLAUDE_CODE_USE_OPENAI=1
~ export OPENAI_MODEL=gpt-4o

~ openclaude
OpenClaude v0.1.5 · model: gpt-4o · ready

ActiveReports JS Viewer

https://github.com/hanxi/cups-web
https://github.com/weixiaoyi/web-print-pdf
http://webprintpdf.com/
hiprint-对比
https://blog.csdn.net/weixiaoyiDM/article/details/150383829