2012年05月12日

[Unity] Android端末でWebCamTextureを使おうとしたらエラー(INSTALL_FAILED_MISSING_FEATURE)が出るときの対処

WebCamTextureを使ったプログラムを書いていて、尚且つAndroid用プラグインを使っているときに
こんなエラーが出て、ビルドが通らなくなりました。

----------------------------------
Installation failed with the following output:
pkg: /data/local/tmp/Package.apk
Failure [INSTALL_FAILED_MISSING_FEATURE]
UnityEngine.Debug:LogError(Object)
PostProcessAndroidPlayer:UploadAndStartPlayer(String, String, String, String, String, Boolean, Boolean, Boolean)
(at C:/BuildAgent/work/b0bcff80449a48aa/Editor/Mono/BuildPipeline/PostProcessAndroidPlayer.cs:870)
PostProcessAndroidPlayer:PostProcess(BuildTarget, String, String, String, String, String, String, BuildOptions)
(at C:/BuildAgent/work/b0bcff80449a48aa/Editor/Mono/BuildPipeline/PostProcessAndroidPlayer.cs:452)
UnityEditor.BuildPlayerWindow:BuildPlayerAndRun()
----------------------------------
原因を調べてみたところ、

[Unityプロジェクト]/Temp/StagingArea/AndroidManifest.xml
にある

<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.camera.front" android:required="true" />

のようでした。
これは、WebCamTextureを使おうとするとUnityがビルドするときに自動的に付与されるものなのですが、
プラグイン側のAndroidManifest.xmlには記載していませんでした。

言うのが遅くなりましたが、プラグイン側でもカメラ機能を使っています。
そのため、カメラ側では↓のパーミッション宣言が記述されています。

<uses-permission android:name="android.permission.CAMERA" />

プラグイン側のマニフェストファイルにも、uses-featureタグが必要なようです。
ということで、プラグイン側のマニフェストファイルで記載する内容を整理すると、
この3行が必要ということになります。

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.camera.front" android:required="true" />

Unityが自動で生成するものと、プラグインで用意するものとで、
マニフェストファイルの内容を一部揃える必要があるあるなんて知りませんでした。

気づいてよかった。

==================== 2011.5.16.追記 ====================
上記修正でもエラーが出る場合は、
android:required="false"
にするとうまくいくことがありました。
posted by be-style at 00:47| Comment(0) | Unity
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]