Amaze File Managerは、Android向けのMaterial Designベースのファイルマネージャーです。ローカルストレージの基本操作に加え、クラウド接続、FTP/SSHサーバー機能、暗号化、アーカイブ圧縮・展開、アプリ管理まで備えたオープンソースアプリです。Google Play、F-Droid、IzzyOnDroidなど複数チャネルで配布されています。
コードはAndroidアプリのGradleマルチフレーバー構成になっており、flavorDimensionsで「fdroid」と「play」を分けています。fdroidフレーバーでは独自実装のRarExtractor・Billing・CloudRailスタブを使い、playフレーバーでは課金や商用クラウドSDKを使う構造です。ファイル操作はHybridFileParcelableというモデルを軸に、OpenModeでローカル・SMB・SFTP・クラウドなどの種別を抽象化しています。コピー・削除・暗号化・圧縮解凍はAbstractProgressiveServiceを継承したCopyService、DeleteTask、EncryptService、ExtractServiceなどのAndroidサービスやAsyncTaskが担当し、進捗はRxJavaやコールバックで画面に伝えます。FTPサーバー機能はFtpService・FtpReceiver・FtpTileServiceで構成され、データベース層はRoom(UtilitiesDatabase・ExplorerDatabase)でブックマーク・履歴・SFTP接続情報・暗号化エントリなどを管理します。UtilsHandlerTestやHybridFileParcelableTestなどのJUnit/Espressoテストが、暗号化URIのエンコードやファイル名変更などの個別ロジックを検証しています。
- STEP 01
app/build.gradleを見ると、fdroidとplayの2つのproductFlavorがあり、Android Studioでビルドする際にどちらのフレーバーを選ぶかで依存ライブラリ(RARサポートや課金処理など)が変わることが分かります。
- STEP 02
AndroidManifest.xmlやFtpService.ktの構成から、アプリ内でFTPサーバーを起動するとKEY_PREFERENCE_SECUREなどの設定によりFTPSまで切り替えられることを確認できます。
- STEP 03
androidTestフォルダのFtpServiceEspressoTestを実行すると、実機またはエミュレータ上でFTPサーバーを起動し、FTPClientで実際にログイン・アップロード・ダウンロードまで検証する流れを体験できます。
- STEP 04
UtilsHandlerTestを動かすと、SSH接続文字列(ssh://user:pass@host:port形式)のパスワード部分を暗号化・復号する処理が、特殊文字を含むケースでも壊れないことを確認できます。
- STEP 05
Android 11以降の実機では、StoragePermissionHelperが示すように「すべてのファイルへのアクセス」権限を手動で許可するダイアログ操作が必要になります。
ビルドすればMaterial Designのファイルブラウザが手に入り、コピー・削除・圧縮解凍・暗号化・FTPSFTP接続・アプリのバックアップアンインストールといった操作が1つのアプリ内で行えます。fdroidフレーバーならクラウド連携は限定的なスタブ実装、playフレーバーなら追加のクラウドプラグインと連動する構成です。
READMEには「KitKat端末の外部SDカードでは読み書きが不安定で、カットペーストでファイルを失う可能性がある」と明記されており、古い端末では注意が必要です。
buildConfigFieldにCRYPTO_IVやFTP_SERVER_KEYSTORE_PASSWORDが固定文字列でソースに埋め込まれており、暗号化・FTPS機能のセキュリティ強度は鍵管理の実装次第で評価が変わります。
クラウド連携機能はfdroidフレーバーでは独自のスタブ実装(com.cloudrail.si以下)に置き換わっているため、Google Playのクラウドプラグインと同じ体験にはならない可能性があります。
Androidアプリのため、提示されたファイルだけではUIの見た目や実機固有の権限ダイアログの挙動までは確認できず、実際の操作感は実機テストでしか分かりません。
ローカルファイル操作に加えてFTPSFTPサーバーやAES暗号化、アーカイブ処理まで欲しいAndroidユーザーに向いています。GPLライセンスで広告や課金なしという方針もREADMEから確認できます。ソース構成(サービス分離・Room DB・Espressoテスト群)は実務的で、CI設定やテストコードの存在から継続的に検証されている実装だと判断できます。ただし暗号鍵のハードコードなど細部は実機でのセキュリティ検証が必要で、今回の分析はコードと設定ファイルの記述に基づく推測を含みます。