Skip to content

Commit 0ba5bd6

Browse files
Merge pull request #47 from Robert-Stackflow/test-cloud
2 parents 4091610 + 5327643 commit 0ba5bd6

File tree

348 files changed

+11461
-16349
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

348 files changed

+11461
-16349
lines changed

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,9 @@ jobs:
9797
git config --global core.longpaths true
9898
flutter doctor -v
9999
flutter pub get
100-
dart run intl_utils:generate
100+
flutter gen-l10n
101101
cd third-party/chewie
102-
dart run intl_utils:generate
102+
flutter gen-l10n
103103
104104
# Get app version
105105
- name: Get app version

README.md

Lines changed: 118 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,123 @@
1-
## Introduction
1+
# CloudOTP
22

3-
This is an awesome two-factor authenticator based on Flutter for Android and Windows which supports cloud backup.
3+
**CloudOTP** is a modern, cross-platform two-factor authenticator built with Flutter.
44

5-
## Highlights
5+
It supports Android, Windows, and Linux, offering secure cloud backups, powerful token management, and a polished UI optimized for mobile, tablet, and desktop.
66

7-
- Reconstructed based on Flutter architecture, supports Android and Windows
8-
- Support TOTP, HOTP, MOTP, Steam, Yandex
9-
- Supports scanning QR code to add, identify pictures, and manually enter keys
10-
- Supports custom icons and categories, supports sorting and multiple token layouts(Simple, Compact, List, Spotlight)
11-
- Supports dark mode, multiple languages, and multiple themes
12-
- Supports local backup and automatic backup, supports WebDav, Onedrive, Dropbox, S3 storage and other cloud backup methods
13-
- Supports import/export of encrypted files and URI lists
14-
- Supports importing data from Aegis, andOTP, Bitwarden, EntAuth, FreeOTP+, Google Authenticator, 2FAS, TOTP Authenticator, Winauth
15-
- Supports database encryption and gesture password
7+
## 🚀 Highlights
168

