Compare commits

..

70 Commits

Author SHA1 Message Date
Caten
1f8b83ddb1 Update strings.xml 2025-08-31 11:48:15 +08:00
Caten
ceca9a1892 Update workflow.dart 2025-08-31 11:34:10 +08:00
Caten
4cb8bfb01e Update AVNC 2025-08-31 10:49:57 +08:00
Caten
645e60cf83 Update config.yml 2025-08-31 09:50:44 +08:00
Caten
350f4e93ef Update discussion link, hint for compile/fast command/file access, fix x11, using release keystore, update code to v1.0.99 2025-08-31 07:56:55 +08:00
Caten
ee22cbc1d9 Move some doc to gitee 2025-08-29 21:29:39 +08:00
Caten
51c67ac546 Update signal 9 page 2025-08-29 16:54:13 +08:00
Caten
ba43ec7ad0 Update logo 2025-08-29 16:53:53 +08:00
Caten
1203dcf737 Update avnc, remove the embedded termux:x11 and import it as a flutter plugin, fix app name 2025-08-29 01:38:16 +08:00
Caten
d9c4c24adc Update hint text, permission and version, update code to v1.0.25 2025-08-05 15:49:03 +08:00
Caten
3b84c7da2c Update hangover stable link to 10.11 2025-08-04 21:29:00 +08:00
Caten
3a6d22956f Move pulseaudio executable to jniLibs 2025-08-04 21:15:35 +08:00
Caten
8b5013a479 Fix WPS link (8th time) 2025-08-04 21:12:43 +08:00
Caten
6d924bded9 Update build-tiny-rootfs.md 2025-08-04 17:02:23 +08:00
Caten
6ff16e3559 Remove the embedded AVNC and import it as a Flutter plugin 2025-08-04 14:40:57 +08:00
Caten
cd8fea5f98 update issue template...... 2025-07-05 23:01:44 +08:00
Caten
83a544acda Update code to v1.0.24, fix hant, update hangover 2025-06-30 07:33:55 +08:00
Caten
c80be46909 Fix samsung issues 2025-06-29 10:31:48 +08:00
Caten
90be3dc9ee Merge pull request #334 from ystartgo/patch-1
Update main.dart
2025-06-21 17:13:32 +08:00
Caten
45d60d6519 Merge pull request #333 from ystartgo/patch-2
Create intl_zh_Hant.arb
2025-06-21 17:13:16 +08:00
startgo
d8b4390c03 Create intl_zh_Hant.arb
新增繁體中文 intl_zh_Hant
2025-06-21 15:13:16 +08:00
startgo
0e186e93f7 Update main.dart
新增繁體
2025-06-21 15:11:11 +08:00
Caten
b788cea689 Update workflow.dart 2025-06-12 22:20:31 +08:00
Caten
affc3173ef Fix some script and update readme 2025-06-12 20:24:52 +08:00
Caten
6b67ddaf9a Fix QQ, remove static elf, downgrade hangover, add dxvk, update dependencies, update code to 1.0.23 2025-06-12 18:15:30 +08:00
Caten
009cd4ebe2 Support English UI, remove mediamtx, update hangover, fix build process, remove build files for other platforms 2025-06-07 17:04:08 +08:00
Caten
7e685fae64 Merge pull request #310 from Karlbaey101/Karlbaey101-patch-READMEFormat0-1
修改 README.md 格式
2025-05-31 22:41:23 +08:00
Caten
91688ec4ae Merge pull request #316 from wcbing/master
Update linuxqq and dingtalk download command
2025-05-31 22:39:55 +08:00
wcbing
ba62910793 Update linuxqq and dingtalk download command 2025-05-19 01:05:30 +08:00
Karlbaey
e1f24796b2 修改 README.md 格式
在不破坏内容的前提下修改了 README.md,以使得可读性更强。
2025-05-02 20:16:41 +08:00
Caten
23b7889fcc Update README.md 2025-04-22 23:57:13 +08:00
Caten
db0689a9bd Version & edraw fix 2025-04-21 08:41:34 +08:00
Caten
9f294af413 Update code to v1.0.22
Update hangover version, freedreno version, edmax verion, signal 9 fault tutorial link.
2025-04-20 22:36:10 +08:00
Caten
304df8ca96 Add QTWEBENGINE_DISABLE_SANDBOX=1 2024-12-24 00:26:20 +08:00
Caten
c0795474cf Update README.md 2024-12-24 00:13:28 +08:00
Caten
1f596424f2 fix 2024-12-17 07:42:43 +08:00
Caten
e86fb4e3a9 Adjust readme 2024-12-17 07:37:21 +08:00
Caten
ee230f91dd Fix hangover and update 2024-12-01 16:26:16 +08:00
Caten
b5cbda42cb Update code to 1.0.20.
Fix wps
2024-12-01 00:29:31 +08:00
Caten
fd535f0e20 Update code to v1.0.19-1
Update readme, move cmatrix and fonts to patch.tar.gz
2024-11-12 22:25:59 +08:00
Caten
a5a381604d Update code to v1.0.19
hangover, wechat, termux x11 xfce fix, locale.gen fix...
2024-11-10 14:43:29 +08:00
Caten
a911efdc54 Update code to v1.0.18 2024-09-21 15:44:39 +08:00
Caten
49c2377e46 some fix, dri3, wps, readme, ... 2024-09-21 11:43:14 +08:00
Caten
a117050fde Termux x11 port 2024-09-20 21:39:48 +08:00
Caten
958d7839ff submodule fix 2024-08-17 19:44:18 +08:00
Caten
106b5fc325 submodule 2024-08-17 16:25:36 +08:00
Caten
699f1eef37 submodule 2024-08-17 16:05:27 +08:00
Caten
905ff609b1 Try submodule 2024-08-17 15:57:08 +08:00
Caten
70c2018ddf Add a hint; Update code to v1.0.17 2024-08-11 12:12:58 +08:00
Caten
b1895af653 Auto enable getifaddrs bridge; Fix Signal 9 page 2024-08-11 12:04:32 +08:00
Caten
62995e0a5d Signal9Page Change & More 2024-08-11 10:49:28 +08:00
Caten
5ebbaf7073 Add more mirror site for box86/box64 and wine 2024-08-10 18:15:59 +08:00
Caten
cb1f4b23ee Turnip Option Added 2024-08-10 15:49:35 +08:00
Caten
0d2f5f4e91 Fix wps link; electron folder open 2024-08-10 12:28:31 +08:00
Caten
d54d1ef6f3 v1.0.16, fix wps link 2024-07-31 00:09:05 +08:00
Caten
0377aa7b8f Ads removal 2024-06-01 17:48:29 +08:00
Caten
232afe9929 Ready for v1.0.16 2024-06-01 06:43:48 +08:00
Caten
fcb472594d Adjust FAQ message 2024-04-16 20:20:24 +08:00
Caten
aa6d0feed7 Enable pip 2024-04-16 12:47:33 +08:00
Caten
1ee935105e Various fixes
1. 强制更新后调整系统语言到中文(Debian小版本更新时经常会出现系统语言变默认的问题);
2. 安装WPS时强制修复安装(经常有用户出现安装时清后台导致安装损坏的情况,索性每次安装前执行修复命令);
3. 第一次进入容器时修改默认分辨率到与用户设备一致
2024-04-16 12:43:44 +08:00
Caten
7242c45e38 Merge pull request #33 from wyq0918dev/avnc_md3
修复:AVNC原生界面与Flutter界面样式不符
2024-04-02 20:43:47 +08:00
王泳淇
d0a539d6dc 修复:AVNC原生界面与Flutter界面样式不符
1.更新Android端material库为1.11.0
2.在Android端启用动态颜色
3.更改主题样式为Material3
4.为两个原生页面启用边倒边沉浸
5.修改Android端项目名称为TinyComputer(顺手改了, 默认为android)
2024-04-02 14:57:50 +08:00
Caten
3e443ceedc Update code to v1.0.15 2024-03-12 22:06:10 +08:00
Caten
b50622787d Various fixes 2024-03-10 18:20:48 +08:00
Caten
231d1167e0 Change default settings 2024-03-05 22:20:37 +08:00
Caten
a956d26f6d Update code to v1.0.14 (10) 2024-02-29 19:35:00 +08:00
Caten
c2ee3b694c Update code to v1.0.13+1 2024-01-24 16:03:45 +08:00
Caten
09bf75beed Change WPS command, remove alipay 2024-01-13 07:52:53 +08:00
Caten
b00ede9483 Merge pull request #9 from wyq0918dev/md3
Modify user interface to material3
2024-01-12 18:57:06 +08:00
王泳淇
b8393dacfd Modify user interface to material3 2024-01-12 16:27:32 +08:00
171 changed files with 2590 additions and 5757 deletions

