読者です 読者をやめる 読者になる 読者になる

UnityでAndroid向けのビルドをした時に、 Failed to re-package resourcesで失敗した時の対処方法

先日、購入したUnityのアセットのサンプルシーンをAndroid向けにビルドした時に、下記のようなエラーが出てビルドに失敗しました。

f:id:Takyu:20170215230948p:plain

Build Failure

Failed to re-package resources. See the Console for details.

同時に、数十行のエラーログが出ました。

ログの先頭には、

CommandInvokationFailure: Failed to re-package resources.

というメッセージがあります。これで検索すると、同じような方がいらっしゃいました。
ただし、エラーの対処方法は様々のようです。


http://warapuri.com/post/147141380483/unityでandroid実機に転送しようとしたらエラーが出てビルドできない時の対処法
warapuri.com

  • > Android SDK Build-toolsの最新版を入れないことで解決


qiita.com


clrmemory.com

  • > AdMob(Androidアプリに広告を組み込む機能)のパッケージをインストールし直すことで解決


今回、私の場合はどれでもなく、UnityAssetに最初から入っていたAndroidManifest.xmlの記述を変更することで対応できました。

原因

(1) Assetに最初から入っていたAndroidManifest.xmlの記述がPlayer Settingsとコンフリクトした
(2) Assetに最初から入っていたAndroidManifest.xmlの記述で、no resource foundを引き起こしていた

対処方法 (1) Player Settingsとのコンフリクトを修正

Assetに入っていたAndroid Manifestファイルを修正します。

こちらなどでも紹介しましたが、UnityでAndroidアプリをビルドするために、UnityのフォルダにはAndroidManifest.xmlが入っています。
magicbullet.hatenablog.jp


(すいません、このエラー対応方法の残りがまだできてませんでした。近いうちに書きます)


Macの場合
/アプリケーション/Unity/PlaybackEngine/AndroidPlayer/Apk/AndroidManifest.xml

Windowsの場合
C:\Program Files\Unity\Editor\Data/PlaybackEngines/AndroidPlayer/Apk/AndroidManifest.xml


通常は、ここの記述とBuild Settingsで書いた情報でAndroid用のapkを作成しますが、プロジェクトの中で明示的にmanifestを変更することもできます。

今回使ったアセットでは、最初からPlugins/Androidの中にAndroidManifest.xmlが入っており、target SDK version(ビルド対象のAndroid OS バージョン)が一致していませんでした。

■Build Settings / Player Settings

f:id:Takyu:20170216093857j:plain


■Assets/Plugins/Android/AndroidManifest.xml

f:id:Takyu:20170216093934j:plain

対処方法 (2) 不要なmeta-dataをコメントアウト

これはこのアセット特有の問題ですが、Assets/Plugins/Android/AndroidManifest.xmlの中に、



という記述がありました。また、エラーログに

stderr[
AndroidManifest.xml:13: error: Error: No resource found that matches the given name (at 'value' with value '@integer/google_play_services_version').

]

という記述がありました。Google Play Servicesは今回のアセットでは不要なのでコメントアウトしたところ、Unityでビルドが通るようになりました。

判断が難しいところですが、購入したアセットでも明らかに不要なものが書かれてビルドが通らない場合、修正するのもありと思います。


ちなみに、今回試していたのはこのアセットです。Androidで合成音声を出すことができます。

Android Speech TTS

上記2点を修正したことで、Androidの実機で動くようになりました。
そのうち、こちらのアセットの紹介もしたいと思います。

Holographic Academyの解説「Hologram 211 - Gesture」

前回に引き続き、Holographic Academyについてです。

前回まではこちらです。

magicbullet.hatenablog.jp

magicbullet.hatenablog.jp


今回はHologram 211 Gesture について解説します。

続きを読む

HoloLensのDevcice PortalをMacで使用する

===
2017/3/9
Live PreviewをMacでも利用できたことを追記しました
===



HoloLensには、というよりWindows 10 搭載のデバイスには、Device Portalという機能があります。

詳細は下記で紹介した通り、デバイス詳細情報をWebブラウザ経由で見ることができます。

magicbullet.hatenablog.jp

