Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Android11におけるローカルストレージアクセスの辛み
Search
wa2c
November 27, 2020
Programming
3
2.8k
Android11におけるローカルストレージアクセスの辛み
wa2c
November 27, 2020
Tweet
Share
More Decks by wa2c
See All by wa2c
DocumentsProviderアプリを作ってみた
wa2c
0
680
Other Decks in Programming
See All in Programming
RDoc meets YARD
okuramasafumi
4
170
FindyにおけるTakumi活用と脆弱性管理のこれから
rvirus0817
0
540
AI時代のUIはどこへ行く?
yusukebe
18
9.1k
アルテニア コンサル/ITエンジニア向け 採用ピッチ資料
altenir
0
110
より安全で効率的な Go コードへ: Protocol Buffers Opaque API の導入
shwatanap
2
760
個人軟體時代
ethanhuang13
0
330
奥深くて厄介な「改行」と仲良くなる20分
oguemon
1
560
知っているようで知らない"rails new"の世界 / The World of "rails new" You Think You Know but Don't
luccafort
PRO
1
190
Compose Multiplatform × AI で作る、次世代アプリ開発支援ツールの設計と実装
thagikura
0
170
Azure SRE Agentで運用は楽になるのか?
kkamegawa
0
2.5k
テストカバレッジ100%を10年続けて得られた学びと品質
mottyzzz
2
610
そのAPI、誰のため? Androidライブラリ設計における利用者目線の実践テクニック
mkeeda
2
2.6k
Featured
See All Featured
Bash Introduction
62gerente
615
210k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
A Tale of Four Properties
chriscoyier
160
23k
Designing for humans not robots
tammielis
253
25k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
Site-Speed That Sticks
csswizardry
10
820
BBQ
matthewcrist
89
9.8k
Agile that works and the tools we love
rasmusluckow
330
21k
Side Projects
sachag
455
43k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Embracing the Ebb and Flow
colly
87
4.8k
Transcript
Android 11におけるローカル ストレージアクセスの辛み 対象範囲別ストレージの制約について
自己紹介 和田 篤 • Androidエンジニア • 2018年8月にゆめみに転職 (前職は業務システム開発) • 音楽プレイヤーアプリ
「Medoly」を個人開発 (2013年~) • Qiita: https://qiita.com/wa2c Shaniwar Wada (Pune, India) Medoly
アジェンダ • Androidストレージ管理の主な変遷 • 対象範囲別ストレージ • 対象範囲別ストレージによって困るパターン • 対象範囲別ストレージ非対応ファイルへのアクセス
Androidストレージ管理の主な変遷 • API 16: READ_EXTERNAL_STORAGE / WRITE_EXTERNAL_STORAGE • API 19:
Storage Access Framework (SAF), SDカード書込み制限 • API 23: Runtime Permission • API 26: file:// URI使用の制限 • API 29: 対象範囲別ストレージ (Scoped Storage) • API 30: 対象範囲別ストレージの必須化 / MANAGE_EXTERNAL_STORAGE Androidローカルストレージ史上最大の苦難
対象範囲別ストレージ ファイルパスでアクセス可能な範囲 • アプリ固有ディレクトリ内 • MediaStoreに登録されているメディアファイル (動画・音楽・画像) FIle API (java.io.File)
を使って外部ストレージを探索するとどうなる? (READ_EXTERNAL_STORAGE 付与済み) • ディレクトリは見える (アクセス不可能なディレクトリは除く) • 対応ファイル以外は見えない • 見えないファイルにアクセスするとFileNotFoundException
対象範囲別ストレージによって困るパターン [ストレージ上のファイル] Album1 ディレクトリ ├ Audio1.m4a 音声 ├ Audio1.lrc 歌詞テキスト
├ Audio2.mp3 音声 ├ Audio2.txt 歌詞テキスト ├ Audio3.ape 音声 └ artwork.jpg アルバム画像 [見えるファイル] Album1 ├ Audio1.m4a ├ Audio1.lrc ├ Audio2.mp3 └ artwork.jpg File.listFiles() 類似例: • 一部の字幕ファイル(.stl, .ssa等)に対応した動画再生アプリ • 特殊な形式のメディアファイルを扱うアプリ アプリ
対象範囲別ストレージ 非対応ファイルへのアクセス
対応1: preserveLegacyExternalStorage • 従来と同様のストレージアクセスが可能 • API29のみ、30以降では使えない 移行するまでの一時しのぎ
対応2: MANAGE_EXTERNAL_STORAGE • 従来と同様のストレージアクセスが可能 • 多数のファイル操作をするアプリが対象 (ファイラー等) • Google Playに登録する際に審査がある
• 2021 年初頭まで Google Play へアップロードできない アプリ登録できるかはGoogle次第 (多分無理)
対応3: Storage Access Framework • 指定ディレクトリ以下のファイルにアクセス可能 • API30よりストレージのルートが指定出来なくなった • 従来のFile
APIからの置き換えが大変 ( MediaStoreとの連携、パスの相互変換が難しい ) 修正が大変、機能を諦める場合も
まとめ ローカルストレージを扱うアプリは、 Android 11からかなり面倒臭いことになります
ご清聴ありがとうございました