UE4でスクリーンショットを撮れるように「おばけスキャン」アプリに追加機能を付加したいんですが開発ビルドしたものはカレントのUE4GAMEフォルダ内にEXECUTEノードで[shot]を入れると取れるんですがシッピングではダメなんです。
でも、動作を見るとスクショは撮っているみたいなので保存先が見つからないんではないかと思って手動で保存先を指定してみようかと思い、まずAndroidのフォルダ構成について調べてみます。
①端末をPCのポートに接続してadbでshellを起動します。
# adb shell
あとは普通にshellコマンドが使えますのでls-lで全体を見てみます。見るとシンボリックのsdcardがそれっぽいのでまずはstorageの中身を見てみます。
selfが怪しいのでその中も見てみます。するとその中のprimaryもシンボリックになっているのでmntの中身も見てみます。mnt/userのなかには0だけあってこの中のprimaryもシンボリックになっていて本体はstorage/emulated/0なのが解りました。
この中を確認すると内部ストレージで表示される一覧のディレクトリがありました。
なのでEXECUTEでこのように保存先を指定しました。
ビルドしてシッピングで試しましたがダメでした。開発者ビルドではうまく動くんだけど(ちゃんとPicturesフォルダの中にGhostScanが出来てそのなかにスクショが入る)なんでダメなんだろ?パーミッションの問題なのかなあ?
シッピングビルドと開発ビルドのAndroidManifest.xmlを見比べてみると以下が足らないようだった。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <meta-data android:name="com.epicgames.ue4.GameActivity.bUseExternalFilesDir" android:value="false" /> <meta-data android:name="com.epicgames.ue4.GameActivity.StartupPermissions" android:value="android.permission.WRITE_EXTERNAL_STORAGE" />
なのでプロジェクト設定のAndroidに追加してみた。
ダメでした。もうちょっとAndroidManufest.xmlを調べてみる。
で、開発ビルドのAndroidManifest.xmlにあわせてプロジェクトセッチングをしてみる事にした。
こんな感じ。で、シッピングビルドしてAndroidManifest.xmlを比較してみる。
OpenGLのテクスチャの部分がないが関係ないだろう。
Actiyityに追記したタグが増えている。あとは開発ビルドのタグがTRUEからFALSEになっている。
あとは同じ。これならいけそう。早速BATからインストールしてみる。
やった!スクショ撮れている!OKだリリースしよう!
この動作確認はおばけスキャン3.0時の堰(3.02)でできます。スキャン画面のカメラマークをタップしてください。その場所の写真が取れます。