HoloLensのDevice Portalを使うと、HoloLensのカメラ越しの映像(Live Preview)をブラウザで見ることができます。


ところで、MacでもDevice Portalを見ることはできます。

f:id:Takyu:20170209215351j:plain

しかし、

f:id:Takyu:20170209215734j:plain

のようにエラーメッセージが出てしまい、HoloLensのLive Previewを見ることはできません。

===

元々試した環境はSafariでした。@z_zabaglione さんのご指摘により、Chromeであれば動くことを確認しました。

当時試したときと同じ環境(Sierra 10.12.3)で、私のMacでもChromeを使って動かすことができました。

f:id:Takyu:20170309173854j:plain


参考のため、以下、Parallel Desktopを使った場合についても残しておきます。

===



ただし、仮想化ソフト「Parallel Desktop」を使うことで見ることができました。試した環境は下記の通りです。

[Mac]

Mac Book Pro Late 2016
・Sierra 10.12.3
・Parallel Desktop 12.1.3
・USB type-Cとtype-Aの変換ケーブルでHoloLensと接続

[HoloLens]

Windows Version 14393.693.x86 fre rs1_release 161220-1747


このようになります。

■ Live Preview

f:id:Takyu:20170209220842j:plain

■ 3D View

f:id:Takyu:20170209221045j:plain

補足

(1) 有線でのDevice Portal接続方法

ちなみに、Holographic AcademyチュートリアルではWifi経由のアプリインストールデバッグ方法しか書いてありませんが、HoloLensは有線でのアプリインストールやDevice Portal 接続が可能です。

有線でDevice Portalに接続する場合、USBケーブルでPCと接続します。

f:id:Takyu:20170209221404j:plain

すると、このようにMacWindowsのどちらに接続するかを聞かれるのでWindowsを選択します。


続けて、Webブラウザ(Edge以外は動作未確認)から

http://127.0.0.1:10080

にアクセスすればOKです。


(2) Device PortalでのLive Previewに失敗する

理由不明ですが、なぜかLive Previewの表示に失敗することがあります。

f:id:Takyu:20170209221818j:plain


これはPrallel Desktopだけでなく、Windows 10 NativeのPCでも起きることがあります。

USBケーブルの抜き差しか、Windows10PCの再起動などを繰り返すことで直ります。

終わりに

私は普段Macを使っているのですが、下記の情報の通り、HoloLensアプリ開発はMacで一通りできます。

qiita.com

Parallel Desktop上にVisual Studioを入れることで、このようにアプリインストールもできます。

f:id:Takyu:20170205172910j:plain

今回、Live Previewを支えることもわかったので、デモもMacでできそうですね。

Holographic Academyの解説「Hologram 210 - Gaze」

前回に引き続き、Holographic Academyについてです。

前回の「Hologram 101」は、HoloLensの基本機能を網羅したシンプルな例でした。

2XX以降は、それぞれの機能について発展的な使い方を紹介しています。

今回はGaze(見つめる)についてです。

続きを読む

Holographic Academyの解説「Hologram 101」

====
2017/2/4 追記

Chapter 6のSpatial Mappingでチュートリアル通りに動かなかった箇所が解決したので、動作確認の動画を追加しました。

====

Microsoftでは、「Holographic Academy」というDeveloper用のページがあります。

ここには、ゼロからHoloLens開発を始める人向けに、相当細かく手順が書かれています。


なお、HoloLensのアプリ開発を進めやすくするため、Microsoftからは必要なソースコード、Prefab、シェーダなどをまとめた、HoloToolkitも公開されています。

github.com

ただし、Holographic Academyでは機能別に解説しており、Unity標準のAPIがすぐにわかるように記述されているので、HoloToolKitを読む前にソースコード理解を兼ねてAcademyを試してみるのも良いと思いました。

そこで、今後HoloLensアプリ開発の勉強を兼ねて、まずはHolographic Academyの「Hologram 101」を解説してみました。

はじめに

HoloAcademyの最初の二つ、「Holograms 100: Getting started with Unity」と、「Holograms 101E: Introduction with Emulator」は、以前書いた内容とかぶるので省略します。

magicbullet.hatenablog.jp

