littlewing

人間とコンピューターとメディアの接点をデザインするために考えたこと

Oculus GO アプリで、マイクのパーミッションが出ないようにする

UnityでOculus Go アプリを開発していたら、マイクを利用していないのに起動時にマイク利用許可のパーミッションが表示される。

そのままでOculusの審査に出したら、リジェクトされてしまった。

OverView: The app must request the minimum number of permissions required to function.

Result: Your app is asking for excessive user permissions or using user permissions inappropriately. -Access Microphone Please remove all unnecessary permissions.

microphoneを利用する処理は書いていないし、 Assets/Plugins/Android/AndroidManifest.xml

<uses-feature android:name="android.hardware.microphone" android:required="false" />

追記しても変化無し。


apk内のManifestがどうなっているか調べてみる。

Unityで作成したAndroidアプリにおいて、最終的なmanifestの内容は、ソースコードの中身などから生成されるらしいので、 apk内のManifestがどうなっているのか調べてみる。

Android SDKに含まれている aaptというコマンドで調べられるらしい。

aapt.exe は

C/Users/{Username}/AppData/Local/Android/Sdk/build-tools/28.0.1/

にあった。

実行してみると

$ ./aapt.exe d permissions hogehoge.apk AndroidManifest.xml

package: jp.hoge.hoge
uses-permission: name='android.permission.INTERNET'
uses-permission: name='android.permission.WAKE_LOCK'
uses-permission: name='android.permission.RECORD_AUDIO'

となり、RECORD_AUDIOが付与されてしまっている。

調べてみると、フォーラムにも同様の症状が。

結果的に、以下の対応をして解決。

  1. 以下6個のファイルを削除
    • Assets/Oculus/Platform/Scripts/IMicrophone.cs
    • Assets/Oculus/Platform/Scripts/LivestreamingMicrophoneStatus.cs
    • Assets/Oculus/Platform/Scripts/MicrophoneInput.cs
    • Assets/Oculus/Platform/Scripts/MicrophoneInputNative.cs
    • Assets/Oculus/LipSync/Scripts/OVRLipSyncMicInput.cs
    • Assets/Oculus/VoiceMod/Scripts/Helpers/OVRMicInput.cs
  2. CAPI.csでエラーが出るので、該当箇所(Livestreamingなんちゃら) をコメントアウト
  3. 再ビルド

Oculus Goのストア申請に役に立ったリンク集