Flutter で構築された asmr.one のサードパーティ(非公式)クライアント。
アプリの表示名は Yuro、Flutter パッケージ名は asmrapp、API の接続先は asm.one です(サイト:https://asmr.one ,API:https://api.asmr.one/api)。
Yuro は、美しいアニメーションとモダンな UI によって、快適で楽しい ASMR 視聴体験を提供することを目指しています。
本リポジトリは asmroneapp/Yuro の GitHub フォークで、現在のアドレスは yuchi0531/Yuro です。asmr.one の**サードパーティ(非公式)**クライアントであり、公式とは関係ありません。
上流に対する主な変更点:
- 日本語 UI 化および ja/en ローカライズ
- Material 3 / Dynamic Color / 手動テーマカラー
- 設定画面
- 再生速度調整とスリープタイマー
- 検索・再生履歴
- NG フィルター
- プレイリストの作成・削除・更新・取得(CRUD)
- 作品内音声の全件プリフェッチ(キャッシュ)
- 通知バーからの ±15 秒スキップ
- タブレット・ワイド画面対応
- A-B リピート再生
- 分かりやすい API エラー表示
- Android 16 の通知権限対応
- おすすめタブのアイコン変更
- モダンな UI デザイン
- スムーズなアニメーション
- 安定したバックグラウンド再生で、バックグラウンドキルに強い
- 多層的なスマートキャッシュ機構
- 画像のスマートキャッシュ:カバーの読み込みを高速化し、重複読み込みをなくします
- 字幕のローカルキャッシュ:字幕の高速なマッチングと読み込みを実現します
- 音声ファイルのキャッシュ:重複ダウンロードを減らし、通信量を節約します
- 作品内音声の全件プリフェッチ(キャッシュ):作品全体の音声を事前にキャッシュし、オフライン利用に備えます。注意:これは永続保存ではなくキャッシュのため、システムによって削除される場合があり、完全なオフライン再生は保証されません
- サーバー負荷の軽減
- スマートなキャッシュ戦略でリソースを効率的に利用します
- 遅延読み込みにより無駄なリクエストを避けます
- 適切なキャッシュ削除機構でローカルストレージとのバランスを保ちます
- ASMR 再生コントロール
- 再生速度調整
- スリープタイマー
- A-B リピート再生
- 通知バーからの ±15 秒スキップ
- プレイリスト管理(CRUD)
- 検索機能
- 検索・再生履歴
- お気に入り機能
- NG フィルター(キーワードで作品を非表示)
- 日本語 / 英語ローカライズ(ja/en)
- Material 3 / Dynamic Color / 手動テーマカラー
- タブレット・ワイド画面対応
- 分かりやすい API エラー表示
- Android 16 の通知権限対応
コード品質と一貫性を保つため、開発ガイドラインを整備しています:
lib/ ├── core/ # コア機能 ├── data/ # データ層 ├── domain/ # ドメイン層 ├── presentation/ # プレゼンテーション層 └── common/ # 共通機能
- リポジトリをクローン
git clone https://github.com/yuchi0531/Yuro.git- 依存関係のインストール
flutter pub get- アプリの実行
flutter runリリースビルドの作成:
flutter build apk --release
flutter build appbundle --release署名情報は android/key.properties から読み込まれます。このファイルは Gradle により android/app/build.gradle で読み込まれ、 .gitignore で除外されているため、リポジトリにコミットしないでください。
注意:現在の
android/key.propertiesは Android 標準の debug keystore(androiddebugkey/debug.keystore)を指しています。そのためflutter build apk --releaseで生成されるリリースパッケージは実際にはデバッグキーで署名されており、正式リリースには使えません。正式リリースの前に、自前の Release/Upload keystore に置き換えてください:
keytoolで upload keystore を生成します(または既存の正式な鍵を使います)。android/key.propertiesのstoreFile、storePassword、keyPassword、keyAliasを正式な値に置き換えます。android/app/upload-keystore.jksなどの鍵ファイルは適切な場所に置き、.gitignoreで除外されることを確認します。flutter build apk --release/flutter build appbundle --releaseを再実行し、署名のフィンガープリントを確認します。
コントリビュートする前に、開発ガイドライン をお読みください。
本プロジェクトは Creative Commons 表示-非営利-継承ライセンス (CC BY-NC-SA) のもとで公開されています - 詳細は LICENSE をご覧ください。このライセンスは、クレジット表示と同一ライセンスでの公開を条件に、非営利目的での改変・共有を許可します。
本プロジェクトは asmroneapp/Yuro から派生した非公式のサードパーティクライアントです。原作者のクレジットとライセンス条項は上流リポジトリに従います。詳細は上流の LICENSE をご覧ください。