また、Holo Academyに記載されている手順はかなり丁寧なので、手順そのままで理解に困らなかった場所については、今回のHologram101以降についても説明を簡略化する予定です。

さて、今回は「Holograms 101」の内容を解説します。

続きを読む

UnityでHoloLensのWorld Lockアプリを作る方法

前々回も紹介しましたが、HoloLensアプリには、

・Body Lock(常に目の前に表示される)

・World Lock(HoloLensが持つ三次元空間の中の絶対位置に配置される)

・排他的表現(いわゆるフルスクリーン)

の3種類があります。


公式ページでUnityによるアプリ開発方法を見ると、出来上がるアプリは「排他的表現」になります。

しかし、実際はUnityでもWorld Lockのアプリを作ることができたので、今回はその方法を解説します。


=========

目次

1. 準備

2. ビルド

3. 動作確認

4. 終わりに

=========

1. 準備

検証した環境

Unity 5.5.0 f3

Windows 10 Pro

Visual Studio Update 3


まずはUnity側で何か準備します。

私の場合は、1年ぶりにuGUI minimapのアセットのサンプルシーンを使ってみました。

uGUI minimapの概要や詳細については、下記をご確認ください。

magicbullet.hatenablog.jp


uGUI minimapをインポートしたら、サンプルシーンを開きます。

なお、この方法ではHoloToolKitは使いません。

f:id:Takyu:20170124210630p:plain

2. ビルド

UnityのBuild Settingsを開き、現在開いているシーンをビルド対象にして、下記のように設定します。

f:id:Takyu:20170124210448p:plain


Player Settingsは下記のようにします。

f:id:Takyu:20170124210532p:plain


Virtual Reality Supportedにチェックを入れない、が重要です。


ここまでできたら、Buildボタンを押して適当なフォルダを指定し、UWPのプロジェクトファイルを出力します。
(ここは通常のHoloLensアプリの作り方と同じです)

この後は、Visual Studioでプロジェクトを開き、(拡張子slnをダブルクリックしても開きます)

Target Deviceをx86に指定し、

f:id:Takyu:20170122075723p:plain

Deploy Solutionを選択します。

f:id:Takyu:20170122075849p:plain


これでHoloLensにアプリがインストールされます。

3. 動作確認

HoloLensの実機でアプリを起動します。

通常の作り方だと、視界全体にMade with Unityのロゴが出ますが、今回はWindowの中に表示されています。

f:id:Takyu:20170123043631j:plain


動かすとこのようになります。

UnityのFPS ControllerのカメラワークをHoloLensのヘッドトラッキングで操作しています。

前進移動は、キーボードの上キーです。

前回紹介した、Wekey Pocket キーボードを使っています。

magicbullet.hatenablog.jp


また、HoloLensの注視カーソルも生きていて、uGUIかOnGUIのボタン上でAirTapすると、タップ相当の操作もできます。

動画の中でも見づらいですが、小さな白い点が常に表示されており、これが注視カーソルです。

このように、他のアプリケーションを表示させることもできます。

f:id:Takyu:20170123043556j:plain


ただし、World Lock表示したUnityアプリを操作できるのは、UnityアプリのWindowがフォアグラウンドであるときだけです。


4. 終わりに

UnityでWorld Lockアプリができると、ユーティリティアプリとか、ゲーム以外にもUnityの特性を活かしたアプリができそうですね。

こんな感じで、また色々調べてみたいと思っています。

HoloLensとWekey Pocketキーボードを接続する

HoloLensとキーボードを接続してみました。

今回試したのは、Wekey Pocketという超薄型キーボードです。

www.amazon.com

去年Indiegogoで出資した時に$50くらいでゲットしました。

f:id:Takyu:20170123214911j:plain

f:id:Takyu:20170123214957j:plain

折り畳んでもXperiaZ3よりも薄いです。

使い方は簡単で、HoloLensのSettingsからDeviceを選び、Bluetoothのペアリングを実行するだけです。

f:id:Takyu:20170123035601j:plain

このようにペアリングが成功すればOKです。

キーボードの十字キーでカーソル選択になりますし、文字入力もできます。


HoloLensは基本的にAirTapと音声認識だけで操作できますが、キーボードがあるとデバッグとか、調整関係に役に立ちそうです。