Repository navigation
feat(android): 新增 Android/ 目录,为 TraeTools 增加 Android 端 - #52
Merged
Merged
Conversation
akexin
force-pushed
the
android-support
branch
from
October 14, 2026 15:26
e402440 to
0a2b7ed
Compare
Android/ 是独立工程(net10.0-android),Models/Services/ViewModels/Views/Styles/Assets 以 <Compile Include="..\..."> / <AvaloniaResource Include="..\..."> 链接复用, 单一真源仍在仓库根目录,不存在第二份拷贝。 同时给根工程 TraeTools.csproj 增补 3 行 Remove: SDK 的 Compile(**/*.cs)、None(**/*)与 Avalonia 的 AvaloniaXaml(**/*.axaml) 默认通配符都会向下递归,若不排除 Android/,主程序会把 Android 源码一并编译, 实测报 AVLN2002(x:Class "TraeTools.App" 重复)并因 Android 命名空间无法解析而失败。 写法与既有的 <Compile Remove="TraeTools.LoginHost\**" /> 保持一致。 新增 .github/workflows/android.yml,在 CI 中编译 Android 工程并产出 APK。 Windows 版的构建与发布流程不受影响:dotnet build TraeTools.csproj -c Release 仍通过, 产物 trae-tools-build 正常上传。
akexin
force-pushed
the
android-support
branch
from
October 14, 2026 15:35
0a2b7ed to
503a4d2
Compare
Owner
|
感谢喵 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
给 TraeTools 加上 Android 端:新增
Android/独立工程。Windows 版的构建与发布流程不受影响(文末有 CI 实测记录)。35 files changed, +2290—— 34 个新增文件,外加TraeTools.csproj增加 3 行。更新内容
Android/TraeTools.Android.csprojnet10.0-android独立工程。Models/Services/ViewModels/Views/(六个页面)Styles/Assets/ViewLocator以<Compile Include="..\...">/<AvaloniaResource Include="..\...">链接复用,单一真源仍在仓库根目录,不存在第二份拷贝Android/Platform/AndroidVault(Keystore RSA-2048 包裹 AES-256-GCM 数据密钥)、DpapiCompat(DPAPI 兼容层)、BrowserLauncher、CrashLog+CrashReportActivity、MainActivity、PlatformLogAndroid/Views/MainView(品牌顶栏 + 横向标签导航 + 覆盖层对话框宿主)、OverlayDialog、5 个对话框(PromptWindow/InputWindow/PatInputWindow/LoginWindow/EulaWindow)Android/Services/、Android/ViewModels/UiHost.csDataPaths/AutoStartManager/UiHost三个 Windows 实现的 Android 版Android/Properties/、Android/Resources/Android/README.md.github/workflows/android.yml对既有文件的唯一改动:
TraeTools.csproj增加 3 行SDK 的
Compile(**/*.cs)、None(**/*)与 Avalonia 的AvaloniaXaml(**/*.axaml)默认通配符都会向下递归,并不认「子目录里有自己的 csproj」。不排除的话主程序会把 Android 源码一并编译,实测报错:(即使绕过这一条,
Android/Platform/*.cs依赖的Android.App/Avalonia.Android也无法在主程序里解析。)补上这 3 行后 Windows 构建恢复正常。写法与仓库里既有的
<Compile Remove="TraeTools.LoginHost\**" />完全一致。为什么上游其余代码一行都不用改
new Window()会抛NotSupportedException,故所有对话框改写为UserControl,由OverlayDialog挂到主视图覆盖层并用TaskCompletionSource模拟模态。上游 VM 调用的是Window.ShowDialog<T>(owner)—— Android 的对话框类提供了同名、同参数形态、同返回类型的方法,调用点无需改动。UiHost.MainWindow的返回类型放宽为TopLevel?(Window只是它的子类)。上游 VM 一律用var接收,而它的四种用法(ShowDialog(owner)/owner != null守卫 /top?.Clipboard/win.StorageProvider)在TopLevel上全部成立。于是 Android 也能拿到非 null 宿主,那些owner != null ? await … : false的确认框照常弹出(若沿用Window?会恒为 null,确认框会被整体跳过)。Android.App/Android.Widget等 10 个全局 using,否则会与 Avalonia 类型在共享源码里制造CS0104(Button/Notification/Application二义性)——共享源码是不允许改的。AppConfig用的ProtectedData(DPAPI)是 Windows 专属包,Android 上没有该类型。新增同名同签名的DpapiCompat,把语义映射到 Keystore + AES-256-GCM,上游加密代码原样通过编译。versionName在求值期从根目录version.json读取,保证 APK 清单与 App 内「关于」显示一致。平台差异
Run验证
一次 CI 运行同时验证两端(
build为上游原作业未做修改,build-android与新增的android.yml步骤逐字一致):build(windows-latest):✅ 通过,产物trae-tools-build74.17 MBbuild-android(ubuntu-latest):✅ 通过,产物 APK 129.54 MBhttps://github.com/akexin/TraeTools-Android/actions/runs/38590116158
说明:该验证跑在我的临时分支上,仅比本 PR 多一行
workflow_dispatch(便于手动触发),本 PR 不含该行。本 PR 内的.github/workflows/android.yml会在维护者批准 Action 后随 PR 自动运行。已知限制
CloudViewModel/SettingsViewModel打开浏览器走Process.Start(...),该调用在 Android 上不可用(失败已被 try/catch 捕获并写日志)。设备码授权流程仍可用 —— 授权码会自动复制到剪贴板,按日志提示手动访问授权页即可。要彻底修好需要给上游 VM 加一个平台跳转抽象(约 7 处调用点),那会改到共享文件,故本次未做。ApplicationId暂定com.traetools.android、ApplicationVersion(versionCode)为 1,正式发布前请自行定夺;Release APK 目前用调试密钥签名。许可
与上游同为 GPL-3.0,改动基于上游
main(4da8bf7),可随时 rebase。