feat(android): establish Roubao build baseline

This commit is contained in:
QiuSW
2026-07-25 18:20:37 +08:00
parent 285606639b
commit 04fa4a0994
96 changed files with 15249 additions and 125 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- App Name -->
<string name="app_name">Baozi</string>
<!-- Tab Titles -->
<string name="tab_home">Baozi</string>
<string name="tab_history">History</string>
<string name="tab_settings">Settings</string>
<!-- Home Screen -->
<string name="home_ready">Ready. Tell me what you want to do</string>
<string name="home_connect_shizuku">Please connect Shizuku first</string>
<string name="home_try_these">Try these commands</string>
<string name="home_input_placeholder">Tell Baozi what you want to do…</string>
<string name="home_executing">Executing Step %1$d</string>
<string name="home_send">Send</string>
<string name="home_stop">Stop</string>
<!-- Preset Commands -->
<string name="preset_burger">Order Burger</string>
<string name="preset_burger_cmd">Order a tasty burger nearby for me</string>
<string name="preset_weibo">Post to Weibo</string>
<string name="preset_weibo_cmd">Post my latest photo to Weibo</string>
<string name="preset_bilibili">Watch Bilibili</string>
<string name="preset_bilibili_cmd">I want to watch trending videos on Bilibili</string>
<string name="preset_takeout">Order Takeout</string>
<string name="preset_takeout_cmd">Order a pork trotter rice on Meituan</string>
<string name="preset_music">Listen to Music</string>
<string name="preset_music_cmd">Open NetEase Cloud Music and play daily recommendations</string>
<string name="preset_message">Send Message</string>
<string name="preset_message_cmd">Send a message to my recent contact saying I\'m busy</string>
<!-- History Screen -->
<string name="history_title">Execution History</string>
<string name="history_count">%1$d records</string>
<string name="history_empty">No execution records</string>
<string name="history_empty_hint">Records will appear here after executing tasks</string>
<string name="history_steps">%1$d steps</string>
<string name="history_delete">Delete</string>
<string name="history_delete_title">Delete Record</string>
<string name="history_delete_confirm">Are you sure you want to delete this record?</string>
<string name="history_timeline">Execution Timeline</string>
<string name="history_instruction">Task Instruction</string>
<!-- Status -->
<string name="status_completed">Completed</string>
<string name="status_failed">Failed</string>
<string name="status_stopped">Stopped</string>
<string name="status_running">Running</string>
<string name="status_label">Status</string>
<string name="steps_label">Steps</string>
<string name="duration_label">Duration</string>
<!-- Settings Screen -->
<string name="settings_title">Settings</string>
<string name="settings_subtitle">Configure API and app options</string>
<!-- Settings - Appearance -->
<string name="settings_appearance">Appearance</string>
<string name="settings_theme">Theme Mode</string>
<string name="theme_light">Light Mode</string>
<string name="theme_dark">Dark Mode</string>
<string name="theme_system">Follow System</string>
<string name="theme_select">Select Theme</string>
<!-- Settings - API -->
<string name="settings_api">API Configuration</string>
<string name="settings_provider">API Provider</string>
<string name="settings_provider_custom">Custom</string>
<string name="settings_model">Model</string>
<string name="settings_api_key">API Key</string>
<string name="settings_api_key_set">Set (%1$s)</string>
<string name="settings_api_key_unset">Not set</string>
<string name="settings_api_key_hint">Enter your API Key</string>
<string name="settings_show">Show</string>
<string name="settings_hide">Hide</string>
<!-- Settings - Custom Models -->
<string name="settings_custom_models">Custom Models</string>
<string name="settings_add_model">Add Custom Model</string>
<string name="settings_add_model_hint">Add other supported models</string>
<string name="settings_model_name_hint">Enter model name or ID</string>
<string name="settings_model_name_example">e.g. gpt-4-vision</string>
<string name="settings_select_model">Select Model</string>
<!-- Settings - Help -->
<string name="settings_help">Help</string>
<string name="settings_shizuku_guide">Shizuku Guide</string>
<string name="settings_shizuku_guide_desc">Learn how to install and configure Shizuku</string>
<string name="settings_overlay_help">Overlay Permission</string>
<string name="settings_overlay_help_desc">Learn why overlay permission is needed</string>
<!-- Settings - About -->
<string name="settings_about">About</string>
<string name="settings_version">Version</string>
<string name="settings_app_desc">VLM-based Android automation tool</string>
<!-- Shizuku Status -->
<string name="shizuku_connected">Shizuku Connected</string>
<string name="shizuku_not_connected">Shizuku Not Connected</string>
<string name="shizuku_available">Device control available</string>
<string name="shizuku_unavailable">Please start Shizuku and grant permission</string>
<!-- Shizuku Help -->
<string name="shizuku_help_step1_title">Download Shizuku</string>
<string name="shizuku_help_step1_desc">Download Shizuku from Google Play or GitHub\n\n• Google Play: Search \"Shizuku\"\n• GitHub: github.com/RikkaApps/Shizuku</string>
<string name="shizuku_help_step2_title">Start Shizuku</string>
<string name="shizuku_help_step2_desc">Open Shizuku and choose a startup method:\n\n• Wireless debugging (recommended): Requires Android 11+, enable wireless debugging in developer options\n• Connect to computer: Start via ADB command</string>
<string name="shizuku_help_step3_title">Authorize Baozi</string>
<string name="shizuku_help_step3_desc">Find Baozi Autopilot in Shizuku\'s \"App Management\" and click authorize</string>
<string name="shizuku_help_step4_title">Start Using</string>
<string name="shizuku_help_step4_desc">After authorization, return to Baozi. The status card will show \"Shizuku Connected\"</string>
<!-- Overlay Help -->
<string name="overlay_why">Why is overlay permission needed?</string>
<string name="overlay_reason">Baozi needs to display an overlay during task execution to:</string>
<string name="overlay_feature1">Show current execution progress</string>
<string name="overlay_feature2">Provide a stop button to interrupt tasks anytime</string>
<string name="overlay_feature3">Display status information above other apps</string>
<string name="overlay_how">How to enable?</string>
<string name="overlay_how_desc">1. You\'ll be prompted when executing a task\n2. Or go to: Settings > Apps > Baozi > Overlay permission\n3. Enable \"Allow display over other apps\"</string>
<string name="overlay_privacy">Privacy &amp; Security</string>
<string name="overlay_privacy_desc">The overlay is only shown during task execution and does not collect any personal information. It automatically disappears after the task is complete.</string>
<!-- Onboarding -->
<string name="onboarding_welcome">Welcome to Baozi</string>
<string name="onboarding_welcome_desc">Baozi is an intelligent automation assistant\nthat helps you operate your phone to complete various tasks</string>
<string name="onboarding_ai">AI Powered</string>
<string name="onboarding_ai_desc">Based on advanced vision-language models,\nBaozi can understand screen content and make intelligent decisions</string>
<string name="onboarding_easy">Easy to Use</string>
<string name="onboarding_easy_desc">Just describe what you want to do in natural language,\nand Baozi will automatically complete it for you</string>
<string name="onboarding_safe">Safe &amp; Secure</string>
<string name="onboarding_safe_desc">Automatically stops when encountering sensitive pages\n(like payments, passwords) to protect your account</string>
<string name="onboarding_skip">Skip</string>
<string name="onboarding_next">Next</string>
<string name="onboarding_start">Get Started</string>
<!-- Common -->
<string name="btn_confirm">Confirm</string>
<string name="btn_cancel">Cancel</string>
<string name="btn_close">Close</string>
<string name="btn_add">Add</string>
<string name="btn_delete">Delete</string>
<string name="btn_back">Back</string>
<string name="btn_got_it">Got it</string>
<!-- Toast Messages -->
<string name="toast_enter_instruction">Please enter an instruction</string>
<string name="toast_enter_api_key">Please enter API Key</string>
<string name="toast_grant_overlay">Please grant overlay permission</string>
<string name="toast_shizuku_granted">Shizuku permission granted</string>
<string name="toast_start_shizuku">Please start Shizuku App first</string>
<string name="toast_shizuku_old">Shizuku version too old</string>
<string name="toast_task_complete">Task complete</string>
<string name="toast_user_stopped">User stopped</string>
<string name="toast_sensitive_page">Detected sensitive page (payment/password), safely stopped</string>
<string name="toast_max_steps">Reached maximum steps limit</string>
<string name="toast_error">Error: %1$s</string>
</resources>
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 图标背景 -->
<color name="ic_launcher_background">#EFB471</color>
<color name="splash_background">#EFB471</color>
<!-- 主题色 -->
<color name="primary">#D67744</color>
<color name="primary_dark">#B85E2E</color>
<color name="primary_light">#E89060</color>
<color name="secondary">#EFB773</color>
<color name="secondary_dark">#D69B52</color>
<color name="secondary_light">#F5CB94</color>
<!-- 背景色 -->
<color name="background_dark">#1A1A1A</color>
<color name="background_card">#252525</color>
<color name="background_input">#2A2A2A</color>
<!-- 文字颜色 -->
<color name="text_primary">#FFFFFF</color>
<color name="text_secondary">#B0B0B0</color>
<color name="text_hint">#666666</color>
<!-- 状态颜色 -->
<color name="success">#4CAF50</color>
<color name="error">#F44336</color>
<color name="warning">#FF9800</color>
</resources>
@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- App Name -->
<string name="app_name">肉包</string>
<!-- Tab Titles -->
<string name="tab_home">肉包</string>
<string name="tab_history">记录</string>
<string name="tab_settings">设置</string>
<!-- Home Screen -->
<string name="home_ready">准备就绪,告诉我你想做什么</string>
<string name="home_connect_shizuku">请先连接 Shizuku</string>
<string name="home_try_these">试试这些指令</string>
<string name="home_input_placeholder">告诉肉包你想做什么…</string>
<string name="home_executing">正在执行 Step %1$d</string>
<string name="home_send">发送</string>
<string name="home_stop">停止</string>
<!-- Preset Commands -->
<string name="preset_burger">点汉堡</string>
<string name="preset_burger_cmd">帮我点个附近好吃的汉堡</string>
<string name="preset_weibo">发微博</string>
<string name="preset_weibo_cmd">帮我把最后一张照片发送到微博</string>
<string name="preset_bilibili">看B站</string>
<string name="preset_bilibili_cmd">我要看B站热门的视频</string>
<string name="preset_takeout">点外卖</string>
<string name="preset_takeout_cmd">帮我在美团点一份猪脚饭</string>
<string name="preset_music">听音乐</string>
<string name="preset_music_cmd">打开网易云音乐播放每日推荐</string>
<string name="preset_message">发消息</string>
<string name="preset_message_cmd">帮我给最近联系人发一条消息说在忙</string>
<!-- History Screen -->
<string name="history_title">执行记录</string>
<string name="history_count">共 %1$d 条记录</string>
<string name="history_empty">暂无执行记录</string>
<string name="history_empty_hint">执行任务后记录会显示在这里</string>
<string name="history_steps">%1$d 步</string>
<string name="history_delete">删除</string>
<string name="history_delete_title">删除记录</string>
<string name="history_delete_confirm">确定要删除这条执行记录吗?</string>
<string name="history_timeline">执行时间线</string>
<string name="history_instruction">任务指令</string>
<!-- Status -->
<string name="status_completed">已完成</string>
<string name="status_failed">失败</string>
<string name="status_stopped">已停止</string>
<string name="status_running">执行中</string>
<string name="status_label">状态</string>
<string name="steps_label">步骤数</string>
<string name="duration_label">耗时</string>
<!-- Settings Screen -->
<string name="settings_title">设置</string>
<string name="settings_subtitle">配置 API 和应用选项</string>
<!-- Settings - Appearance -->
<string name="settings_appearance">外观</string>
<string name="settings_theme">主题模式</string>
<string name="theme_light">浅色模式</string>
<string name="theme_dark">深色模式</string>
<string name="theme_system">跟随系统</string>
<string name="theme_select">选择主题</string>
<!-- Settings - API -->
<string name="settings_api">API 配置</string>
<string name="settings_provider">API 服务商</string>
<string name="settings_provider_custom">自定义</string>
<string name="settings_model">模型</string>
<string name="settings_api_key">API Key</string>
<string name="settings_api_key_set">已设置 (%1$s)</string>
<string name="settings_api_key_unset">未设置</string>
<string name="settings_api_key_hint">请输入您的 API Key</string>
<string name="settings_show">显示</string>
<string name="settings_hide">隐藏</string>
<!-- Settings - Custom Models -->
<string name="settings_custom_models">自定义模型</string>
<string name="settings_add_model">添加自定义模型</string>
<string name="settings_add_model_hint">添加其他支持的模型</string>
<string name="settings_model_name_hint">输入模型名称或 ID</string>
<string name="settings_model_name_example">例如: gpt-4-vision</string>
<string name="settings_select_model">选择模型</string>
<!-- Settings - Help -->
<string name="settings_help">帮助</string>
<string name="settings_shizuku_guide">Shizuku 使用指南</string>
<string name="settings_shizuku_guide_desc">了解如何安装和配置 Shizuku</string>
<string name="settings_overlay_help">悬浮窗权限说明</string>
<string name="settings_overlay_help_desc">了解为什么需要悬浮窗权限</string>
<!-- Settings - About -->
<string name="settings_about">关于</string>
<string name="settings_version">版本</string>
<string name="settings_app_desc">基于视觉语言模型的 Android 自动化工具</string>
<!-- Shizuku Status -->
<string name="shizuku_connected">Shizuku 已连接</string>
<string name="shizuku_not_connected">Shizuku 未连接</string>
<string name="shizuku_available">设备控制功能可用</string>
<string name="shizuku_unavailable">请启动 Shizuku 并授权</string>
<!-- Shizuku Help -->
<string name="shizuku_help_step1_title">下载 Shizuku</string>
<string name="shizuku_help_step1_desc">从 Google Play 或 GitHub 下载 Shizuku 应用\n\n• Google Play: 搜索 \"Shizuku\"\n• GitHub: github.com/RikkaApps/Shizuku</string>
<string name="shizuku_help_step2_title">启动 Shizuku</string>
<string name="shizuku_help_step2_desc">打开 Shizuku 应用,根据您的设备选择启动方式:\n\n• 无线调试(推荐):需要 Android 11+,在开发者选项中开启无线调试\n• 连接电脑:通过 ADB 命令启动</string>
<string name="shizuku_help_step3_title">授权肉包</string>
<string name="shizuku_help_step3_desc">在 Shizuku 的「应用管理」中找到肉包 Autopilot,点击授权按钮</string>
<string name="shizuku_help_step4_title">开始使用</string>
<string name="shizuku_help_step4_desc">授权完成后,返回肉包应用,状态卡片会显示「Shizuku 已连接」</string>
<!-- Overlay Help -->
<string name="overlay_why">为什么需要悬浮窗权限?</string>
<string name="overlay_reason">肉包在执行任务时需要显示悬浮窗来:</string>
<string name="overlay_feature1">显示当前执行进度</string>
<string name="overlay_feature2">提供停止按钮,随时中断任务</string>
<string name="overlay_feature3">在其他应用上方显示状态信息</string>
<string name="overlay_how">如何开启?</string>
<string name="overlay_how_desc">1. 点击执行任务时会自动提示\n2. 或前往:设置 > 应用 > 肉包 > 悬浮窗权限\n3. 开启「允许显示在其他应用上层」</string>
<string name="overlay_privacy">隐私安全</string>
<string name="overlay_privacy_desc">悬浮窗仅在任务执行期间显示,不会收集任何个人信息。任务完成后悬浮窗会自动消失。</string>
<!-- Onboarding -->
<string name="onboarding_welcome">欢迎使用肉包</string>
<string name="onboarding_welcome_desc">肉包是一个智能自动化助手,\n可以帮你操作手机完成各种任务</string>
<string name="onboarding_ai">AI 驱动</string>
<string name="onboarding_ai_desc">基于先进的视觉语言模型,\n肉包能够理解屏幕内容并做出智能决策</string>
<string name="onboarding_easy">简单易用</string>
<string name="onboarding_easy_desc">只需用自然语言描述你想做的事,\n肉包会自动帮你完成</string>
<string name="onboarding_safe">安全可靠</string>
<string name="onboarding_safe_desc">遇到敏感页面(如支付、密码)会自动停止,\n保护你的账户安全</string>
<string name="onboarding_skip">跳过</string>
<string name="onboarding_next">下一步</string>
<string name="onboarding_start">开始使用</string>
<!-- Common -->
<string name="btn_confirm">确定</string>
<string name="btn_cancel">取消</string>
<string name="btn_close">关闭</string>
<string name="btn_add">添加</string>
<string name="btn_delete">删除</string>
<string name="btn_back">返回</string>
<string name="btn_got_it">知道了</string>
<!-- Toast Messages -->
<string name="toast_enter_instruction">请输入指令</string>
<string name="toast_enter_api_key">请输入 API Key</string>
<string name="toast_grant_overlay">请授予悬浮窗权限</string>
<string name="toast_shizuku_granted">Shizuku 权限已获取</string>
<string name="toast_start_shizuku">请先启动 Shizuku App</string>
<string name="toast_shizuku_old">Shizuku 版本过低</string>
<string name="toast_task_complete">任务完成</string>
<string name="toast_user_stopped">用户停止</string>
<string name="toast_sensitive_page">检测到敏感页面(支付/密码),已安全停止</string>
<string name="toast_max_steps">达到最大步数限制</string>
<string name="toast_error">错误: %1$s</string>
</resources>
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 主应用主题 - 深色主题 -->
<style name="Theme.Baozi" parent="android:Theme.Material.NoActionBar">
<!-- 状态栏颜色 -->
<item name="android:statusBarColor">@color/background_dark</item>
<item name="android:windowLightStatusBar">false</item>
<!-- 导航栏颜色 -->
<item name="android:navigationBarColor">@color/background_card</item>
<item name="android:windowLightNavigationBar">false</item>
<!-- 窗口背景 -->
<item name="android:windowBackground">@color/background_dark</item>
<!-- 主题色 -->
<item name="android:colorPrimary">@color/primary</item>
<item name="android:colorPrimaryDark">@color/primary_dark</item>
<item name="android:colorAccent">@color/secondary</item>
</style>
<!-- 启动画面主题 (Android 12+) -->
<style name="Theme.Baozi.Splash" parent="Theme.SplashScreen">
<item name="windowSplashScreenBackground">@color/splash_background</item>
<item name="windowSplashScreenAnimatedIcon">@drawable/splash_icon</item>
<item name="windowSplashScreenIconBackgroundColor">@color/splash_background</item>
<item name="postSplashScreenTheme">@style/Theme.Baozi</item>
</style>
</resources>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<paths>
<files-path name="crash_logs" path="crash_logs/" />
<cache-path name="cache" path="/" />
</paths>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<!-- 允许明文 HTTP 连接(用于本地部署的模型如 Ollama, vLLM 等) -->
<!-- 注意:仅在用户手动配置本地 API 地址时使用 -->
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>