96
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@@ -0,0 +1,96 @@
name: Bug 报告
description: 报告软件异常行为(提交前请阅读所有说明文字)
title: "[Bug] "
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
**必读须知:**
- 请先搜索[所有issue](https://github.com/Cateners/tiny_computer/issues?q=is%3Aissue)**相同问题重复提交会被直接关闭**
- 请先自查[常见使用问题](https://gitee.com/caten/tc-hints/blob/master/pool/faq.md),是否能解决你的问题
- 本模板中的每项要求都有其特定原因,请完整填写
- type: input
id: device
attributes:
label: "设备型号"
description: |
**为什么需要这个信息?**
许多Bug与设备强相关例如
- 三星OneUI 7无法使用v1.0.23及以下版本issue #303
- 鸿蒙4缺少无线调试选项
placeholder: "品牌+具体型号"
validations:
required: true
- type: input
id: os-version
attributes:
label: "操作系统版本"
description: |
**为什么需要这个信息?**
Android各版本存在兼容性差异
placeholder: "完整系统名称+版本号"
validations:
required: true
- type: input
id: app-version
attributes:
label: "小小电脑版本"
description: |
**为什么需要这个信息?**
1. 旧版问题可能已在新版修复(请始终使用最新版)
2. 不同桌面环境XFCE/LXQT/GXDE行为可能不同
**如果不是最新版,请做好问题被忽略的准备**
placeholder: "版本号+桌面环境v1.0.23 GXDE"
validations:
required: true
- type: dropdown
id: is-latest
attributes:
label: "是否最新版?"
options:
- "是"
- "否"
validations:
required: true
- type: textarea
id: why-not-latest
attributes:
label: "若非最新版,必须说明原因"
placeholder: "详细解释原因..."
- type: textarea
id: steps
attributes:
label: "出现问题的重现步骤"
description: |
**为什么需要详细步骤?**
Linux的自由度极高任何操作都可能影响结果例如
- 是否通过sudo运行
- 是否修改过环境变量?
- 是否安装过第三方依赖?
placeholder: "也许可以从启动软件开始逐步描述..."
validations:
required: true
- type: textarea
id: logs
attributes:
label: "提供终端截图或其他相关信息"
description: |
**为什么需要这些?**
文字描述可能遗漏关键信息
placeholder: "粘贴日志文本或拖入图片..."
validations:
required: true
- type: markdown
attributes:
value: |
**问题优先级说明:**
本软件的初衷是安装PC级软件如WPS、CAJ Viewer、亿图图示。和这些软件相关的问题会得到重视。如果是其他问题得视情况受限于精力和能力...没能修复的issue会保留以让更多人看到也许网友会有更好的解决办法

View File

@@ -0,0 +1,95 @@
name: Bug Report
description: Report abnormal software behavior (please read all instructions before submitting)
title: "[Bug] "
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
**Important Notes:**
- First search [all issues](https://github.com/Cateners/tiny_computer/issues?q=is%3Aissue). **Duplicate reports will be closed immediately**
- Every requirement in this template has its specific purpose. Please complete all fields
- type: input
id: device
attributes:
label: "Device Model"
description: |
**Why is this needed?**
Many bugs are device-specific, such as:
- Samsung OneUI 7 incompatible with v1.0.23 and below (issue #303)
- HarmonyOS 4 missing wireless debugging option
placeholder: "Brand + specific model"
validations:
required: true
- type: input
id: os-version
attributes:
label: "Operating System Version"
description: |
**Why is this needed?**
Compatibility varies across Android versions
placeholder: "Full OS name + version number"
validations:
required: true
- type: input
id: app-version
attributes:
label: "Tiny Computer Version"
description: |
**Why is this needed?**
1. Old version issues may have been fixed in newer releases (always use the latest version)
2. Different desktop environments (XFCE/LXQT/GXDE) may behave differently
**If not using the latest version, be prepared for your issue to be ignored**
placeholder: "Version number + desktop environment (e.g., v1.0.23 GXDE)"
validations:
required: true
- type: dropdown
id: is-latest
attributes:
label: "Is this the latest version?"
options:
- "Yes"
- "No"
validations:
required: true
- type: textarea
id: why-not-latest
attributes:
label: "If not latest version, explanation is mandatory"
placeholder: "Explain in detail..."
- type: textarea
id: steps
attributes:
label: "Steps to reproduce the issue"
description: |
**Why detailed steps?**
Linux offers extreme flexibility where any operation may affect results, such as:
- Did you run with sudo?
- Modified environment variables?
- Installed third-party dependencies?
placeholder: "Maybe start from launching the application..."
validations:
required: true
- type: textarea
id: logs
attributes:
label: "Provide terminal screenshots or other relevant information"
description: |
**Why is this needed?**
Text descriptions might omit critical details
placeholder: "Paste log text or drag images here..."
validations:
required: true
- type: markdown
attributes:
value: |
**Issue Priority Explanation:**
This software's primary purpose is running PC-level applications like WPS, CAJ Viewer, and Edraw Max. Issues related to these applications will receive priority. Other issues will be handled case-by-case (limited by time and capabilities...). Unresolved issues will remain open for community visibility - maybe someone has a better solution!

5
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: 获取帮助或提问
url: https://github.com/Cateners/tiny_computer/discussions
about: 请在这里提问和讨论,不要将其作为 Issue。

View File

@@ -0,0 +1,20 @@
name: 功能请求
description: "请先确认:该功能是否能显著提升小小电脑的使用体验?"
title: "[Feature] "
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
**必读须知:**
- 请先搜索[所有issue](https://github.com/Cateners/tiny_computer/issues?q=is%3Aissue)**相同问题重复提交会被直接关闭**
- type: textarea
id: rationale
attributes:
label: "必须说明使用场景和价值"
description: |
**为什么需要这个?(附用户调研数据或统计截图更佳,避免主观描述)**
因为精力有限我会更高可能采纳有价值且易实现的功能。没能处理的issue会保留以让更多人看到也许网友会有更好的解决办法
validations:
required: true

View File

@@ -0,0 +1,20 @@
name: Feature Request
description: "Please confirm first: Will this feature significantly improve the user experience of Tiny Computer?"
title: "[Feature] "
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
**Important Notes:**
- Please search [all issues](https://github.com/Cateners/tiny_computer/issues?q=is%3Aissue) first. **Duplicate submissions will be closed directly**
- type: textarea
id: rationale
attributes:
label: "Must specify usage scenarios and value"
description: |
**Why is this needed? (User research data or screenshot statistics are preferred. Avoid subjective descriptions.)**
Due to limited resources, I'm more likely to adopt valuable and easily implementable features. Unaddressed issues will remain visible for community solutions!
validations:
required: true

17
.gitignore vendored
View File

@@ -39,10 +39,27 @@ app.*.symbols
app.*.map.json app.*.map.json
# Android Studio will place build artifacts here # Android Studio will place build artifacts here
/android/app/build
/android/app/debug /android/app/debug
/android/app/profile /android/app/profile
/android/app/release /android/app/release
/android/app/.cxx
/backup /backup
assets/xa* assets/xa*
assets/patch.tar.gz
android/app/src/main/jniLibs/*
devtools_options.yaml
lib/l10n/app_localizations*
# Keystore files
*.jks
*.keystore
# Configuration files
android/keystore.properties
android/local.properties

0
.gitmodules vendored Normal file
View File

View File

@@ -4,7 +4,7 @@
# This file should be version controlled and should not be manually edited. # This file should be version controlled and should not be manually edited.
version: version:
revision: "efbf63d9c66b9f6ec30e9ad4611189aa80003d31" revision: "edada7c56edf4a183c1735310e123c7f923584f1"
channel: "stable" channel: "stable"
project_type: app project_type: app
@@ -13,26 +13,11 @@ project_type: app
migration: migration:
platforms: platforms:
- platform: root - platform: root
create_revision: efbf63d9c66b9f6ec30e9ad4611189aa80003d31 create_revision: edada7c56edf4a183c1735310e123c7f923584f1
base_revision: efbf63d9c66b9f6ec30e9ad4611189aa80003d31 base_revision: edada7c56edf4a183c1735310e123c7f923584f1
- platform: android - platform: android
create_revision: efbf63d9c66b9f6ec30e9ad4611189aa80003d31 create_revision: edada7c56edf4a183c1735310e123c7f923584f1
base_revision: efbf63d9c66b9f6ec30e9ad4611189aa80003d31 base_revision: edada7c56edf4a183c1735310e123c7f923584f1
- platform: ios
create_revision: efbf63d9c66b9f6ec30e9ad4611189aa80003d31
base_revision: efbf63d9c66b9f6ec30e9ad4611189aa80003d31
- platform: linux
create_revision: efbf63d9c66b9f6ec30e9ad4611189aa80003d31
base_revision: efbf63d9c66b9f6ec30e9ad4611189aa80003d31
- platform: macos
create_revision: efbf63d9c66b9f6ec30e9ad4611189aa80003d31
base_revision: efbf63d9c66b9f6ec30e9ad4611189aa80003d31
- platform: web
create_revision: efbf63d9c66b9f6ec30e9ad4611189aa80003d31
base_revision: efbf63d9c66b9f6ec30e9ad4611189aa80003d31
- platform: windows
create_revision: efbf63d9c66b9f6ec30e9ad4611189aa80003d31
base_revision: efbf63d9c66b9f6ec30e9ad4611189aa80003d31
# User provided section # User provided section

102
README.md
View File

@@ -1,83 +1,111 @@
[![小小电脑使用照片](https://github.com/Cateners/tiny_computer/raw/master/readme/cover0.png)](https://github.com/Cateners/tiny_computer/blob/master/readme/cover0.png)
# 小小电脑 # 小小电脑
<img decoding="async" src="readme/cover0.png" width="50%"> 给所有安卓 9 以上 arm64 设备的“PC 应用引擎”平替。你可以在小小电脑上安装 PC 级 WPS、CAJ Viewer、亿图图示等软件。
给所有安卓arm64设备的“PC应用引擎”平替 Run Debian Bookworm with XFCE/LXQt/... on Android with just one click - optimized for Chinese users. This package comes preinstalled with the Fcitx Pinyin input method and doesn't require Termux.
Click-to-run debian bookworm xfce on android for Chinese users, with fcitx pinyin input method preinstalled. No termux required. To change the language in the container, simply run the "tmoe" command (this root filesystem was created using [tmoe](https://github.com/2moe/tmoe)). You'll need to remove the LANG=zh_CN.UTF-8 environment variable from the startup command (Control -> Advanced Settings -> Startup Command) when switching languages.
Note: Since version 1.0.23, English UI is supported, though some hint texts remain in Chinese.
## 特点 ## 特点
- 一键安装,即开即用 - 一键安装,即开即用
- 来自kali-undercoverwin10主题(仅xfce版本),友好的界面 - 来自 kali-undercoverwin10 主题(仅 xfce 版本),友好的界面
<img decoding="async" src="readme/img1.png" width="50%"> [![1](https://github.com/Cateners/tiny_computer/raw/master/readme/img1.png)](https://github.com/Cateners/tiny_computer/blob/master/readme/img1.png)
- 提供常用软件的一键安装指令 - 提供常用软件的一键安装指令
<img decoding="async" src="readme/img2.png" width="50%"> [![1](https://github.com/Cateners/tiny_computer/raw/master/readme/img2.png)](https://github.com/Cateners/tiny_computer/blob/master/readme/img2.png)
- 可方便地改变屏幕缩放,不用担心屏幕过大或过小 - 可方便地改变屏幕缩放,不用担心屏幕过大或过小(仅 novnc)
<img decoding="async" src="readme/img3.gif" width="50%"> [![1](https://github.com/Cateners/tiny_computer/raw/master/readme/img3.gif)](https://github.com/Cateners/tiny_computer/blob/master/readme/img3.gif)
- 便捷访问设备文件或通过设备SAF访问软件文件 - 便捷访问设备文件,或通过设备 SAF 访问软件文件
<img decoding="async" src="readme/img4.png" width="50%"> [![1](https://github.com/Cateners/tiny_computer/raw/master/readme/img4.png)](https://github.com/Cateners/tiny_computer/blob/master/readme/img4.png)
- 提供终端和众多可调节参数供高级用户使用 - 提供终端和众多可调节参数供高级用户使用
<img decoding="async" src="readme/img5.png" width="50%"> [![1](https://github.com/Cateners/tiny_computer/raw/master/readme/img5.png)](https://github.com/Cateners/tiny_computer/blob/master/readme/img5.png)
## 下载
小小电脑提供多个版本。要将小小电脑作为 PC 应用引擎使用,请在 [Releases](https://github.com/Cateners/tiny_computer/releases) 页面下载并安装 [XFCE](https://xfce.org/) 版本tiny-computer-xfce.apk
如果遇到黑屏问题,请卸载后尝试 [LXQt](https://lxqt-project.org/) 版本([Releases](https://github.com/Cateners/tiny_computer/releases) 页寻找 tiny-computer-lxqt.apk
这些版本的区别在于桌面环境不同。你可以简单地理解为界面不一样,但功能基本一致。
LXQt 的界面示例:
[![1](https://camo.githubusercontent.com/016ff8803c228f26db750c8424777d8e04a3aebec4ff11d8436a0b22a2e6f58a/68747470733a2f2f6c7871742d70726f6a6563742e6f72672f696d616765732f73637265656e73686f74732f616d6269616e63652e706e67)](https://camo.githubusercontent.com/016ff8803c228f26db750c8424777d8e04a3aebec4ff11d8436a0b22a2e6f58a/68747470733a2f2f6c7871742d70726f6a6563742e6f72672f696d616765732f73637265656e73686f74732f616d6269616e63652e706e67)
如果你下载小小电脑是为了体验更多桌面环境,享受折腾 Linux 的乐趣,这里也有一些其他版本供下载!
和 [GXDE](https://www.gxde.org/) 团队合作的版本 [#129](https://github.com/Cateners/tiny_computer/issues/129)。可在[此处](https://mirrors.sdu.edu.cn/spark-store-repository/GXDE-OS/APK/)下载。GXDE 的界面示例:
[![1](https://www.gxde.top/1.jpg)](https://www.gxde.top/1.jpg)
由[灵墨桌面](https://www.lingmo.org/)开发者提供的版本[#218](https://github.com/Cateners/tiny_computer/issues/218)。灵墨桌面的界面[示例](https://www.bilibili.com/video/BV1Ci421R7AR)。
## 原理 ## 原理
使用proot运行debian环境 使用 proot 运行 debian 环境
内置[noVNC](https://github.com/novnc/noVNC)显示图形界面 内置 [noVNC](https://github.com/novnc/noVNC)/[AVNC](https://github.com/gujjwal00/avnc)/[Termux:X11](https://github.com/termux/termux-x11) 显示图形界面
## 项目结构 ## 项目结构
assets的文件源信息可以在[这里](extra/readme.md)找到。 assets 和 android/app/src/main/jniLibs 的文件源信息可以在[这里](https://github.com/Cateners/tiny_computer/blob/master/extra/readme.md)找到。
完整的容器制作过程可以在[这里](extra/build-tiny-rootfs.md)看到。 完整的容器制作过程可以在[这里](https://github.com/Cateners/tiny_computer/blob/master/extra/build-tiny-rootfs.md)看到。
数据包不再在assets中更新而是随releases提供主要是为了避免git越来越大 数据包、patch.tar.gz 以及 jniLibs 的文件不在代码仓更新,而是随 releases 提供,主要是为了避免 git 越来越大
lib目录 lib 目录:
- main.dart文件页面布局有点乱 - main.dart 文件,页面布局,有点乱
- workflow.dart文件逻辑部分目前也还可以理解 - workflow.dart 文件,逻辑部分,目前也还可以理解
- Util 工具类 - Util 工具类
- TermPty 一个终端 - TermPty 一个终端
- G 全局变量类 - G 全局变量类
- Workflow 从软件点开到容器启动的所有步骤 - Workflow 从软件点开到容器启动的所有步骤
- l10n 文件夹,包含多语言文件
## 编译 ## 编译
你需要配置好flutter和安卓sdk,然后克隆此项目 你需要配置好 flutter 和安卓 sdk。
在编译之前需要在release中下载系统rootfs(或者[自行制作](extra/build-tiny-rootfs.md))之后使用split命令分割拷贝到assets。一般我将其分为98MB。 在编译之前,需要在 release 中下载 jniLibs.zip ,将里面的库文件解压后放到 android/app/src/main/jniLibs/arm64-v8a下载 patch.tar.gz 拷贝到 assets。以及下载系统 rootfs或者[自行制作](https://github.com/Cateners/tiny_computer/blob/master/extra/build-tiny-rootfs.md),之后使用 split 命令分割,拷贝到 assets。一般我将其分为 98MB。
`split -b 98M debian.tar.xz` ```bash
split -b 98M debian.tar.xz
```
然后修改workflow的代码找到复制资源的部分把生成的xa\*名字写进去(我还不知道怎么写代码识别有多少个xa*文件) 接下来就可以编译了。如果要编译release版本需要设置发布密钥可以参考android/keystore.properties.example文件
接下来就可以编译了。我使用的命令如下: 我使用的编译命令如下:
`flutter build apk --target-platform android-arm64 --split-per-abi --obfuscate --split-debug-info=tiny_computer/sdi` ```bash
flutter build apk --target-platform android-arm64 --split-per-abi --obfuscate --split-debug-info=tiny_computer/sdi
```
## 目前已知bug ## 目前已知 bug
多用户/分身情形无法sudo, 其它见issue 多用户/分身情形无法 sudo , 其它见 issue
## 一些链接 ## 一些链接
这是我的第一个flutter软件感谢这些项目为我指路 这是我的第一个 flutter 软件,感谢这些项目为我指路
- 要一点基础的 [《Flutter实战·第二版》](https://book.flutterchina.club) - 要一点基础的[《Flutter实战·第二版》](https://book.flutterchina.club/)
- 也许是零基础的Flutter视频课程 [freeCodeCamp Flutter Course](https://www.youtube.com/watch?v=wFn-m-OgKPU&list=PL6yRaaP0WPkVtoeNIGqILtRAgd3h2CNpT) - 也许是零基础的Flutter视频课程 [freeCodeCamp Flutter Course](https://www.youtube.com/watch?v=wFn-m-OgKPU&list=PL6yRaaP0WPkVtoeNIGqILtRAgd3h2CNpT)
- 安卓上的 VS Code [Code FA](https://github.com/nightmare-space/vscode_for_android)
- 安卓上的VS Code [Code FA](https://github.com/nightmare-space/vscode_for_android)
## Getting Started ## Getting Started
@@ -88,6 +116,4 @@ A few resources to get you started if this is your first Flutter project:
- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) - [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) - [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
For help getting started with Flutter development, view the For help getting started with Flutter development, view the [online documentation](https://docs.flutter.dev/), which offers tutorials, samples, guidance on mobile development, and a full API reference.
[online documentation](https://docs.flutter.dev/), which offers tutorials,
samples, guidance on mobile development, and a full API reference.

View File

@@ -22,18 +22,24 @@ if (flutterVersionName == null) {
flutterVersionName = '1.0' flutterVersionName = '1.0'
} }
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('keystore.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android { android {
namespace "com.example.tiny_computer" namespace "com.example.tiny_computer"
compileSdkVersion flutter.compileSdkVersion compileSdkVersion flutter.compileSdkVersion
ndkVersion flutter.ndkVersion ndkVersion "27.0.12077973" // flutter.ndkVersion
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_17
} }
kotlinOptions { kotlinOptions {
jvmTarget = '1.8' jvmTarget = 17
} }
sourceSets { sourceSets {
@@ -46,18 +52,48 @@ android {
applicationId "com.fct.tiny" applicationId "com.fct.tiny"
// You can update the following values to match your application needs. // You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdkVersion 24 //ffmpeg_kit; flutter.minSdkVersion minSdk 28 // glob() version //proot version //ffmpeg_kit; flutter.minSdkVersion
targetSdkVersion 28 //https://github.com/termux/termux-app/issues/1072; native; linker; flutter.targetSdkVersion targetSdk 28 //https://github.com/termux/termux-app/issues/1072; native; linker; flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger() versionCode flutterVersionCode.toInteger()
versionName flutterVersionName versionName flutterVersionName
buildConfigField "String", "COMMIT", "\"" + ("git rev-parse HEAD\n".execute().getText().trim() ?: (System.getenv('CURRENT_COMMIT') ?: "NO_COMMIT")) + "\""
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
} }
buildTypes { buildTypes {
release { release {
// TODO: Add your own signing config for the release build. signingConfig signingConfigs.release
// Signing with the debug keys for now, so `flutter run --release` works. minifyEnabled true
signingConfig signingConfigs.debug shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
} }
debug {
signingConfig signingConfigs.debug
minifyEnabled true
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
buildFeatures {
aidl true
dataBinding true
viewBinding true
buildConfig true
}
lint {
disable "NullSafeMutableLiveData"
} }
lintOptions { lintOptions {
@@ -77,4 +113,9 @@ flutter {
source '../..' source '../..'
} }
dependencies {} dependencies {
implementation "androidx.core:core-ktx:1.15.0"
implementation "androidx.appcompat:appcompat:1.7.0"
implementation "com.google.android.material:material:1.7.0"
implementation 'com.github.tiann:FreeReflection:3.2.2'
}

14
android/app/proguard-rules.pro vendored Normal file
View File

@@ -0,0 +1,14 @@
# Please add these rules to your existing keep rules in order to suppress warnings.
# This is generated automatically by the Android Gradle plugin.
-dontwarn android.app.ActivityThread
-dontwarn android.app.ContextImpl
-dontwarn android.app.IActivityManager
-dontwarn android.content.IIntentReceiver$Stub
-dontwarn android.content.IIntentReceiver
-dontwarn android.content.IIntentSender
-dontwarn android.content.pm.IPackageManager
-dontwarn com.google.errorprone.annotations.CanIgnoreReturnValue
-dontwarn com.google.errorprone.annotations.Immutable
# 保持 Termux X11 所有内容
-keep class com.termux.x11.** { *; }
-keepclassmembers class com.termux.x11.** { *; }

View File

@@ -1,15 +1,20 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
<application <application
android:label="小小电脑" android:label="@string/tc_app_name"
android:name="${applicationName}" android:name=".MainApplication"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:usesCleartextTraffic="true"> android:usesCleartextTraffic="true"
android:launchMode="singleInstance"
android:theme="@style/App.Theme"
android:extractNativeLibs="true">
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true" android:exported="true"
@@ -31,6 +36,10 @@
<category android:name="android.intent.category.LAUNCHER"/> <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter> </intent-filter>
</activity> </activity>
<activity
android:name=".Signal9Activity"
android:exported="true"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
<provider <provider
android:name="com.example.tiny_computer.filepicker.TinyDocumentsProvider" android:name="com.example.tiny_computer.filepicker.TinyDocumentsProvider"
android:authorities="com.example.tiny_computer.documents" android:authorities="com.example.tiny_computer.documents"

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

@@ -1,6 +1,38 @@
package com.example.tiny_computer package com.example.tiny_computer
import android.system.Os.setenv
import android.content.Intent
import androidx.annotation.NonNull
import androidx.annotation.Keep
import androidx.appcompat.app.AppCompatDelegate
import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
class MainActivity: FlutterActivity() { class MainActivity: FlutterActivity() {
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "android").setMethodCallHandler {
// 注册通道并设置方法调用处理器
call, result ->
// 判断方法名
when (call.method) {
"launchSignal9Page" -> {
startActivity(Intent(this, Signal9Activity::class.java))
result.success(0)
}
"getNativeLibraryPath" -> {
result.success(getApplicationInfo().nativeLibraryDir)
}
else -> {
// 不支持的方法名
result.notImplemented()
}
}
}
}
} }

View File

@@ -0,0 +1,19 @@
package com.example.tiny_computer
import android.content.Context
import com.google.android.material.color.DynamicColors
import io.flutter.app.FlutterApplication
import me.weishu.reflection.Reflection
class MainApplication : FlutterApplication() {
override fun onCreate() {
super.onCreate()
DynamicColors.applyToActivitiesIfAvailable(this@MainApplication)
}
override fun attachBaseContext(base: Context?) {
super.attachBaseContext(base)
Reflection.unseal(base)
}
}

View File

@@ -0,0 +1,62 @@
package com.example.tiny_computer
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import com.example.tiny_computer.databinding.ActivitySignal9Binding
class Signal9Activity : AppCompatActivity() {
private lateinit var binding: ActivitySignal9Binding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySignal9Binding.inflate(layoutInflater)
setContentView(binding.root)
// 设置状态栏和导航栏颜色匹配蓝屏背景
window.statusBarColor = ContextCompat.getColor(this, R.color.tc_s9a_blue_screen_blue)
window.navigationBarColor = ContextCompat.getColor(this, R.color.tc_s9a_blue_screen_blue)
setupContent()
}
private fun setupContent() {
// 设置错误信息
binding.errorDetails.text = getString(R.string.tc_s9a_error_message)
// 根据Android版本显示不同的解决方案
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
// Android 14以下版本
binding.preAndroid14Layout.isVisible = true
binding.solutionIntro.text = getString(R.string.tc_s9a_solution_intro)
binding.solutionAlternative.text = getString(R.string.tc_s9a_solution_alternative)
binding.toolButton.text = getString(R.string.tc_s9a_tool_button)
binding.tutorialButton.text = getString(R.string.tc_s9a_tutorial_button)
binding.toolButton.setOnClickListener {
openBrowserLink("https://www.vmos.cn/zhushou.htm")
}
binding.tutorialButton.setOnClickListener {
openBrowserLink("https://gitee.com/caten/tc-hints/blob/master/pool/signal9fix.md")
}
} else {
// Android 14及以上版本
binding.solutionAndroid14.isVisible = true
binding.solutionAndroid14.text = getString(R.string.tc_s9a_solution_android14)
}
}
private fun openBrowserLink(url: String) {
if (url.isNotEmpty()) {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivity(intent)
}
// 如果URL为空则不执行任何操作等待后续补充链接
}
}

View File

@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/tc_s9a_blue_screen_blue"
tools:context=".Signal9Activity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="20dp">
<TextView
android:id="@+id/kaomoji_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tc_s9a_kaomoji"
android:textColor="@color/tc_s9a_white"
android:textSize="96sp"
android:textStyle="bold" />
<TextView
android:id="@+id/error_details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:textColor="@color/tc_s9a_white"
android:textSize="16sp" />
<!-- Android 14以下版本的内容 -->
<LinearLayout
android:id="@+id/pre_android14_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone">
<TextView
android:id="@+id/solution_intro"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:textColor="@color/tc_s9a_white"
android:textSize="16sp" />
<Button
android:id="@+id/tool_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:backgroundTint="@color/tc_s9a_white"
android:textColor="@color/tc_s9a_blue_screen_blue" />
<TextView
android:id="@+id/solution_alternative"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:textColor="@color/tc_s9a_white"
android:textSize="16sp" />
<Button
android:id="@+id/tutorial_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:backgroundTint="@color/tc_s9a_white"
android:textColor="@color/tc_s9a_blue_screen_blue" />
</LinearLayout>
<!-- Android 14及以上版本的内容 -->
<TextView
android:id="@+id/solution_android14"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:textColor="@color/tc_s9a_white"
android:textSize="16sp"
android:visibility="gone" />
</LinearLayout>
</ScrollView>

View File

@@ -0,0 +1,6 @@
<?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"/>
<monochrome android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>

View File

@@ -0,0 +1,6 @@
<?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"/>
<monochrome android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 954 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="tc_app_name">小小电脑</string>
<string name="tc_s9a_error_message">终端异常终止返回错误码9。此错误是安卓12+系统限制子进程数量造成的,需要手动关闭限制。</string>
<string name="tc_s9a_kaomoji">:(</string>
<string name="tc_s9a_solution_intro">可以使用以下工具修复:</string>
<string name="tc_s9a_solution_alternative">如果以上工具无法修复,或者设备为鸿蒙设备,请按照以下教程解决(需要电脑和数据线):</string>
<string name="tc_s9a_tool_button">修复工具</string>
<string name="tc_s9a_tutorial_button">教程链接</string>
<string name="tc_s9a_solution_android14">请在设置应用中启用开发者选项(通常步骤是找到关于设备->系统版本->连续点击系统版本5次然后在开发者选项中找到\"停止限制子进程\",打开开关即可。不同机型开启开发者选项的步骤可能略有不同,具体方法可在网络搜索。</string>
</resources>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="tc_app_name">小小電腦</string>
<string name="tc_s9a_error_message">終端異常終止返回錯誤碼9。此錯誤是安卓12+系統限制子進程數量造成的,需要手動關閉限制。</string>
<string name="tc_s9a_kaomoji">:(</string>
<string name="tc_s9a_solution_intro">可以使用以下工具修復:</string>
<string name="tc_s9a_solution_alternative">如果以上工具無法修復,或者設備為鴻蒙設備,請按照以下教程解決(需要電腦和數據線):</string>
<string name="tc_s9a_tool_button">修復工具</string>
<string name="tc_s9a_tutorial_button">教程鏈接</string>
<string name="tc_s9a_solution_android14">請在設置應用中啟用開發者選項(通常步驟是找到關於設備->系統版本->連續點擊系統版本5次然後在開發者選項中找到\"停止限制子進程\",打開開關即可。不同機型開啟開發者選項的步驟可能略有不同,具體方法可在網絡搜尋。</string>
</resources>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="tc_s9a_blue_screen_blue">#FF6F43C0</color>
<color name="tc_s9a_white">#FFFFFFFF</color>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#D1BAFD</color>
</resources>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="tc_app_name">Tiny Computer</string>
<string name="tc_s9a_error_message">Terminal terminated abnormally with error code 9. This error is caused by Android 12+ system limiting the number of child processes and requires manual removal of the restriction.</string>
<string name="tc_s9a_kaomoji">:(</string>
<string name="tc_s9a_solution_intro">You can use the following tool to fix:</string>
<string name="tc_s9a_solution_alternative">If the above tool cannot fix the issue, or if the device is a HarmonyOS device, please follow the tutorial below (requires a computer and data cable):</string>
<string name="tc_s9a_tool_button">Repair Tool</string>
<string name="tc_s9a_tutorial_button">Tutorial Link</string>
<string name="tc_s9a_solution_android14">Please enable developer options in the Settings app (usually by going to About device -> System version -> tap System version 5 times continuously), then find "Stop restricting child processes" in developer options and turn on the switch. The steps to enable Developer Options may vary slightly depending on the device model. For specific methods, you can search online.</string>
</resources>

View File

@@ -1,20 +1,8 @@
buildscript {
ext.kotlin_version = '1.7.10'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.3.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects { allprojects {
repositories { repositories {
google() google()
mavenCentral() mavenCentral()
maven { url 'https://jitpack.io' }
} }
} }

View File

@@ -1,4 +1,4 @@
#org.gradle.jvmargs=-Xmx1536M #org.gradle.jvmargs=-Xmx1536M
org.gradle.jvmargs=-Xmx16384m org.gradle.jvmargs=-Xmx16384m
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true

View File

@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip

View File

@@ -0,0 +1,4 @@
storePassword=your_store_password_here
keyPassword=your_key_password_here
keyAlias=upload
storeFile=../upload-keystore.jks

View File

@@ -10,11 +10,18 @@ pluginManagement {
includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle")
plugins { repositories {
id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false google()
mavenCentral()
gradlePluginPortal()
} }
} }
include ":app" plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "8.7.3" apply false
id "org.jetbrains.kotlin.android" version "2.1.0" apply false
}
apply from: "${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle/app_plugin_loader.gradle" rootProject.name = "TinyComputer"
include ":app"

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -5,7 +5,7 @@
因为我不会,所以只能用自然语言记录一下制作步骤。 因为我不会,所以只能用自然语言记录一下制作步骤。
## 制作步骤 ## 制作步骤xfce和lxqt
### 安装Debian容器 ### 安装Debian容器
@@ -160,19 +160,35 @@ tmoe还会安装gnome-keyring由于之前我做xfce包时会造成VSCode反
#### cmatrix #### cmatrix
**20241112注意这一步可以略过因为cmatrix已被内置到patch.tar.gz**
这个是给快捷指令的彩蛋。下载cmatrix的包并将cmatrix文件提取放到/home/tiny/.local/bin里即可记得添加执行权限 这个是给快捷指令的彩蛋。下载cmatrix的包并将cmatrix文件提取放到/home/tiny/.local/bin里即可记得添加执行权限
#### WPS #### WPS
**20241112注意新版wps不再需要将整合模式改为多组件模式也能正常使用所以可以跳过软件设置修改的步骤**
- 软件设置修改 - 软件设置修改
- 从官网下载WPS linux arm64 deb安装包直接在图形界面点开用gdebi安装(正好测试一下gdebi是否能用) - 从官网下载WPS linux arm64 deb安装包直接在图形界面点开用gdebi安装(正好测试一下gdebi是否能用)
- 打开WPS-右上角设置-其他-切换窗口管理模式-整合模式改为多组件模式(否则一些设备在新建文档等操作时卡死,目前原因不明) - 打开WPS-右上角设置-其他-切换窗口管理模式-整合模式改为多组件模式(否则一些设备在新建文档等操作时卡死,目前原因不明)
- 使用gdebi(或自行)卸载WPS - 使用gdebi(或自行)卸载WPS
- 字体修补
- 在你的Windows电脑里的C:\Windows\Fonts文件夹找到symbol.ttf、webdings.ttf、wingding.ttf、WINGDNG2.TTF、WINGDNG3.TTF、MTEXTRA.TTF字体并放到容器/usr/share/fonts的某个文件夹下(我新建了extra文件夹并把这些字体放到里面)
- libtiff.so.5库修补 - libtiff.so.5库修补
- 切换到/lib/aarch64-linux-gnu文件夹创建软链把libtiff.so.6链接到libtiff.so.5 - 切换到/lib/aarch64-linux-gnu文件夹创建软链把libtiff.so.6链接到libtiff.so.5
- 或者找libtiff.so.5的包并安装,这样可能更好一些 - 或者找libtiff.so.5的包并安装,这样可能更好一些
- 预装ttf-mscorefonts-installer
- 这个包是WPS的依赖会在sourceforge下载字体可能会非常慢所以提前apt装好
### 额外步骤
- 将桌面壁纸的配置从monitorBuiltinDisplay改为monitorbuiltinxfcev1.0.99疑似Termux:X11显示器名称改变导致壁纸失效
- 修复用vscode打开文件时只打开了vscode本身v1.0.25):去掉/usr/share/applications/code-no-sandbox.desktop的Exec的--unity-launch
- 修复选择文本时会把文本发送到剪切板v1.0.25):在/usr/local/bin/startvnc文件的start_tmoe_xvnc()的start_win10_tigervnc行前面加入`vncconfig -set SendPrimary=0 SetPrimary=0`
- 修复系统更新时变英文v1.0.19):把/etc/locale.gen文件里包含zh_CN.UTF-8的那行代码解除注释
- 修复了xfce使用Termux:X11时占用过高v1.0.19):把底部面板的电量管理插件移除(右键-面板-面板首选项-项目)
- 不弹出终端窗口v1.0.18):把/etc/X11/xinit/Xsession文件倒数第二行open_terminal删掉
- 关闭垂直同步以使用Turnip+Zinkv1.0.17):把文件~/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml内vblank_mode值从auto改为off
- xfce版本安装了图片查看器ristretto和压缩文件管理器xarchiverv1.0.16
### 打包 ### 打包
@@ -192,5 +208,69 @@ tmoe还会安装gnome-keyring由于之前我做xfce包时会造成VSCode反
- .ICEauthority - .ICEauthority
- .Xauthority - .Xauthority
- 等等 - 等等
- 切换到root用户切换到根目录`/busybox tar -Jcpvf /debian.tar.xz --exclude=debian.tar.xz --exclude=dev --exclude=proc --exclude=system --exclude=storage --exclude=apex --exclude=sys --exclude=media/sd --exclude=busybox --exclude=".l2s.*" /` - 切换到root用户切换到根目录`/busybox tar -Jcpvf /debian.tar.xz --exclude=".l2s.*" bin boot etc home lib media mnt opt root run sbin sd srv tmp usr var`
## 制作步骤GXDE OS
### 咕咕咕
其实流程和前面差不多。基本上就是 装图形界面->修复中文->修复tmoe->修non-free-firmware->(随便看看空间占用,略)->修wps->准备busybox以便打包->添加Xsession文件以便启动
请看VCR
```
1 exit
2 sudo apt install sd/Download/gxde-source_1.0.1_all.deb
3 sudo apt install ./sd/Download/gxde-source_1.0.1_all.deb
4 sudo apt update
5 sudo apt install gxde-testing-source
6 sudo apt update
7 sudo apt install gxde-desktop-android --no-install-recommends
8 nano /etc/locale.gen
9 cd /usr/local/etc/tmoe-linux/git/share
10 nano replace.sh
11 ./replace.sh old-version
12 chmod +x replace.sh
13 ./replace.sh old-version
14 rm replace.sh
15 cd
16 tmoe
17 nano /etc/apt/sources.list
18 sudo apt update
19 nano /etc/apt/sources.list
20 sudo apt update
21 cd /var/log
22 ls -l
23 du -h --max-depth=1 | sort -h
24 cd ..
25 du -h --max-depth=1 | sort -h
26 cd cache/
27 ls -l
28 sudo apt update ttf-mscorefonts-installer
29 sudo apt install ttf-mscorefonts-installer
30 cd /usr/lib/aarch64-linux-gnu/
31 ln -s libtiff.so.6 libtiff.so.5
32 history
33 cd /
34 cp home/tiny/termux/home/.local/share/tmoe-linux/containers/proot/debian-bookworm_arm64/busybox .
35 cd /etc/X11/xinit/
36 ls
37 cp ~/termux/home/.local/share/tmoe-linux/containers/proot/debian-bookworm_arm64/etc/X11/xinit/Xsession .
38 ls -l Xsession
39 cd /
40 ls -l busybox
41 exit
42 sudo apt clean;sudo apt autoclean;sudo apt autoremove --purge || sudo apt autoremove
43 history
44 history > /sd/history.txt
```
关于Xsession文件
因为当前小小电脑代码写死了启动X11图形界面就通过执行/etc/X11/xinit/Xsession如果通过tmoe安装图形界面这个文件是自带的但安装GXDE没有通过tmoe所以随便写了个
```
rm -rf /run/dbus/pid
sudo dbus-daemon --system
export $(dbus-launch)
startgxde_android
```

247
extra/cross/chn_fonts.reg Normal file
View File

@@ -0,0 +1,247 @@
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink]
"Agency FB"="XiaolaiMonoSC-Regular.ttf"
"Alef"="XiaolaiMonoSC-Regular.ttf"
"Algerian"="XiaolaiMonoSC-Regular.ttf"
"Amiri Quran"="XiaolaiMonoSC-Regular.ttf"
"Amiri"="XiaolaiMonoSC-Regular.ttf"
"Arial Rounded MT Bold"="XiaolaiMonoSC-Regular.ttf"
"Arial"="XiaolaiMonoSC-Regular.ttf"
"Bahnschrift"="XiaolaiMonoSC-Regular.ttf"
"Baskerville Old Face"="XiaolaiMonoSC-Regular.ttf"
"Bauhaus 93"="XiaolaiMonoSC-Regular.ttf"
"Bell MT"="XiaolaiMonoSC-Regular.ttf"
"Berlin Sans FB Demi"="XiaolaiMonoSC-Regular.ttf"
"Berlin Sans FB"="XiaolaiMonoSC-Regular.ttf"
"Bernard MT Condensed"="XiaolaiMonoSC-Regular.ttf"
"Blackadder ITC"="XiaolaiMonoSC-Regular.ttf"
"Bodoni MT"="XiaolaiMonoSC-Regular.ttf"
"Book Antiqua"="XiaolaiMonoSC-Regular.ttf"
"Bookman Old Style"="XiaolaiMonoSC-Regular.ttf"
"Bookshelf Symbol 7"="XiaolaiMonoSC-Regular.ttf"
"Bradley Hand ITC"="XiaolaiMonoSC-Regular.ttf"
"Britannic Bold"="XiaolaiMonoSC-Regular.ttf"
"Broadway"="XiaolaiMonoSC-Regular.ttf"
"Brush Script MT"="XiaolaiMonoSC-Regular.ttf"
"Caladea"="XiaolaiMonoSC-Regular.ttf"
"Calibri"="XiaolaiMonoSC-Regular.ttf"
"Californian FB"="XiaolaiMonoSC-Regular.ttf"
"Calisto MT"="XiaolaiMonoSC-Regular.ttf"
"Cambria"="XiaolaiMonoSC-Regular.ttf"
"Candara"="XiaolaiMonoSC-Regular.ttf"
"Carlito"="XiaolaiMonoSC-Regular.ttf"
"Cascadia Code"="XiaolaiMonoSC-Regular.ttf"
"Cascadia Mono"="XiaolaiMonoSC-Regular.ttf"
"Castellar"="XiaolaiMonoSC-Regular.ttf"
"Centaur"="XiaolaiMonoSC-Regular.ttf"
"Century Gothic"="XiaolaiMonoSC-Regular.ttf"
"Century Schoolbook"="XiaolaiMonoSC-Regular.ttf"
"Century"="XiaolaiMonoSC-Regular.ttf"
"Chiller"="XiaolaiMonoSC-Regular.ttf"
"Colonna MT"="XiaolaiMonoSC-Regular.ttf"
"Comic Sans MS"="XiaolaiMonoSC-Regular.ttf"
"Consolas"="XiaolaiMonoSC-Regular.ttf"
"Constantia"="XiaolaiMonoSC-Regular.ttf"
"Cooper Black"="XiaolaiMonoSC-Regular.ttf"
"Copperplate Gothic Bold"="XiaolaiMonoSC-Regular.ttf"
"Copperplate Gothic Light"="XiaolaiMonoSC-Regular.ttf"
"Corbel"="XiaolaiMonoSC-Regular.ttf"
"Courier New"="XiaolaiMonoSC-Regular.ttf"
"Curlz MT"="XiaolaiMonoSC-Regular.ttf"
"David CLM"="XiaolaiMonoSC-Regular.ttf"
"David Libre"="XiaolaiMonoSC-Regular.ttf"
"DejaVu Math TeX Gyre"="XiaolaiMonoSC-Regular.ttf"
"DejaVu Sans Mono"="XiaolaiMonoSC-Regular.ttf"
"DejaVu Sans"="XiaolaiMonoSC-Regular.ttf"
"DejaVu Serif"="XiaolaiMonoSC-Regular.ttf"
"DengXian"="XiaolaiMonoSC-Regular.ttf"
"Dubai"="XiaolaiMonoSC-Regular.ttf"
"Ebrima"="XiaolaiMonoSC-Regular.ttf"
"Edwardian Script ITC"="XiaolaiMonoSC-Regular.ttf"
"Elephant"="XiaolaiMonoSC-Regular.ttf"
"Engravers MT"="XiaolaiMonoSC-Regular.ttf"
"Eras Bold ITC"="XiaolaiMonoSC-Regular.ttf"
"Eras Demi ITC"="XiaolaiMonoSC-Regular.ttf"
"Eras Light ITC"="XiaolaiMonoSC-Regular.ttf"
"Eras Medium ITC"="XiaolaiMonoSC-Regular.ttf"
"FZShuTi"="XiaolaiMonoSC-Regular.ttf"
"FZYaoTi"="XiaolaiMonoSC-Regular.ttf"
"FangSong"="XiaolaiMonoSC-Regular.ttf"
"Felix Titling"="XiaolaiMonoSC-Regular.ttf"
"Footlight MT Light"="XiaolaiMonoSC-Regular.ttf"
"Forte"="XiaolaiMonoSC-Regular.ttf"
"Frank Ruehl CLM"="XiaolaiMonoSC-Regular.ttf"
"Frank Ruhl Hofshi"="XiaolaiMonoSC-Regular.ttf"
"Franklin Gothic Book"="XiaolaiMonoSC-Regular.ttf"
"Franklin Gothic Demi Cond"="XiaolaiMonoSC-Regular.ttf"
"Franklin Gothic Demi"="XiaolaiMonoSC-Regular.ttf"
"Franklin Gothic Heavy"="XiaolaiMonoSC-Regular.ttf"
"Franklin Gothic Medium Cond"="XiaolaiMonoSC-Regular.ttf"
"Franklin Gothic Medium"="XiaolaiMonoSC-Regular.ttf"
"Freestyle Script"="XiaolaiMonoSC-Regular.ttf"
"French Script MT"="XiaolaiMonoSC-Regular.ttf"
"Gabriola"="XiaolaiMonoSC-Regular.ttf"
"Gadugi"="XiaolaiMonoSC-Regular.ttf"
"Garamond"="XiaolaiMonoSC-Regular.ttf"
"Gentium Basic"="XiaolaiMonoSC-Regular.ttf"
"Gentium Book Basic"="XiaolaiMonoSC-Regular.ttf"
"Georgia"="XiaolaiMonoSC-Regular.ttf"
"Gigi"="XiaolaiMonoSC-Regular.ttf"
"Gill Sans MT Condensed"="XiaolaiMonoSC-Regular.ttf"
"Gill Sans MT Ext Condensed Bold"="XiaolaiMonoSC-Regular.ttf"
"Gill Sans MT"="XiaolaiMonoSC-Regular.ttf"
"Gill Sans Ultra Bold Condensed"="XiaolaiMonoSC-Regular.ttf"
"Gill Sans Ultra Bold"="XiaolaiMonoSC-Regular.ttf"
"Gloucester MT Extra Condensed"="XiaolaiMonoSC-Regular.ttf"
"Goudy Old Style"="XiaolaiMonoSC-Regular.ttf"
"Goudy Stout"="XiaolaiMonoSC-Regular.ttf"
"Haettenschweiler"="XiaolaiMonoSC-Regular.ttf"
"Harlow Solid Italic"="XiaolaiMonoSC-Regular.ttf"
"Harrington"="XiaolaiMonoSC-Regular.ttf"
"High Tower Text"="XiaolaiMonoSC-Regular.ttf"
"HoloLens MDL2 Assets"="XiaolaiMonoSC-Regular.ttf"
"Impact"="XiaolaiMonoSC-Regular.ttf"
"Imprint MT Shadow"="XiaolaiMonoSC-Regular.ttf"
"Informal Roman"="XiaolaiMonoSC-Regular.ttf"
"Ink Free"="XiaolaiMonoSC-Regular.ttf"
"Javanese Text"="XiaolaiMonoSC-Regular.ttf"
"Jokerman"="XiaolaiMonoSC-Regular.ttf"
"Juice ITC"="XiaolaiMonoSC-Regular.ttf"
"KaiTi"="XiaolaiMonoSC-Regular.ttf"
"Kristen ITC"="XiaolaiMonoSC-Regular.ttf"
"Kunstler Script"="XiaolaiMonoSC-Regular.ttf"
"Leelawadee UI"="XiaolaiMonoSC-Regular.ttf"
"Leelawadee"="XiaolaiMonoSC-Regular.ttf"
"LiSu"="XiaolaiMonoSC-Regular.ttf"
"Liberation Mono"="XiaolaiMonoSC-Regular.ttf"
"Liberation Sans Narrow"="XiaolaiMonoSC-Regular.ttf"
"Liberation Sans"="XiaolaiMonoSC-Regular.ttf"
"Liberation Serif"="XiaolaiMonoSC-Regular.ttf"
"Linux Biolinum G"="XiaolaiMonoSC-Regular.ttf"
"Linux Libertine Display G"="XiaolaiMonoSC-Regular.ttf"
"Linux Libertine G"="XiaolaiMonoSC-Regular.ttf"
"Lucida Bright"="XiaolaiMonoSC-Regular.ttf"
"Lucida Calligraphy"="XiaolaiMonoSC-Regular.ttf"
"Lucida Console"="XiaolaiMonoSC-Regular.ttf"
"Lucida Fax"="XiaolaiMonoSC-Regular.ttf"
"Lucida Handwriting"="XiaolaiMonoSC-Regular.ttf"
"Lucida Sans Typewriter"="XiaolaiMonoSC-Regular.ttf"
"Lucida Sans Unicode"="XiaolaiMonoSC-Regular.ttf"
"Lucida Sans"="XiaolaiMonoSC-Regular.ttf"
"MS Gothic"="XiaolaiMonoSC-Regular.ttf"
"MS Outlook"="XiaolaiMonoSC-Regular.ttf"
"MS Reference Sans Serif"="XiaolaiMonoSC-Regular.ttf"
"MS Reference Specialty"="XiaolaiMonoSC-Regular.ttf"
"MT Extra"="XiaolaiMonoSC-Regular.ttf"
"MV Boli"="XiaolaiMonoSC-Regular.ttf"
"Magneto"="XiaolaiMonoSC-Regular.ttf"
"Maiandra GD"="XiaolaiMonoSC-Regular.ttf"
"Malgun Gothic"="XiaolaiMonoSC-Regular.ttf"
"Marlett"="XiaolaiMonoSC-Regular.ttf"
"Matura MT Script Capitals"="XiaolaiMonoSC-Regular.ttf"
"Microsoft Himalaya"="XiaolaiMonoSC-Regular.ttf"
"Microsoft JhengHei"="XiaolaiMonoSC-Regular.ttf"
"Microsoft New Tai Lue"="XiaolaiMonoSC-Regular.ttf"
"Microsoft PhagsPa"="XiaolaiMonoSC-Regular.ttf"
"Microsoft Sans Serif"="XiaolaiMonoSC-Regular.ttf"
"Microsoft Tai Le"="XiaolaiMonoSC-Regular.ttf"
"Microsoft Uighur"="XiaolaiMonoSC-Regular.ttf"
"Microsoft YaHei"="XiaolaiMonoSC-Regular.ttf"
"Microsoft Yi Baiti"="XiaolaiMonoSC-Regular.ttf"
"MingLiU-ExtB"="XiaolaiMonoSC-Regular.ttf"
"Miriam CLM"="XiaolaiMonoSC-Regular.ttf"
"Miriam Libre"="XiaolaiMonoSC-Regular.ttf"
"Miriam Mono CLM"="XiaolaiMonoSC-Regular.ttf"
"Mistral"="XiaolaiMonoSC-Regular.ttf"
"Modern No. 20"="XiaolaiMonoSC-Regular.ttf"
"Mongolian Baiti"="XiaolaiMonoSC-Regular.ttf"
"Monotype Corsiva"="XiaolaiMonoSC-Regular.ttf"
"Myanmar Text"="XiaolaiMonoSC-Regular.ttf"
"Nachlieli CLM"="XiaolaiMonoSC-Regular.ttf"
"Niagara Engraved"="XiaolaiMonoSC-Regular.ttf"
"Niagara Solid"="XiaolaiMonoSC-Regular.ttf"
"Nirmala UI"="XiaolaiMonoSC-Regular.ttf"
"Noto Kufi Arabic"="XiaolaiMonoSC-Regular.ttf"
"Noto Naskh Arabic"="XiaolaiMonoSC-Regular.ttf"
"Noto Sans Arabic"="XiaolaiMonoSC-Regular.ttf"
"Noto Sans Armenian"="XiaolaiMonoSC-Regular.ttf"
"Noto Sans Georgian"="XiaolaiMonoSC-Regular.ttf"
"Noto Sans Hebrew"="XiaolaiMonoSC-Regular.ttf"
"Noto Sans Lao"="XiaolaiMonoSC-Regular.ttf"
"Noto Sans Lisu"="XiaolaiMonoSC-Regular.ttf"
"Noto Sans"="XiaolaiMonoSC-Regular.ttf"
"Noto Serif Armenian"="XiaolaiMonoSC-Regular.ttf"
"Noto Serif Georgian"="XiaolaiMonoSC-Regular.ttf"
"Noto Serif Hebrew"="XiaolaiMonoSC-Regular.ttf"
"Noto Serif Lao"="XiaolaiMonoSC-Regular.ttf"
"Noto Serif"="XiaolaiMonoSC-Regular.ttf"
"OCR A Extended"="XiaolaiMonoSC-Regular.ttf"
"Old English Text MT"="XiaolaiMonoSC-Regular.ttf"
"Onyx"="XiaolaiMonoSC-Regular.ttf"
"OpenSymbol"="XiaolaiMonoSC-Regular.ttf"
"Palace Script MT"="XiaolaiMonoSC-Regular.ttf"
"Palatino Linotype"="XiaolaiMonoSC-Regular.ttf"
"Papyrus"="XiaolaiMonoSC-Regular.ttf"
"Parchment"="XiaolaiMonoSC-Regular.ttf"
"Perpetua Titling MT"="XiaolaiMonoSC-Regular.ttf"
"Perpetua"="XiaolaiMonoSC-Regular.ttf"
"Playbill"="XiaolaiMonoSC-Regular.ttf"
"Poor Richard"="XiaolaiMonoSC-Regular.ttf"
"Pristina"="XiaolaiMonoSC-Regular.ttf"
"Rage Italic"="XiaolaiMonoSC-Regular.ttf"
"Ravie"="XiaolaiMonoSC-Regular.ttf"
"Reem Kufi"="XiaolaiMonoSC-Regular.ttf"
"Rockwell Condensed"="XiaolaiMonoSC-Regular.ttf"
"Rockwell Extra Bold"="XiaolaiMonoSC-Regular.ttf"
"Rockwell"="XiaolaiMonoSC-Regular.ttf"
"Rubik"="XiaolaiMonoSC-Regular.ttf"
"STCaiyun"="XiaolaiMonoSC-Regular.ttf"
"STFangsong"="XiaolaiMonoSC-Regular.ttf"
"STHupo"="XiaolaiMonoSC-Regular.ttf"
"STKaiti"="XiaolaiMonoSC-Regular.ttf"
"STLiti"="XiaolaiMonoSC-Regular.ttf"
"STSong"="XiaolaiMonoSC-Regular.ttf"
"STXihei"="XiaolaiMonoSC-Regular.ttf"
"STXingkai"="XiaolaiMonoSC-Regular.ttf"
"STXinwei"="XiaolaiMonoSC-Regular.ttf"
"STZhongsong"="XiaolaiMonoSC-Regular.ttf"
"Sans Serif Collection"="XiaolaiMonoSC-Regular.ttf"
"Scheherazade"="XiaolaiMonoSC-Regular.ttf"
"Script MT Bold"="XiaolaiMonoSC-Regular.ttf"
"Segoe Fluent Icons"="XiaolaiMonoSC-Regular.ttf"
"Segoe MDL2 Assets"="XiaolaiMonoSC-Regular.ttf"
"Segoe Print"="XiaolaiMonoSC-Regular.ttf"
"Segoe Script"="XiaolaiMonoSC-Regular.ttf"
"Segoe UI Emoji"="XiaolaiMonoSC-Regular.ttf"
"Segoe UI Historic"="XiaolaiMonoSC-Regular.ttf"
"Segoe UI Symbol"="XiaolaiMonoSC-Regular.ttf"
"Segoe UI Variable"="XiaolaiMonoSC-Regular.ttf"
"Segoe UI"="XiaolaiMonoSC-Regular.ttf"
"Showcard Gothic"="XiaolaiMonoSC-Regular.ttf"
"SimHei"="XiaolaiMonoSC-Regular.ttf"
"SimSun"="XiaolaiMonoSC-Regular.ttf"
"SimSun-ExtB"="XiaolaiMonoSC-Regular.ttf"
"Sitka"="XiaolaiMonoSC-Regular.ttf"
"Snap ITC"="XiaolaiMonoSC-Regular.ttf"
"Stencil"="XiaolaiMonoSC-Regular.ttf"
"Sylfaen"="XiaolaiMonoSC-Regular.ttf"
"Symbol"="XiaolaiMonoSC-Regular.ttf"
"Tahoma"="XiaolaiMonoSC-Regular.ttf"
"Tempus Sans ITC"="XiaolaiMonoSC-Regular.ttf"
"Times New Roman"="XiaolaiMonoSC-Regular.ttf"
"Trebuchet MS"="XiaolaiMonoSC-Regular.ttf"
"Tw Cen MT Condensed Extra Bold"="XiaolaiMonoSC-Regular.ttf"
"Tw Cen MT Condensed"="XiaolaiMonoSC-Regular.ttf"
"Tw Cen MT"="XiaolaiMonoSC-Regular.ttf"
"Verdana"="XiaolaiMonoSC-Regular.ttf"
"Viner Hand ITC"="XiaolaiMonoSC-Regular.ttf"
"Vivaldi"="XiaolaiMonoSC-Regular.ttf"
"Vladimir Script"="XiaolaiMonoSC-Regular.ttf"
"Webdings"="XiaolaiMonoSC-Regular.ttf"
"Wide Latin"="XiaolaiMonoSC-Regular.ttf"
"Wingdings 2"="XiaolaiMonoSC-Regular.ttf"
"Wingdings 3"="XiaolaiMonoSC-Regular.ttf"
"Wingdings"="XiaolaiMonoSC-Regular.ttf"
"YouYuan"="XiaolaiMonoSC-Regular.ttf"
"Yu Gothic"="XiaolaiMonoSC-Regular.ttf"

View File

@@ -1,56 +0,0 @@
#!/bin/bash
sudo dpkg --add-architecture armhf
sudo apt update
sudo apt upgrade -y
sudo apt install -y cmake gcc-arm-linux-gnueabihf libc6:armhf
sudo apt reinstall -y libc6-dev
mkdir $HOME/.local/share/tiny/cross
rm -rf $HOME/.local/share/tiny/tmp
mkdir $HOME/.local/share/tiny/tmp
cd $HOME/.local/share/tiny/tmp
git clone https://mirror.ghproxy.com/https://github.com/ptitSeb/box86
if [ $? -ne 0 ]; then
git clone https://github.com/ptitSeb/box86
if [ $? -ne 0 ]; then
rm -rf $HOME/.local/share/tiny/tmp
echo '仓库克隆失败...退出安装...'
exit
fi
fi
git clone https://mirror.ghproxy.com/https://github.com/ptitSeb/box64
if [ $? -ne 0 ]; then
git clone https://github.com/ptitSeb/box64
if [ $? -ne 0 ]; then
rm -rf $HOME/.local/share/tiny/tmp
echo '仓库克隆失败...退出安装...'
exit
fi
fi
cd box86
mkdir build
cd build
cmake .. -DARM64=1 -DBAD_SIGNAL=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo
make -j
cd ../..
mv box86/build/box86 ../cross
mv box86/x86lib ../cross
cd box64
mkdir build
cd build
cmake .. -DARM64=1 -DBAD_SIGNAL=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo
make -j
cd ../..
mv box64/build/box64 ../cross
mv box64/x64lib ../cross
cd ..
rm -rf tmp
echo '安装完成'

View File

@@ -1,35 +0,0 @@
#!/bin/bash
rm -rf $HOME/.local/share/tiny/tmp
mkdir $HOME/.local/share/tiny/tmp
cd $HOME/.local/share/tiny/tmp
MIRROR_SITE=https://mirror.ghproxy.com
RELEASE_PAGE=https://github.com/doitsujin/dxvk/releases
LATEST_DXVK_TAG=$(curl -L $RELEASE_PAGE | grep -oP 'Version \K[^"]*</h2>' | cut -d "<" -f 1 | head -n 1)
if [ -z "$LATEST_DXVK_TAG" ]
then
LATEST_DXVK_TAG="2.3"
fi
LATEST_DXVK_NAME="dxvk-$LATEST_DXVK_TAG.tar.gz"
LATEST_DXVK_LINK="https://github.com/doitsujin/dxvk/releases/download/v$LATEST_DXVK_TAG/$LATEST_DXVK_NAME"
wget $MIRROR_SITE/$LATEST_DXVK_LINK
if [ $? -ne 0 ]; then
wget $LATEST_DXVK_LINK
if [ $? -ne 0 ]; then
rm -rf $HOME/.local/share/tiny/tmp
echo '下载失败...退出安装...'
exit
fi
fi
wineboot
tar xvf $LATEST_DXVK_NAME
mv dxvk-$LATEST_DXVK_TAG/x32/* ~/.wine/drive_c/windows/syswow64
mv dxvk-$LATEST_DXVK_TAG/x64/* ~/.wine/drive_c/windows/system32
cd ~
rm -rf $HOME/.local/share/tiny/tmp
echo '安装完成建议前往wine配置更新配置。'

View File

@@ -0,0 +1,80 @@
#!/bin/bash
echo "正在更新软件包..."
sudo apt update
sudo apt upgrade -y
REPO="AndreRH/hangover"
API_URL="https://api.github.com/repos/$REPO/releases/latest"
# 获取最新release的版本号并储存在变量中
latest_version=$(wget -qO- $API_URL | grep -oP '"tag_name": "\Khangover-\K([^"]+)' )
# 检查是否成功获取版本号
if [ -z "$latest_version" ]; then
echo "无法获取到最新版本号。"
exit 1
fi
echo "最新版本: $latest_version"
hangover_url="https://github.com/AndreRH/hangover/releases/download/hangover-${latest_version}/hangover_${latest_version}_debian12_bookworm_arm64.tar"
mirror_sites=(
"https://gh.llkk.cc/"
"https://github.moeyy.xyz/"
"https://mirror.ghproxy.com/"
""
)
mkdir -p /tmp/hangover
cd /tmp/hangover
for mirror in "${mirror_sites[@]}"; do
url="${mirror}${hangover_url}"
echo "尝试从 $url 下载Hangover..."
wget "${url}" -O hangover.tar
if [ $? -eq 0 ]; then
echo "成功下载Hangover"
break
fi
if [ -z "$mirror" ]; then
cd /tmp
rm -rf /tmp/hangover
echo "下载失败...退出安装..."
exit
fi
done
echo "正在安装Hangover..."
tar xvf hangover.tar
sudo apt install -y ./hangover*.deb
if [ $? -ne 0 ]; then
cd /tmp
rm -rf /tmp/hangover
echo "安装失败...退出安装..."
exit 1
fi
echo "正在初始化Wine..."
wineboot --init
echo "正在安装DXVK..."
tar xvf dxvk-v*.tar.gz
mv dxvk-v*/x32/* /home/tiny/.wine/drive_c/windows/syswow64
mv dxvk-v*/arm64ec/* /home/tiny/.wine/drive_c/windows/system32
echo "自动配置 DLL 覆盖..."
WINEDLLOVERRIDES="d3d8=n,d3d9=n,d3d10core=n,d3d11=n,dxgi=n" wine reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v d3d8 /d native /f >/dev/null 2>&1
WINEDLLOVERRIDES="d3d8=n,d3d9=n,d3d10core=n,d3d11=n,dxgi=n" wine reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v d3d9 /d native /f >/dev/null 2>&1
WINEDLLOVERRIDES="d3d8=n,d3d9=n,d3d10core=n,d3d11=n,dxgi=n" wine reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v d3d10core /d native /f >/dev/null 2>&1
WINEDLLOVERRIDES="d3d8=n,d3d9=n,d3d10core=n,d3d11=n,dxgi=n" wine reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v d3d11 /d native /f >/dev/null 2>&1
WINEDLLOVERRIDES="d3d8=n,d3d9=n,d3d10core=n,d3d11=n,dxgi=n" wine reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v dxgi /d native /f >/dev/null 2>&1
echo "正在修复字体..."
regedit "Z:\\home\\tiny\\.local\\share\\tiny\\extra\\chn_fonts.reg" && wine reg delete "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes" /va /f
cd /tmp
rm -rf /tmp/hangover
echo "安装完成"

View File

@@ -0,0 +1,64 @@
#!/bin/bash
echo "正在更新软件包..."
sudo apt update
sudo apt upgrade -y
hangover_url="https://github.com/AndreRH/hangover/releases/download/hangover-10.11/hangover_10.11_debian12_bookworm_arm64.tar"
latest_version="10.11"
mirror_sites=(
"https://gh.llkk.cc/"
"https://github.moeyy.xyz/"
"https://mirror.ghproxy.com/"
""
)
mkdir -p /tmp/hangover
cd /tmp/hangover
for mirror in "${mirror_sites[@]}"; do
url="${mirror}${hangover_url}"
echo "尝试从 $url 下载Hangover..."
wget "${url}" -O hangover.tar
if [ $? -eq 0 ]; then
echo "成功下载Hangover"
break
fi
if [ -z "$mirror" ]; then
cd /tmp
rm -rf /tmp/hangover
echo "下载失败...退出安装..."
exit
fi
done
echo "正在安装Hangover..."
tar xvf hangover.tar
sudo apt install -y ./hangover*.deb
if [ $? -ne 0 ]; then
cd /tmp
rm -rf /tmp/hangover
echo "安装失败...退出安装..."
exit 1
fi
echo "正在初始化Wine..."
wineboot --init
echo "正在安装DXVK..."
tar xvf dxvk-v*.tar.gz
mv dxvk-v*/x32/* /home/tiny/.wine/drive_c/windows/syswow64
mv dxvk-v*/arm64ec/* /home/tiny/.wine/drive_c/windows/system32
echo "自动配置 DLL 覆盖..."
WINEDLLOVERRIDES="d3d8=n,d3d9=n,d3d10core=n,d3d11=n,dxgi=n" wine reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v d3d8 /d native /f >/dev/null 2>&1
WINEDLLOVERRIDES="d3d8=n,d3d9=n,d3d10core=n,d3d11=n,dxgi=n" wine reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v d3d9 /d native /f >/dev/null 2>&1
WINEDLLOVERRIDES="d3d8=n,d3d9=n,d3d10core=n,d3d11=n,dxgi=n" wine reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v d3d10core /d native /f >/dev/null 2>&1
WINEDLLOVERRIDES="d3d8=n,d3d9=n,d3d10core=n,d3d11=n,dxgi=n" wine reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v d3d11 /d native /f >/dev/null 2>&1
WINEDLLOVERRIDES="d3d8=n,d3d9=n,d3d10core=n,d3d11=n,dxgi=n" wine reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v dxgi /d native /f >/dev/null 2>&1
echo "正在修复字体..."
regedit "Z:\\home\\tiny\\.local\\share\\tiny\\extra\\chn_fonts.reg" && wine reg delete "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes" /va /f
echo "安装完成"

View File

@@ -1,70 +0,0 @@
#!/bin/bash
sudo apt update
sudo apt upgrade -y
# Wine的64位依赖。box64会将amd64调用转换为arm64所以只需安装arm64库即可
# 依赖来自 dpkg-deb -I wine-stable-amd64_8.0.2~bookworm-1_amd64.deb
sudo apt install -y libasound2:arm64 libc6:arm64 libglib2.0-0:arm64 libgphoto2-6:arm64 libgphoto2-port12:arm64 \
libgstreamer-plugins-base1.0-0:arm64 libgstreamer1.0-0:arm64 libpcap0.8:arm64 libpulse0:arm64 libsane1:arm64 \
libudev1:arm64 libunwind8:arm64 libusb-1.0-0:arm64 libx11-6:arm64 libxext6:arm64 ocl-icd-libopencl1:arm64 \
libasound2-plugins:arm64 libncurses6:arm64 libcapi20-3:arm64 libcups2:arm64 libdbus-1-3:arm64 libfontconfig1:arm64 \
libfreetype6:arm64 libglu1-mesa:arm64 libgnutls30:arm64 libgsm1:arm64 libgssapi-krb5-2:arm64 libjpeg62-turbo:arm64 \
libkrb5-3:arm64 libodbc1:arm64 libosmesa6:arm64 libpng16-16:arm64 libsdl2-2.0-0:arm64 libv4l-0:arm64 \
libxcomposite1:arm64 libxcursor1:arm64 libxfixes3:arm64 libxi6:arm64 libxinerama1:arm64 libxrandr2:arm64 \
libxrender1:arm64 libxslt1.1:arm64 libxxf86vm1:arm64
# Wine的32位依赖。同理安装armhf而不是i386
# 依赖来自 dpkg-deb -I wine-stable-i386_8.0.2~bookworm-1_i386.deb
sudo apt install -y libasound2:armhf libc6:armhf libglib2.0-0:armhf libgphoto2-6:armhf libgphoto2-port12:armhf \
libgstreamer-plugins-base1.0-0:armhf libgstreamer1.0-0:armhf libpcap0.8:armhf libpulse0:armhf libsane1:armhf \
libudev1:armhf libusb-1.0-0:armhf libx11-6:armhf libxext6:armhf ocl-icd-libopencl1:armhf libasound2-plugins:armhf \
libncurses6:armhf libcapi20-3:armhf libcups2:armhf libdbus-1-3:armhf libfontconfig1:armhf libfreetype6:armhf \
libglu1-mesa:armhf libgnutls30:armhf libgsm1:armhf libgssapi-krb5-2:armhf libjpeg62-turbo:armhf libkrb5-3:armhf \
libodbc1:armhf libosmesa6:armhf libpng16-16:armhf libsdl2-2.0-0:armhf libv4l-0:armhf libxcomposite1:armhf \
libxcursor1:armhf libxfixes3:armhf libxi6:armhf libxinerama1:armhf libxrandr2:armhf libxrender1:armhf libxslt1.1:armhf \
libxxf86vm1:armhf
# 其他测试时认为可能需要的依赖
sudo apt install -y libvulkan1 libvulkan1:armhf
rm -rf $HOME/.local/share/tiny/tmp
mkdir $HOME/.local/share/tiny/tmp
cd $HOME/.local/share/tiny/tmp
MIRROR_SITE=https://mirror.ghproxy.com
RELEASE_PAGE=https://github.com/Kron4ek/Wine-Builds/releases
LATEST_WINE_TAG=proton-$(curl -L $RELEASE_PAGE | grep -oP 'Proton \K[^"]*</h2>' | cut -d "<" -f 1 | head -n 1) #proton
#LATEST_WINE_TAG=$(curl -L $RELEASE_PAGE | grep -oP 'Wine \K[^"]*</h2>' | cut -d "<" -f 1 | head -n 1) #vanilla
if [ -z "$LATEST_WINE_TAG" ] || [ "$LATEST_WINE_TAG" == "proton-" ]
then
LATEST_WINE_TAG=proton-8.0-4
fi
LATEST_WINE_NAME=wine-$LATEST_WINE_TAG-amd64.tar.xz
LATEST_WINE_LINK=$RELEASE_PAGE/download/$LATEST_WINE_TAG/$LATEST_WINE_NAME
wget $MIRROR_SITE/$LATEST_WINE_LINK
if [ $? -ne 0 ]; then
wget $LATEST_WINE_LINK
if [ $? -ne 0 ]; then
rm -rf $HOME/.local/share/tiny/tmp
echo '下载失败...退出安装...'
exit
fi
fi
tar xvf $LATEST_WINE_NAME
mv wine-$LATEST_WINE_TAG-amd64 ../cross/wine
cd ..
rm -rf tmp
echo '[Desktop Entry]
Name=Wine 启动器
Exec=wine64 start /unix %f
Icon=wine
Type=Application' > $HOME/.local/share/tiny/cross/wine.desktop
chmod +x $HOME/.local/share/tiny/cross/wine.desktop
echo '安装完成在启用wine后可以点击exe文件选择用wine启动。'
echo '初次运行时会自动进行一段时间的初始化工作。'
echo '程序的运行可能依赖一些配置或组件。比如一些使用directx的游戏可能需要安装dxvk。'

View File

@@ -1,83 +0,0 @@
#!/bin/bash
sudo apt update
sudo apt upgrade -y
# Wine的64位依赖。box64会将amd64调用转换为arm64所以只需安装arm64库即可
# 依赖来自 dpkg-deb -I wine-stable-amd64_8.0.2~bookworm-1_amd64.deb
sudo apt install -y libasound2:arm64 libc6:arm64 libglib2.0-0:arm64 libgphoto2-6:arm64 libgphoto2-port12:arm64 \
libgstreamer-plugins-base1.0-0:arm64 libgstreamer1.0-0:arm64 libpcap0.8:arm64 libpulse0:arm64 libsane1:arm64 \
libudev1:arm64 libunwind8:arm64 libusb-1.0-0:arm64 libx11-6:arm64 libxext6:arm64 ocl-icd-libopencl1:arm64 \
libasound2-plugins:arm64 libncurses6:arm64 libcapi20-3:arm64 libcups2:arm64 libdbus-1-3:arm64 libfontconfig1:arm64 \
libfreetype6:arm64 libglu1-mesa:arm64 libgnutls30:arm64 libgsm1:arm64 libgssapi-krb5-2:arm64 libjpeg62-turbo:arm64 \
libkrb5-3:arm64 libodbc1:arm64 libosmesa6:arm64 libpng16-16:arm64 libsdl2-2.0-0:arm64 libv4l-0:arm64 \
libxcomposite1:arm64 libxcursor1:arm64 libxfixes3:arm64 libxi6:arm64 libxinerama1:arm64 libxrandr2:arm64 \
libxrender1:arm64 libxslt1.1:arm64 libxxf86vm1:arm64
# Wine的32位依赖。同理安装armhf而不是i386
# 依赖来自 dpkg-deb -I wine-stable-i386_8.0.2~bookworm-1_i386.deb
sudo apt install -y libasound2:armhf libc6:armhf libglib2.0-0:armhf libgphoto2-6:armhf libgphoto2-port12:armhf \
libgstreamer-plugins-base1.0-0:armhf libgstreamer1.0-0:armhf libpcap0.8:armhf libpulse0:armhf libsane1:armhf \
libudev1:armhf libusb-1.0-0:armhf libx11-6:armhf libxext6:armhf ocl-icd-libopencl1:armhf libasound2-plugins:armhf \
libncurses6:armhf libcapi20-3:armhf libcups2:armhf libdbus-1-3:armhf libfontconfig1:armhf libfreetype6:armhf \
libglu1-mesa:armhf libgnutls30:armhf libgsm1:armhf libgssapi-krb5-2:armhf libjpeg62-turbo:armhf libkrb5-3:armhf \
libodbc1:armhf libosmesa6:armhf libpng16-16:armhf libsdl2-2.0-0:armhf libv4l-0:armhf libxcomposite1:armhf \
libxcursor1:armhf libxfixes3:armhf libxi6:armhf libxinerama1:armhf libxrandr2:armhf libxrender1:armhf libxslt1.1:armhf \
libxxf86vm1:armhf
rm -rf $HOME/.local/share/tiny/tmp
mkdir $HOME/.local/share/tiny/tmp
cd $HOME/.local/share/tiny/tmp
LNKA="https://mirrors.tuna.tsinghua.edu.cn/wine-builds/debian/dists/bookworm/main/binary-amd64/"
DEB_A1="wine-stable-amd64_8.0.2~bookworm-1_amd64.deb"
DEB_A2="wine-stable_8.0.2~bookworm-1_amd64.deb"
LNKB="https://mirrors.tuna.tsinghua.edu.cn/wine-builds/debian/dists/bookworm/main/binary-i386/"
DEB_B1="wine-stable-i386_8.0.2~bookworm-1_i386.deb"
# Install amd64-wine (64-bit) alongside i386-wine (32-bit)
echo -e "下载wine..."
wget ${LNKA}${DEB_A1}
wget ${LNKA}${DEB_A2}
wget ${LNKB}${DEB_B1}
wget https://mirror.ghproxy.com/https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
if [ $? -ne 0 ]; then
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
if [ $? -ne 0 ]; then
rm -rf $HOME/.local/share/tiny/tmp
echo '下载失败...退出安装...'
exit
fi
fi
echo -e "解压wine..."
dpkg-deb -x ${DEB_A1} wine-installer
dpkg-deb -x ${DEB_A2} wine-installer
dpkg-deb -x ${DEB_B1} wine-installer
echo -e "安装wine..."
mv wine-installer/opt/wine* ../cross/wine
mv winetricks ../cross
chmod +x $HOME/.local/share/tiny/cross/winetricks
cd ..
rm -rf tmp
echo '[Desktop Entry]
Name=Wine 启动器
Exec=wine start /unix %f
Icon=wine
Type=Application' > $HOME/.local/share/tiny/cross/wine.desktop
chmod +x $HOME/.local/share/tiny/cross/wine.desktop
echo '[Desktop Entry]
Name=winetricks 实用工具
Exec=winetricks
Icon=wine
Type=Application' > $HOME/.local/share/tiny/cross/winetricks.desktop
chmod +x $HOME/.local/share/tiny/cross/winetricks.desktop
echo '安装完成在启用wine后可以点击exe文件选择用wine启动。'
echo '程序的运行可能依赖一些配置或组件。比如一些使用directx的游戏可能需要安装dxvk。'
echo '如果缺失可以尝试使用winetricks安装。请务必保持耐心。'

View File

@@ -2,19 +2,19 @@
### assets.zip中的文件 ### assets.zip中的文件
- [busybox](https://github.com/meefik/busybox) - [Xserver XSDL, pulseaudio相关文件](https://github.com/pelya/commandergenius/tree/sdl_android/project/jni/application/xserver)。直接从Xserver XSDL的apk中的lib解包获得并还原了名称。
- [mediamtx相关](https://github.com/bluenviron/mediamtx)
- [tar](https://github.com/Rprop/tar-android-static)
- [Xserver XSDL, pulseaudio相关文件](https://github.com/pelya/commandergenius/tree/sdl_android/project/jni/application/xserver)
- [virgl](https://github.com/termux/termux-packages/tree/master/x11-packages/virglrenderer-android)
以上文件没有经过更改。
一般是使用了仓库直接提供的二进制文件或者是使用了仓库提供的patch编译而来。
- [proot](https://github.com/Cateners/proot), 使用[build-proot-android](https://github.com/green-green-avk/build-proot-android)脚本编译
- [Tmoe Linux, debian包来源](https://github.com/2moe/tmoe),制作了[容器文件xa*](build-tiny-rootfs.md) - [Tmoe Linux, debian包来源](https://github.com/2moe/tmoe),制作了[容器文件xa*](build-tiny-rootfs.md)
- getifaddrs_bridge_server见下面的介绍和getifaddrs_bridge子文件夹 - getifaddrs_bridge_server见下面的介绍和getifaddrs_bridge子文件夹
### jniLibs中的文件
除libexec_pulseaudio.so(pulseaudio可执行文件)来自Xserver XSDL的apk外所有文件均通过[termux-packages](https://github.com/termux-play-store/termux-packages)构建。[见这个修改后的仓库](https://github.com/tiny-computer/termux-packages)
运行scripts/generate-bootstraps.sh即可获得bootstraps压缩包其中会包含busybox、proot、tar、virglrenderer的可执行文件和依赖库。将可执行文件全部重命名为libexec_xxx.so的格式将依赖库全部抹去版本号放到jniLibs/arm64-v8a。
运行build-package.sh proot可在output文件夹找到loader和loader32重命名为libproot-loader.so和libproot-loader32.so放到jniLibs/arm64-v8a。
### patch.tar.gz中的文件 ### patch.tar.gz中的文件
#### extra/getifaddrs_bridge_client_lib.so: #### extra/getifaddrs_bridge_client_lib.so:
@@ -25,9 +25,21 @@ linux在需要数据时使用socket通知位于安卓的getifaddrs_bridge_ser
源码和编译信息在getifaddrs_bridge文件夹查看。 源码和编译信息在getifaddrs_bridge文件夹查看。
#### extra/install-box, extra/install-wine: #### extra/install-hangover, extra/install-hangover-stable:
这些是用于跨架构/跨系统支持的box86/box64和wine安装脚本。 这些是用于Windows应用支持的Hangover安装脚本。
#### extra/chn_fonts.reg:
修复wine显示方块字的注册表文件。
#### extra/libvulkan_freedreno.so, extra/freedreno_icd.aarch64.json:
Turnip驱动。根据[这里](https://github.com/xDoge26/proot-setup/issues/26#issuecomment-1712404849)和[这里](https://github.com/MastaG/mesa-turnip-ppa)编译
#### extra/cmatrix
快捷指令的彩蛋。原本放在容器里,但显然放这里更为合适
#### caj, edraw #### caj, edraw
@@ -41,3 +53,8 @@ linux在需要数据时使用socket通知位于安卓的getifaddrs_bridge_ser
微信的补丁。license, uos-lsb和uos-release来自星火的微信包或arch的wechat-uos打包我忘记到底是哪的了。不过都差不多 微信的补丁。license, uos-lsb和uos-release来自星火的微信包或arch的wechat-uos打包我忘记到底是哪的了。不过都差不多
libssl1.1来自debian官方源。deepin-elf-verifier是我打的空包。 libssl1.1来自debian官方源。deepin-elf-verifier是我打的空包。
#### font
[小赖字体](https://github.com/lxgw/kose-font)用于修复wine的方块字
其他字体用于避免wps报字体缺失的错误

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

34
ios/.gitignore vendored
View File

@@ -1,34 +0,0 @@
**/dgph
*.mode1v3
*.mode2v3
*.moved-aside
*.pbxuser
*.perspectivev3
**/*sync/
.sconsign.dblite
.tags*
**/.vagrant/
**/DerivedData/
Icon?
**/Pods/
**/.symlinks/
profile
xcuserdata
**/.generated/
Flutter/App.framework
Flutter/Flutter.framework
Flutter/Flutter.podspec
Flutter/Generated.xcconfig
Flutter/ephemeral/
Flutter/app.flx
Flutter/app.zip
Flutter/flutter_assets/
Flutter/flutter_export_environment.sh
ServiceDefinitions.json
Runner/GeneratedPluginRegistrant.*
# Exceptions to above rules.
!default.mode1v3
!default.mode2v3
!default.pbxuser
!default.perspectivev3

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>App</string>
<key>CFBundleIdentifier</key>
<string>io.flutter.flutter.app</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>App</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>11.0</string>
</dict>
</plist>

View File

@@ -1 +0,0 @@
#include "Generated.xcconfig"

View File

@@ -1 +0,0 @@
#include "Generated.xcconfig"

View File

@@ -1,614 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 54;
objects = {
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 97C146E61CF9000F007C117D /* Project object */;
proxyType = 1;
remoteGlobalIDString = 97C146ED1CF9000F007C117D;
remoteInfo = Runner;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
9705A1C41CF9048500538489 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
97C146EB1CF9000F007C117D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
9740EEB21CF90195004384FC /* Debug.xcconfig */,
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
9740EEB31CF90195004384FC /* Generated.xcconfig */,
);
name = Flutter;
sourceTree = "<group>";
};
331C8082294A63A400263BE5 /* RunnerTests */ = {
isa = PBXGroup;
children = (
331C807B294A618700263BE5 /* RunnerTests.swift */,
);
path = RunnerTests;
sourceTree = "<group>";
};
97C146E51CF9000F007C117D = {
isa = PBXGroup;
children = (
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
331C8082294A63A400263BE5 /* RunnerTests */,
);
sourceTree = "<group>";
};
97C146EF1CF9000F007C117D /* Products */ = {
isa = PBXGroup;
children = (
97C146EE1CF9000F007C117D /* Runner.app */,
331C8081294A63A400263BE5 /* RunnerTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
97C146FA1CF9000F007C117D /* Main.storyboard */,
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
97C147021CF9000F007C117D /* Info.plist */,
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
);
path = Runner;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
331C8080294A63A400263BE5 /* RunnerTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
buildPhases = (
331C807D294A63A400263BE5 /* Sources */,
331C807E294A63A400263BE5 /* Frameworks */,
331C807F294A63A400263BE5 /* Resources */,
);
buildRules = (
);
dependencies = (
331C8086294A63A400263BE5 /* PBXTargetDependency */,
);
name = RunnerTests;
productName = RunnerTests;
productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
97C146ED1CF9000F007C117D /* Runner */ = {
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
);
buildRules = (
);
dependencies = (
);
name = Runner;
productName = Runner;
productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1430;
ORGANIZATIONNAME = "";
TargetAttributes = {
331C8080294A63A400263BE5 = {
CreatedOnToolsVersion = 14.0;
TestTargetID = 97C146ED1CF9000F007C117D;
};
97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1;
LastSwiftMigration = 1100;
};
};
};
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 97C146E51CF9000F007C117D;
productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
97C146ED1CF9000F007C117D /* Runner */,
331C8080294A63A400263BE5 /* RunnerTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
331C807F294A63A400263BE5 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
97C146EC1CF9000F007C117D /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
);
name = "Thin Binary";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Run Script";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
331C807D294A63A400263BE5 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
97C146EA1CF9000F007C117D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
331C8086294A63A400263BE5 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 97C146ED1CF9000F007C117D /* Runner */;
targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
97C146FB1CF9000F007C117D /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
97C147001CF9000F007C117D /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
249021D3217E4FDB00AE95B9 /* Profile */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Profile;
};
249021D4217E4FDB00AE95B9 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.example.tinyComputer;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
};
name = Profile;
};
331C8088294A63A400263BE5 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = AE0B7B92F70575B8D7E0D07E /* Pods-RunnerTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.tinyComputer.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
};
name = Debug;
};
331C8089294A63A400263BE5 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 89B67EB44CE7B6631473024E /* Pods-RunnerTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.tinyComputer.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
};
name = Release;
};
331C808A294A63A400263BE5 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 640959BDD8F10B91D80A66BE /* Pods-RunnerTests.profile.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.tinyComputer.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
};
name = Profile;
};
97C147031CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
97C147041CF9000F007C117D /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
97C147061CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.example.tinyComputer;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
};
name = Debug;
};
97C147071CF9000F007C117D /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.example.tinyComputer;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
331C8088294A63A400263BE5 /* Debug */,
331C8089294A63A400263BE5 /* Release */,
331C808A294A63A400263BE5 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
97C147031CF9000F007C117D /* Debug */,
97C147041CF9000F007C117D /* Release */,
249021D3217E4FDB00AE95B9 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
97C147061CF9000F007C117D /* Debug */,
97C147071CF9000F007C117D /* Release */,
249021D4217E4FDB00AE95B9 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 97C146E61CF9000F007C117D /* Project object */;
}

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreviewsEnabled</key>
<false/>
</dict>
</plist>

