酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

FFmpeg for Androidを使っている場合、target sdkを29にすると処理に失敗するようになる

Projectレベルの build.gradle のtarget sdkを 29 にすると、Android Q(10)上でFFmpeg for Androidでの処理に失敗することがわかった。

Target SDKが29だとPermission deniedが発生する

生成したコンテンツをギャラリーに保存するためにコードを書いていてAndroid Q対応が必要になった。下記のようにバージョンをあげた。

buildscript {
    ext.kotlin_version = '1.3.72'
    ext.sdk = [
            'compile': 29,
            'min'    : 23,
            'target' : 29
    ]

FFmpegを実行すると下記のようなエラーが発生してしまう。

E/mobile-ffmpeg: /storage/emulated/0/DCIM/Camera/VID_20200709_114611.mp4: Permission denied

一番簡単な解決方法はTarget SDKが28にさげる

permission is denied using Android Q ffmpeg": error=13, Permission denied - Stack Overflow」によれば、一番簡単な解決方法はTarget SDKが28にさげることらしい。

buildscript {
    ext.kotlin_version = '1.3.72'
    ext.sdk = [
            'compile': 29,
            'min'    : 23,
            'target' : 28
    ]

いまのところ解決していないようなので、しばらく様子をみて対処方法を検討したい。