おもちゃラボ

Unityで遊びを作っていきます

【Unity】Xcodeで library not found for liPhone-libのエラーが出る

Unity2019とXcode11を使ってUnityのプロジェクトをビルドすると「library not found for -liPhone-lib」というエラーが出ることがあります。

ld: library not found for -liPhone-lib
clang: error: linker command failed with exit code 1 (use -v to see invocation)

f:id:nn_hokuson:20191021150812p:plain

Xcodeプロジェクトより上の階層に日本語のフォルダがあるとこのエラーが出るようです。解決策としては次の3つがあります。

  1. 日本語フォルダを英語にリネームする
  2. Xcodeプロジェクトを日本語のフォルダ名を含まない場所に移動する
  3. XcodeのLibrary Search Pathを設定する

3つめのLibrary Search Pathの方法だけ、少し手順が複雑なので詳しく説明します。

XcodeのLibrary Search Pathを設定する

Xcodeの左カラムからプロジェクト名(ここではUnity-iPhone)を選択した状態でBuild Settingsタブを開きます。その中のSearch PathsセクションのLibrary Search Pathsを見つけて下さい。

f:id:nn_hokuson:20191021151907p:plain

Library Search Pathsのパス名をダブルクリックするとウインドウが開くので、「"$(SRCROOT)"」を選択して、マイナスボタンで削除します。

f:id:nn_hokuson:20191021152220p:plain:w400

設定できたら、再度ビルドボタンを押してビルドが通ることを確認して下さい。

【Unity】ROMアップロード時のエラー対処法

ROM(Androidならapk、iOSならipa)をアップロードしたときにつまずくポイントをまとめました。最後の関門なので、早く提出したいのに・・・!と一番イラつく(笑)ポイントなので、その手助けになれば!!

広告を使っていないのにIDFAのチェックで引っかかる(iOS)

ipaファイルをアップロードするときに、広告を使っていないのに次のような警告が出ることがあります。

「この App は広告 ID (IDFA) を使用しています。IDFA 使用状況の詳細を提供するか、IDFA を App から削除してバイナリを再送信する必要があります。」

Xcodeのプロジェクトを見てみると確かにAdsSupportのフレームワークがインポートされてしまっているようです。

f:id:nn_hokuson:20190905215539p:plain:w300

まずはUnityのメニューバーからWindow→Serviceウインドウを開いてUnityAdsの使用がOFFになっていることを確認しましょう。

f:id:nn_hokuson:20190905215822p:plain:w250

次にWIndow→Package ManagerからAdsのパッケージがインストールされていないかを確認します。インストールされていた場合にはUninstallボタンでアンインストールしましょう。

f:id:nn_hokuson:20190905215810p:plain:w450

ARCoreのmin_apk_versionでひっかかる(Android)

Vufoiraを使ったアプリケーションをサブミットしようとすると、次のようにARCoreのmin_apk_versionが指定されていないとエラーが出ることがあります。

com.google.ar.coreが指定されていますが、AndroidManifest.xmlファイルでARCore依存関係の最小バージョンコードcom.google.ar.core.min_apk_versionが指定されていません。

f:id:nn_hokuson:20190905220126p:plain:w600

この場合はまず、次のURLからARCoreの「core-1.9.0.aar」ファイルをダウンロードしてください(そのときの最新版でOKだと思います)

https://dl.google.com/dl/android/maven2/com/google/ar/core/1.9.0/core-1.9.0.aar

次に、ダウンロードした「core-1.9.0.aar」を、Plugins/Androidフォルダに配置してください(フォルダがない場合は作成します)

f:id:nn_hokuson:20190905220426p:plain:w300

64bit対応していないと怒られる(Android)

2019年8月からapkファイルの64bit対応が必須になりました。アプリが64bit対応していないと次のようにエラーが出ます。

このリリースはGoogle Playの64ビット要件に準拠していません。

以下の APK または App Bundle は 64 ビットのデバイスで利用できますが、
32 ビット向けネイティブ コードしか含まれていません。

アプリには 64 ビットと 32 ビットのネイティブ コードを含めます。
Android App Bundle 公開形式を使用して、各デバイスのアーキテクチャが自動的に必要なネイティブ
コードだけを受け取るようにします。これにより、アプリ全体のサイズが増大することを回避できます。

f:id:nn_hokuson:20190905220757p:plain:w500

Unityで64bit対応するにはPlayer Settings→ConfigurationのScripting Backendを「IL2CPP」に変更し、「ARM64」にチェックを入れます。

また、x86のチェックは必ず外すようにしましょう。これを外さないとx86_64のバイナリがない(そもそもUnity2019からは作成できなくなった)と怒られてしまいます。

f:id:nn_hokuson:20190905221229p:plain:w400

【iOS】画面のサイズに応じて文字のサイズを変更する

XcodeのAutoLayoutを使って文字を配置した場合、そのままだと画面サイズが変わっても同じフォントサイズで文字が表示されてしまいます。

これだと下図のように文字が画面からはみ出てしまったり、見切れてしまったりしまいます。ここでは、端末の画面サイズが変わったときに、自動的に文字のサイズもスケールする方法を紹介します。

f:id:nn_hokuson:20190806210143p:plain:w300 f:id:nn_hokuson:20190806210152p:plain:w206

文字を中央に固定する

まずはLabelを中央に配置して、文字サイズとAlignmentを調節します。ここではフォントサイズを120、Alignmentを中央寄せにしました。また、文字がLabel領域の中央に表示されるように、Baselineは「Align Centers」に設定しています。

f:id:nn_hokuson:20190806210256p:plain:w300

次に文字を画面中央に固定します(べつに固定するのは左上でもどこでも大丈夫です)。Labelを選択した状態で、Xcode右下のAlignメニューから「Horizontally in Container」と「Vertically in Container」にチェックを入れます。これでLabelが画面中央に表示されるようになります。
f:id:nn_hokuson:20190806210322p:plain:w350
また、画面サイズが変わってもLabelのアスペクトは固定したいので、「Add New Constraints」メニューから「Aspect Ratio」にチェックを入れます。
f:id:nn_hokuson:20190806210334p:plain:w350

自動的に文字サイズを変更する

画面サイズによって文字サイズを自動的に変更するには、Autoshrinkのドロップダウンメニューを「Minimum Font Scale」に設定します。これによってLabelの領域が小さくなると、そのサイズに応じて文字のフォントサイズも縮小されます。

f:id:nn_hokuson:20190806210451p:plain:w300

今の状態では画面のサイズが変わってもLabelの領域は変わりません。画面サイズに比例してLabelの領域も変わるように設定します。Xcodeの左側のLabelメニューからControlキーを押しながらViewにドラッグして「Equal Widths」を選択します。

f:id:nn_hokuson:20190806210502g:plain:w300

最後に今設定した「Proportional Width to SuperView」のMultiplierに「Labelの横幅 / 画面の幅」の値を設定します。ここでは画面幅が1024px、Labelの幅が614pxだったので614/1024=0.8を設定しています。

f:id:nn_hokuson:20190806210519p:plain:w300

これで画面サイズに応じて文字のサイズが自動的に拡縮されるようになりました。シミュレータで変更して試してみてください。

f:id:nn_hokuson:20190806210529p:plain:w300 f:id:nn_hokuson:20190806210537p:plain:w213