View File

@@ -1,98 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1430"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</MacroExpansion>
<Testables>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "331C8080294A63A400263BE5"
BuildableName = "RunnerTests.xctest"
BlueprintName = "RunnerTests"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Profile"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
</Workspace>

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreviewsEnabled</key>
<false/>
</dict>
</plist>

View File

@@ -1,13 +0,0 @@
import UIKit
import Flutter
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}

View File

@@ -1,122 +0,0 @@
{
"images" : [
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@3x.png",
"scale" : "3x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@3x.png",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@3x.png",
"scale" : "3x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@3x.png",
"scale" : "3x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@1x.png",
"scale" : "1x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@1x.png",
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@1x.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@2x.png",
"scale" : "2x"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "Icon-App-83.5x83.5@2x.png",
"scale" : "2x"
},
{
"size" : "1024x1024",
"idiom" : "ios-marketing",
"filename" : "Icon-App-1024x1024@1x.png",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 462 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 704 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 586 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 862 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 862 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 762 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -1,23 +0,0 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "LaunchImage.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

View File

@@ -1,5 +0,0 @@
# Launch Screen Assets
You can customize the launch screen with your own desired assets by replacing the image files in this directory.
You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.

View File

@@ -1,37 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
</imageView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
<resources>
<image name="LaunchImage" width="168" height="185"/>
</resources>
</document>

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
</dependencies>
<scenes>
<!--Flutter View Controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
</scene>
</scenes>
</document>

View File

@@ -1,49 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>Tiny Computer</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>tiny_computer</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
</dict>
</plist>

View File

@@ -1 +0,0 @@
#import "GeneratedPluginRegistrant.h"

Some files were not shown because too many files have changed in this diff Show More