mckero
86ab1b26b7
feat(cw): vendor DeepCW ONNX model with full AGPL-3.0 compliance
...
背景:
DeepCW (e04/deepcw-engine) 是基于 CTC 的神经网络 CW 解码模型。本地实测
弱信号解码率显著优于传统 DSP 方案: SNR<0dB 时 CER 16.0% vs ggmorse 52.6%;
SNR>=0dB 时两者均接近 0%。模型 400-1200Hz 固定频窗自带定频, 无需频谱峰值
跟踪与噪声门。
改动:
- assets/deepcw/model.onnx 15,139,839 字节, 原样收录未作修改
- assets/deepcw/model.onnx.json 模型元数据 (采样率 3200, FFT 256, hop 48,
65 个频段, log1p 归一化, 42 类含 CTC blank)
- licenses/DeepCW-AGPL-3.0.txt AGPL-3.0 许可证全文
- licenses/NOTICE.md 来源仓库/作者/取用 commit/SHA-256/
许可证兼容性说明/复现步骤
- app/build.gradle.kts: androidResources.noCompress += "onnx"
关于 noCompress:
ONNX Runtime 通过 mmap 直接读取 assets, 压缩后无法内存映射, createSession
会失败。该配置只在打包 APK 的 app 模块生效, 在 feature 库模块声明无效。
许可证:
Look4Sat 为 GPL-3.0-or-later, DeepCW 模型为 AGPL-3.0-only。GPL v3 第 13 条
明确允许两者合并分发。推理完全在本地设备进行, 不通过网络向远程用户提供
模型功能, 故 AGPL 第 13 条的网络源码提供义务不被触发。本仓库公开, 完整
对应源码提供义务已满足。
上游取用 commit: 8e264d243bbd4467bd19f3f28292219405b47e0e
模型 SHA-256: ef120799457bca042d4690944f0faf93268eb4654e7f50f28784ad63bdc1fe02
2026-08-12 11:47:02 +00:00
mckero
de6c964136
build!: drop armeabi-v7a abiFilters, restore 64-bit builds
...
背景:
abiFilters=armeabi-v7a 的唯一成因是 Morse Expert 的 32 位
libnativedecoderjni.so, 该 .so 已在上一提交删除。此前整个应用被迫以
32 位运行: 64 位设备走兼容层、寻址受限, 且不满足应用市场的 64 位要求。
原注释称"用户设备为 32 位软件"已与实际不符 (测试机为 64 位)。
改动:
- app/build.gradle.kts: 移除 defaultConfig.ndk.abiFilters 及相关注释
- feature/cw/build.gradle.kts: 移除 abiFilters; 移除 constraintlayout 依赖
(仅被已删除的 activity_main.xml 使用); 移除 UTF-8 JavaCompile 配置
(模块已无 Java 源码)
- feature/cw 改为依赖 core:domain + core:data (DeepCW 前后处理落在 core)
验证:
grep -rn 'abiFilters|jniLibs' --include=*.kts . (排除 build/) => 无匹配
APK ABI 覆盖将在 CI 产物中验证 (预期含 arm64-v8a)
2026-08-12 11:44:54 +00:00
mckero
f7a3dbaa2d
fix(i18n): use AGP9 localeFilters for language keep-list
...
resourceConfigurations is rejected by AGP 9.3 ("When localeFilters
are specified, resourceConfigurations cannot include locale
qualifiers"). Switch to androidResources.localeFilters.
Verified: :app:mergeReleaseResources + :app:processReleaseResources
BUILD SUCCESSFUL.
2026-08-04 16:34:39 +00:00
mckero
c525f3a11f
fix(i18n): force-keep in/id locale configs via resourceConfigurations
...
Root cause of Indonesian not matching: release build has
isShrinkResources=true and R8 was dropping the Indonesian resource
configs entirely - aapt dump badging showed locales only
'--_--' es ru si tr uk zh (no in, no id). values-in/values-id were
merged at merge time but stripped before packaging.
Fix: explicit resourceConfigurations in app/build.gradle.kts keeping
en zh tr in id es ru si uk. Verified: :app:mergeReleaseResources
BUILD SUCCESSFUL.
2026-08-04 16:28:39 +00:00
mckero
544515feba
fix(cw): restore app label, fix R8 code stripping, force 32-bit ABI
...
Three release-breaking issues found in the v4.5.0 APK (app crashed on
launch, label showed "Morse Expert", dex shrank to 282KB vs 3.5MB):
1. app_name: the ported app_values.xml shipped a "Morse Expert"
app_name string which overrode Look4Sat Pro's label during resource
merging - removed (no other string collisions).
2. R8 stripped nearly all code: the in-app sun.misc.Unsafe/Cleaner
stubs clashed with android.jar library classes. Moved stubs to
com.rtbishop.look4sat.feature.cw.suncompat and updated k3.d/s/r
imports (k3.r keeps the reflective Class.forName("sun.misc.Unsafe")
string, which returns null on Android hidden-API limits).
3. proguard-rules.pro added (AGP 9 variant-level
CanProduceConsumerProguardFiles): keep pas.** (JNI RegisterNatives
resolves by class name) plus all ported CW classes.
4. app-level ndk abiFilters forced to armeabi-v7a: the ported
libnativedecoderjni.so is v7a-only, so a multi-ABI APK would crash
with UnsatisfiedLinkError on arm64 devices.
Verified: :feature:cw:compileDebugKotlin BUILD SUCCESSFUL.
2026-08-04 04:56:41 +00:00
mckero
7bb0bbbb46
build: load release signing config from local keystore.properties
...
Conditionally applies the BG7NTA signingConfig when keystore.properties exists (gitignored). CI signs via apksigner with GitHub Secrets, so this only affects local builds.
2026-08-03 09:25:53 +00:00
Arty Bishop
8c1df334d8
Added even more tweaks to convention plugins setup
2026-03-28 20:03:11 +00:00
Arty Bishop
082b52c58b
Added more tweaks to convention plugins setup
2026-03-18 15:59:55 +00:00
Arty Bishop
4d88214c1d
Added basic convention plugins setup for modularization
2026-03-01 20:02:30 +00:00
Arty Bishop
de99e09f5e
v4.1.0 - Remote freq control for Hamlib/SDR++, by londre7
2026-02-22 13:51:58 +00:00
Arty Bishop
7adbf951bc
v4.0.4 - R4UAB source priority, Chinese translation fixes
2026-02-14 14:12:36 +00:00
Arty Bishop
64137473b3
v4.0.3 - KeepScreenOn for RadarScreen, translation fixes
2026-02-10 15:25:28 +00:00
Arty Bishop
ed71c8148b
v4.0.2 - Custom data import by londre7, minor UI tweaks
2026-02-07 17:22:42 +00:00
Arty Bishop
8e42f81ea3
Added tweaks to components, updated dependencies
2026-02-07 12:30:46 +00:00
Arty Bishop
a6a59877a8
v4.0.1 - Hotfix for RadarScreen track projection display
2026-01-31 13:55:44 +00:00
Arty Bishop
9e765a3575
Added various tweaks to dependencies and translations
2026-01-16 14:59:21 +00:00
Arty Bishop
65a0c33007
Migrated AGP to v9.0.0, tweaked gradle.properties
2026-01-16 13:54:13 +00:00
Arty Bishop
c370d9febd
Added more tweaks to components and dependencies
2025-12-27 15:02:15 +00:00
Arty Bishop
a68e466040
Restructured SettingsScreen layout, tweaked components
2025-12-27 15:02:15 +00:00
Arty Bishop
bfbe437ab1
Cleaned up classes and resources, updated dependencies
2025-12-27 15:02:15 +00:00
Arty Bishop
10fc88364f
Integrated fixes from release v3.2.1, updated dependencies
2025-12-27 15:01:47 +00:00
Arty Bishop
aa9365b2fd
Updated to API 36 (Android 16), bumped dependencies
2025-12-27 15:01:47 +00:00
Arty Bishop
fcec36ec68
Updated dependencies and gradle plugin, minor fixes
2025-12-27 15:01:47 +00:00
Rico Beier-Grunwald
483d846233
Improvised solution to transmit frequencies to IC705
2025-12-27 15:01:47 +00:00
Arty Bishop
fdbdc513f1
Implemented a basic map data card on MapScreen
2025-12-27 15:01:47 +00:00
Arty Bishop
86512a44d2
Updated dependencies and gradle plugin, minor fixes
2025-12-27 15:01:47 +00:00
Arty Bishop
2b6a892a50
Updated dependencies and gradle plugin, minor fixes
2025-12-27 15:01:46 +00:00
Arty Bishop
630fa2877f
Integrated fixes from release v3.1.4 (leap year bug)
2025-12-27 15:01:46 +00:00
Arty Bishop
ae53e5dc35
Added minor fixes to EntriesDialog and passes view
2025-12-27 15:01:45 +00:00
Arty Bishop
213ac7c278
Switched to gradle version catalog for dependencies
2025-12-27 15:01:45 +00:00
Arty Bishop
a1d5cda998
Updated dependencies, bumped the minSdk to 26
2025-12-27 15:01:45 +00:00
Arty Bishop
a6b5498f55
Added type reset for satellite selection screen
2025-12-27 15:01:45 +00:00
Arty Bishop
4b63882c70
Fixed display and font size scaling for MainActivity
2025-12-27 15:01:45 +00:00
Arty Bishop
19d0c1b108
Added more frequency data fields to Radio class
2025-12-27 15:01:45 +00:00
Arty Bishop
b9ade5f243
Cleaned up SharedPreferences keys and values
2025-12-27 15:01:45 +00:00
Arty Bishop
e100484810
Updated gradle plugin, removed BuildConfig usages
2025-12-27 15:01:45 +00:00
Arty Bishop
dca3f2c773
Updated compileSdk and targetSdk to Android 14
2025-12-27 15:01:45 +00:00
Arty Bishop
fc0b995bac
Added various minor fixes, cleaned up classes
2025-12-27 15:01:45 +00:00
Arty Bishop
5a8108384f
Added minor fixes to resources and build scripts
2025-12-27 15:01:45 +00:00
Arty Bishop
7191e02f99
Updated gradle plugin and dependencies versions
2025-12-27 15:01:45 +00:00
Arty Bishop
1719f8cc2e
Updated gradle wrapper and cleaned up files
2025-12-27 15:01:45 +00:00
Arty Bishop
3580854479
Migrated project build files to use kotlin script
2025-12-27 15:01:45 +00:00