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
2.9k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Android11におけるローカルストレージアクセスの辛み
wa2c
November 27, 2020
More Decks by wa2c
See All by wa2c
DocumentsProviderアプリを作ってみた
wa2c
0
810
Other Decks in Programming
See All in Programming
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
150
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
1.2k
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
150
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
3k
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
390
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
210
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
150
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
380
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
9.3k
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
900
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.6k
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
150
Featured
See All Featured
sira's awesome portfolio website redesign presentation
elsirapls
0
310
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
Paper Plane (Part 1)
katiecoart
PRO
1
9.8k
Docker and Python
trallard
47
4k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
190
Marketing to machines
jonoalderson
1
5.6k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.5k
Accessibility Awareness
sabderemane
1
160
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
WCS-LA-2024
lcolladotor
0
750
How to make the Groovebox
asonas
2
2.3k
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からかなり面倒臭いことになります
ご清聴ありがとうございました