17-
## Screenshots
9+
### 🌐 Cross-Platform Support
10+
11+
- Built with Flutter, runs seamlessly on **Android**, **Windows**, and **Linux**
12+
- UI fully optimized for **mobile**, **tablet**, and **desktop** environments
13+
14+
### 🔐 OTP Protocols
15+
16+
- Supports **TOTP**, **HOTP**, **MOTP**, **Steam**, and **Yandex** token algorithms
17+
18+
### ➕ Token Management
19+
20+
- Add tokens via **QR code scanning**, **image recognition**, or **manual entry**
21+
- Custom icons and categories
22+
- Flexible layout modes: **Simple**, **Compact**, **List**, and **Spotlight**
23+
- Supports **sorting** and **searching** for quick access
24+
25+
### 🌓 Themes & UI
26+
27+
- Fully responsive and adaptive UI for all device sizes
28+
- Supports **dark mode**, **multiple color themes**, and **multi-language UI**
29+
30+
### ☁️ Backup & Sync
31+
32+
- Supports **local** and **automatic cloud backup**
33+
- Integrates with **WebDAV**, **OneDrive**, **Dropbox**, **S3**, **Google Drive**, **Box**, **Huawei Cloud**, **Aliyun Drive**
34+
35+
### 🔁 Import/Export
36+
37+
- Export/import as **encrypted files** or **URI lists**
38+
- One-click import from: **Aegis**, **andOTP**, **Bitwarden**, **EntAuth**, **FreeOTP+**, **Google Authenticator**, **2FAS**, **TOTP Authenticator**, **WinAuth**
39+
40+
### 🛡️ Security
41+
42+
- Encrypted database storage
43+
- Supports **gesture password** for app access
44+
- Supports **biometric unlock**
45+
46+
## 📦 Installation
47+
48+
### 📱 Android
49+
50+
**Choose the correct ABI.** If unsure, use the `universal` version.
51+
52+
| Variant | Description |
53+
| ------------- | ------------------------------------------------------------ |
54+
| `arm64-v8a` | For modern 64-bit Android devices (recommended for most users) |
55+
| `armeabi-v7a` | For most older 32-bit Android devices |
56+
| `x86_64` | For Android emulators or specific x86 tablets (not for regular devices) |
57+
| `universal` | Supports **all CPU architectures**, larger file size (recommended for most) |
58+
59+
### 💻 Windows
60+
61+
| Variant | Description |
62+
| ------------------ | ------------------------------------------------------------ |
63+
| `Installer (.exe)` | Standard Windows installer with Start Menu integration and auto-updates |
64+
| `Portable (.zip)` | No installation required, can be run from any folder or USB stick |
65+
66+
> **Note:** Currently, only **x86_64 (64-bit)** Windows systems are supported.
67+
68+
### 🐧 Linux
69+
70+
#### 📦 Recommended: Flatpak
71+
72+
Install via [Flathub](https://flathub.org/apps/com.cloudchewie.cloudotp):
73+
74+
```bash
75+
flatpak install flathub com.cloudchewie.cloudotp
76+
```
77+
78+
Once installed, launch it via your app menu or by running:
79+
80+
```bash
81+
flatpak run com.cloudchewie.cloudotp
82+
```
83+
84+
#### 📥 Direct Downloads
85+
86+
| Architecture | Formats Available | Notes |
87+
| ------------ | ----------------- | ----------------------------- |
88+
| `x86_64` | `.deb`, `.tar.gz` | For most modern Linux systems |
89+
| `arm64` | `.deb`, `.tar.gz` | For devices like Raspberry Pi |
90+
91+
## 🧪 Development Setup
92+
93+
```bash
94+
git clone https://github.com/Robert-Stackflow/CloudOTP.git
95+
cd cloudotp
96+
flutter pub get
97+
flutter gen-l10n
98+
cd third-party/chewie
99+
flutter gen-l10n
100+
cd ../../
101+
flutter run -d windows # or android, linux
102+
````
103+
104+
## 📝 Roadmap
105+
106+
* [ ] iOS support (via macOS build)
107+
* [ ] Custom theme
108+
* [ ] Import custom icons
109+
110+
## 🤝 Contributing
111+
112+
Contributions, issues and feature requests are welcome!
113+
114+
Feel free to check the [issues page](https://github.com/Robert-Stackflow/CloudOTP/issues) or submit a PR.
115+
116+
## 📄 License
117+
118+
This project is licensed under the GPL-3.0 License - see the [LICENSE](LICENSE) file for details.
119+
120+
## 📷 Screenshots
18121

19122
<img src="tools/art/mobile_1.png" alt="Mobile_1" style="zoom: 25%;" />
20123

@@ -24,4 +127,5 @@ This is an awesome two-factor authenticator based on Flutter for Android and Win
24127

25128
<img src="tools/art/mobile_3.png" alt="Mobile_3" style="zoom: 25%;" />
26129

27-
<img src="tools/art/desktop_2.png" alt="Desktop_2" style="zoom: 25%;" />
130+
<img src="tools/art/desktop_2.png" alt="Desktop_2" style="zoom: 25%;" />
131+

README_CN.md

Lines changed: 113 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,130 @@
1-
## 介绍
1+
# CloudOTP
22

3-
基于 Flutter 的双因素验证器,支持Android和Windows平台,支持云备份
3+
**CloudOTP** 是一款现代、跨平台的双因素身份验证器,使用 Flutter 构建
44

5-
## Highlights
5+
支持 Android、Windows 和 Linux,提供安全的云备份、强大的令牌管理功能。
66

7-
- 基于Flutter架构重构,支持Android和Windows
8-
- 支持TOTP、HOTP、MOTP、Steam、Yandex
9-
- 支持扫码添加、识别图片、手动输入密钥
10-
- 支持自定义图标和分类、支持排序和多种令牌布局(简洁、紧凑、列表、聚焦)
11-
- 支持深色模式、多种语言、多种主题
12-
- 支持本地备份和自动备份、支持WebDav、Onedrive、GoogleDrive、Dropbox、S3存储等多种云备份方式
13-
- 支持导入/导出加密文件、URI列表
14-
- 支持从Aegis、andOTP、Bitwarden、EntAuth、FreeOTP+、Google Authenticator、2FAS、TOTP Authenticator、Winauth导入数据
15-
- 支持数据库加密、手势密码
7+
## 🚀 功能亮点
168

17-
## Screenshots
9+
### 🌐 跨平台支持
1810

19-
<img src="tools/art/mobile_1.png" alt="Mobile_1" style="zoom: 25%;" />
11+
- 基于 Flutter 构建,可在 **Android****Windows****Linux** 上流畅运行
12+
- 界面为 **手机****平板****桌面** 环境精心优化
2013

21-
<img src="tools/art/desktop_1.png" alt="Desktop_1" style="zoom: 25%;" />
14+
### 🔐 OTP 协议支持
2215

23-
<img src="tools/art/mobile_2.png" alt="Mobile_2" style="zoom: 25%;" />
16+
- 支持 **TOTP****HOTP****MOTP****Steam****Yandex** 等令牌算法
2417

25-
<img src="tools/art/mobile_3.png" alt="Mobile_3" style="zoom: 25%;" />
18+
### ➕ 令牌管理
19+
20+
- 通过 **二维码扫描****图片识别****手动输入** 添加令牌
21+
- 支持自定义图标与分类
22+
- 多种布局模式:**简洁****紧凑****列表****聚焦**
23+
- 支持 **排序****搜索**
24+
25+
### 🌓 主题与界面
26+
27+
- 完全响应式和自适应 UI,适配所有设备尺寸
28+
- 支持 **深色模式****多种配色主题****多语言界面**
29+
30+
### ☁️ 云备份与同步
31+
32+
- 支持 **本地备份****自动云备份**
33+
- 集成多种云服务:**WebDAV****OneDrive****Dropbox****S3****Google Drive****Box****华为云****阿里云盘**
34+
35+
### 🔁 导入与导出
36+
37+
- 支持导出/导入为 **加密文件****URI 列表**
38+
- 一键导入支持:**Aegis****andOTP****Bitwarden****EntAuth****FreeOTP+****Google Authenticator****2FAS****TOTP Authenticator****WinAuth**
39+
40+
### 🛡️ 安全性
41+
42+
- 本地数据库加密存储
43+
- 支持 **手势密码** 解锁
44+
- 支持 **生物识别** 解锁
45+
46+
## 📦 安装指南
47+
48+
### 📱 Android
49+
50+
**请选择合适的 ABI 架构版本,**如不确定设备架构,建议下载 `universal` 版本
51+
52+
| 版本 | 说明 |
53+
| ------------- | ---------------------------------------------------------- |
54+
| `arm64-v8a` | 适用于大多数现代 64 位 Android 设备(推荐) |
55+
| `armeabi-v7a` | 适用于多数旧款 32 位 Android 设备 |
56+
| `x86_64` | 适用于 Android 模拟器或部分 x86 平板(不推荐普通用户使用) |
57+
| `universal` | 支持所有 CPU 架构,文件体积较大(推荐大多数用户使用) |
58+
59+
### 💻 Windows
60+
61+
| 版本 | 说明 |
62+
| ------------------ | ----------------------------------------- |
63+
| `Installer (.exe)` | 标准安装程序,支持自动更新 |
64+
| `Portable (.zip)` | 免安装版,可直接运行于任意文件夹或 U 盘中 |
2665

27-
<img src="tools/art/desktop_2.png" alt="Desktop_2" style="zoom: 25%;" />
66+
> **注意:** 当前仅支持 **x86_64(64 位)** 的 Windows 系统。
2867
29-
## TODOs
68+
### 🐧 Linux
3069

31-
- 桌面端支持
70+
#### 📦 推荐方式:Flatpak 安装
3271

33-
- 多窗口支持
34-
- 快捷键功能优化
72+
可通过 [Flathub](https://flathub.org/apps/com.cloudchewie.cloudotp) 安装:
3573

36-
- 小功能/小Bug
74+
```bash
75+
flatpak install flathub com.cloudchewie.cloudotp
76+
```
3777

38-
- 开机自启动后最小化到托盘
78+
安装后可通过应用菜单启动,或运行:
3979

40-
- 托盘锁定功能——未设置/已禁用
41-
- 修改语言时Tabbar全部未随之更改
80+
```bash
81+
flatpak run com.cloudchewie.cloudotp
82+
```
4283

43-
- 次优先级
84+
#### 📥 直接下载
85+
86+
| 架构 | 提供格式 | 说明 |
87+
| -------- | ----------------- | --------------------------------- |
88+
| `x86_64` | `.deb`, `.tar.gz` | 适用于大多数现代 Linux 系统 |
89+
| `arm64` | `.deb`, `.tar.gz` | 适用于 Raspberry Pi 等 ARM64 设备 |
90+
91+
## 🧪 开发环境配置
92+
93+
```bash
94+
git clone https://github.com/Robert-Stackflow/CloudOTP.git
95+
cd cloudotp
96+
flutter pub get
97+
flutter gen-l10n
98+
cd third-party/chewie
99+
flutter gen-l10n
100+
cd ../../
101+
flutter run -d windows # 也可指定 android、linux 等平台
102+
```
103+
104+
## 📝 开发计划
105+
106+
* [ ] iOS 支持(通过 macOS 构建)
107+
* [ ] 自定义主题
108+
* [ ] 导入自定义图标
109+
110+
## 🤝 欢迎贡献
111+
112+
欢迎提交 PR、反馈问题或提出功能建议!
113+
114+
你可以浏览 [issues 页面](https://github.com/Robert-Stackflow/CloudOTP/issues),或者直接提交代码贡献
115+
116+
## 📄 许可证
117+
118+
本项目遵循 GPL-3.0 协议,详情请查阅 [LICENSE](https://chatgpt.com/c/LICENSE) 文件
119+
120+
## 📷 截图
121+
122+
<img src="tools/art/mobile_1.png" alt="Mobile_1" style="zoom: 25%;" />
123+
124+
<img src="tools/art/desktop_1.png" alt="Desktop_1" style="zoom: 25%;" />
125+
126+
<img src="tools/art/mobile_2.png" alt="Mobile_2" style="zoom: 25%;" />
127+
128+
<img src="tools/art/mobile_3.png" alt="Mobile_3" style="zoom: 25%;" />
44129

45-
- 自定义主题
46-
- 导入字体文件
47-
- icon逻辑修改——同一个icon多种匹配规则
130+
<img src="tools/art/desktop_2.png" alt="Desktop_2" style="zoom: 25%;" />

android/app/build.gradle

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,13 @@ android {
3939
}
4040

4141
kotlinOptions {
42-
jvmTarget = '1.8'
42+
jvmTarget = '17'
43+
}
44+
45+
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
46+
kotlinOptions {
47+
jvmTarget = "17"
48+
}
4349
}
4450

4551
defaultConfig {
@@ -63,7 +69,6 @@ android {
6369
release {
6470
signingConfig signingConfigs.release
6571
minifyEnabled true
66-
// useProguard true
6772
shrinkResources true
6873
zipAlignEnabled true
6974
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
@@ -74,6 +79,10 @@ android {
7479
}
7580
}
7681

82+
kotlin {
83+
jvmToolchain(17)
84+
}
85+
7786
flutter {
7887
source '../..'
7988
}

android/app/proguard-rules.pro

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,14 @@
1111

1212
-keepattributes *Annotation*
1313

14-
-keepattributes SourceFile,LineNumberTable
14+
-dontwarn com.google.android.play.core.splitcompat.SplitCompatApplication
15+
-dontwarn com.google.android.play.core.splitinstall.SplitInstallException
16+
-dontwarn com.google.android.play.core.splitinstall.SplitInstallManager
17+
-dontwarn com.google.android.play.core.splitinstall.SplitInstallManagerFactory
18+
-dontwarn com.google.android.play.core.splitinstall.SplitInstallRequest$Builder
19+
-dontwarn com.google.android.play.core.splitinstall.SplitInstallRequest
20+
-dontwarn com.google.android.play.core.splitinstall.SplitInstallSessionState
21+
-dontwarn com.google.android.play.core.splitinstall.SplitInstallStateUpdatedListener
22+
-dontwarn com.google.android.play.core.tasks.OnFailureListener
23+
-dontwarn com.google.android.play.core.tasks.OnSuccessListener
24+
-dontwarn com.google.android.play.core.tasks.Task

android/app/src/main/AndroidManifest.xml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@
66
<uses-permission android:name="android.permission.VIBRATE" />
77
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32"/>
88
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
9-
<uses-permission android:name="android.permission.READ_MEDIA_VIDEOS" />
10-
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
11-
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
12-
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
139
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
1410
<uses-permission android:name="android.permission.INTERNET" />
1511

0 commit comments

Comments
 (0)