広告ブロック・指紋防御・コンテナ・拡張機能・カスタムリクエストを全部盛りにしたAndroidブラウザの設計仕様
BAKU (バク) は Helium (Chromium 147 fork) を Android 向けにさらに拡張する個人プロジェクトです。Brave / Firefox / Vivaldi が提供する強力なプライバシー機能をひとつのアプリに統合し、リクエスト改造とフィンガープリント防御まで踏み込んだ「プライバシー全部入り」を目指します。
このリポジトリは設計仕様と実装方針の記録です。実装本体は Helium ツリー内 (約 100GB) に存在し、ここでは仕様 / アーキテクチャ / ハマりどころをまとめています。
⚠️ 現状ステータス: APK ビルドまで成功、起動経路で問題が残るため初回リリースはまだ。 詳細は TODO.md と LESSONS.md 参照。
| カテゴリ | 機能 | 状態 |
|---|---|---|
| 広告ブロック | Brave風 Shields、フィルタリスト 7 種、要素ピッカー、サイト別ホワイトリスト | 🟡 本体動作 / フィルタDL未配線 |
| 指紋防御 | Canvas/WebGL/Audio/Font/HW/Screen/WebRTC/Battery/Plugins shim、3 段階強度 | 🟢 実装済 |
| リクエスト改造 | UA preset 10種+カスタム / Accept-Language / Referer policy / Client Hints / 任意ヘッダ追加 | 🟢 実装済 |
| コンテナタブ | Firefox風、コンテナごと UA / Header / FP 強度を変更 | 🟡 Cookie隔離は未実装 |
| 拡張機能 | uBlock Origin / Tampermonkey / ModHeader を同梱 | 🔴 install経路は要追加実装 |
| ジェスチャー | エッジスワイプで戻る/進む/リロード/タブ切替 | 🟢 実装済 |
| ユーザースクリプト | Tampermonkey互換 @match、CSS 注入も可 |
🟢 実装済 |
| 履歴暗号化 | Android Keystore AES-256-GCM、PBKDF2 600k iter | 🔴 SQLCipher統合まで強制OFF |
| タブ管理 | グループ + 6時間アイドルで自動 suspend、ピン留め対応 | 🟢 実装済 |
| 設定 | 検索可能、JSON 一括 export/import、工場リセット | 🟢 実装済 |
| ブックマーク | フラットなタグ層、Auto-tag 規則、HTML/JSON IO | 🟢 実装済 |
| 翻訳 | Google Translate / DeepL ラッパー (要 API key) | 🟢 実装済 |
| その他 | PWA、PiP、スクリーンショット (MediaStore Q+)、PDF、TabbedActivity 統合 | 🟢 実装済 |
凡例: 🟢 実装済 / 🟡 部分動作 / 🔴 未実装または stub
flowchart TB
Manifest["AndroidManifest.xml<br/>(BAKU activities + alias)"]
Manifest --> IntroAct["BakuIntroActivity<br/>(起動アニメ + CommandLine bridge)"]
Manifest --> SettingsAct["BakuMainSettingsActivity<br/>(設定ハブ)"]
Manifest --> CCT["BakuCustomTabsForwardActivity<br/>(他アプリからのVIEW intent)"]
IntroAct --> ChromeTabbed["ChromeTabbedActivity<br/>(Chromium本体)"]
ChromeTabbed --> ActIntegration["BakuActivityIntegration.attach()<br/>(全機能のwiring起点)"]
ActIntegration --> Gestures["BakuGestureAttacher<br/>(Window.Callback chain)"]
ActIntegration --> JsInjector["BakuJsInjector<br/>(TabObserver + 4s polling)"]
ActIntegration --> TabSuspend["BakuTabSuspendWorker<br/>(30分周期、daemon thread)"]
ActIntegration --> ChromiumPrefs["BakuChromiumPrefs<br/>(reflection経由でPrefService)"]
ActIntegration --> Shields["BakuShieldsManager<br/>(stats batch flush)"]
JsInjector --> FpDefense["BakuFingerprintDefense<br/>(JS shim生成)"]
JsInjector --> UserScripts["BakuUserScripts<br/>(Tampermonkey互換)"]
JsInjector --> GeoOverride["BakuGeoOverride<br/>(緯度経度偽装)"]
CppLayer["chrome/browser/baku/<br/>(C++ throttle + JNI bridge)"]
CppLayer --> Throttle["BakuRequestThrottle<br/>(URLLoaderThrottle)"]
CppLayer --> ExtLoader["BakuExtensionLoader<br/>(CRX scan)"]
CppLayer --> HistGuard["BakuHistoryGuard<br/>(Profile shutdown observer)"]
CppLayer --> StorageBridge["BakuStoragePartitionBridge<br/>(Container Cookie isolation - stub)"]
CppLayer --> ExtraParts["ChromeBrowserMainExtraPartsBaku<br/>(PostProfileInit hook)"]
BUILDgn["BUILD.gn<br/>(chrome/android + chrome/browser/baku)"]
BUILDgn -.- ActIntegration
BUILDgn -.- CppLayer
詳細は ARCHITECTURE.md。
| ファイル | 内容 |
|---|---|
| SPEC.md | 全機能の詳細仕様 (UI / 設定キー / JS shim / 暗号方式まで) |
| ARCHITECTURE.md | Kotlin 層 / C++ 層 / JNI / Manifest 構造 |
| BUILD.md | WSL2 でのビルド手順 |
| TODO.md | 未実装項目と既知の制限 |
| LESSONS.md | 開発中ハマったポイント (Werror系警告、resource衝突、起動経路issue 等) |
| 層 | 技術 |
|---|---|
| ベース | Helium (imputnet/helium-android) — Chromium 147 fork |
| 言語 | Kotlin 2.0 + Java 21 + C++23 |
| ランタイム | Android API 29+ (target 36) |
| ビルド | GN + Siso (ninja互換) on WSL2 Ubuntu 24.04 |
| 署名 | apksigner v3 + zipalign |
| native bridge | jni_zero (@JNINamespace / @NativeMethods) |
- Helium — ベースとなっている Chromium fork (GPL-2.0)
- Chromium — 上流ブラウザエンジン
- Vanadium patches — Helium が取り込んでいる強化パッチ群
- 機能設計の参考: Brave / Firefox Multi-Account Containers / uBlock Origin
GPL-2.0 (Helium / Chromium 由来の継承)。詳細は LICENSE を参照。