質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.84%

  • Android

    6105questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Unity

    3394questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity3D

    1133questions

    Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity3DアプリをAndroidで起動すると、Unityロゴが表示された後、終了してしまう

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 158

yuji38kwmt

score 418

 環境

  • Unity 2017.4.0f1 (b5bd171ee9ba) Personal
  • Android Studio 3.1.2
  • JDK 1.8.162
  • 実機Android5.1.1(DIGNO(R) rafre KYV36)
  • Windows10

 背景

Unityの教科書 Unity 2017完全対応版」という技術書で、Unityを勉強しています。
7章の「3Dゲームの作り方」に挑戦しています。
Sampleソースコード
Unity上の実行ツールで、正しく動くことは確認できました。

イメージ説明

 問題

Unityの「Build & Run」でAndroidにインストールして、アプリを起動しました。
すると、Unityロゴが表示されたあと、アプリが終了してしまいました。

%USERPROFILE%\AppData\Local\Android\sdk\tools\lib\monitor-x86_64\monitor.exeでLogを確認したところ、以下の通りでした。

イメージ説明

04-30 20:25:54.107: D/Unity(6853): - Completed reload, in  0.366 seconds
04-30 20:25:54.537: D/Unity(6853): WARNING: Shader 
04-30 20:25:54.537: D/Unity(6853): Unsupported: 'Hidden/BlitToDepth' - Pass '' has no vertex shader
04-30 20:25:54.537: D/Unity(6853): WARNING: Shader 
04-30 20:25:54.537: D/Unity(6853): Unsupported: 'Hidden/BlitToDepth' - Setting to default shader.
04-30 20:25:54.537: D/Unity(6853): WARNING: Shader 
04-30 20:25:54.537: D/Unity(6853): Unsupported: 'Hidden/BlitToDepth_MSAA' - Pass '' has no vertex shader
04-30 20:25:54.537: D/Unity(6853): WARNING: Shader 
04-30 20:25:54.537: D/Unity(6853): Unsupported: 'Hidden/BlitToDepth_MSAA' - Setting to default shader.
04-30 20:25:54.577: D/Unity(6853): PlayerInitEngineGraphics OK
04-30 20:25:54.577: D/Unity(6853): Found 10 native sensors
04-30 20:25:54.587: D/Unity(6853): Sensor :        Accelerometer ( 1) ; 0.019154 / 0.01s ; 3-axis Accelerometer / STMicroelectronics 
04-30 20:25:54.587: D/Unity(6853): Sensor :        Accelerometer ( 1) ; 0.019154 / 0.01s ; 3-axis Accelerometer / STMicroelectronics 
04-30 20:25:54.597: D/Unity(6853): SetWindow 0 0xab0cba98
04-30 20:25:54.597: D/Unity(6853): [EGL] Attaching window :0xab0cba98
04-30 20:25:54.627: D/AU-TS(5838): Not first cpuTime=1445, useTime=931, idleTime=514
04-30 20:25:54.627: D/Unity(6853): ANativeWindow: (720/1280) RequestedResolution: (0/0) RenderingResolution: (0/0) EGLSurface: (720/1280)
...
04-30 20:25:57.527: W/ActivityManager(952): getTasks: caller 10020 is using old GET_TASKS but privileged; allowing
04-30 20:25:57.637: D/AU-TS(5838): Not first cpuTime=259, useTime=192, idleTime=67
04-30 20:25:58.187: A/libc(6853): invalid address or address of corrupt block 0xab74e218 passed to dlfree
04-30 20:25:58.267: I/Atfwd_Sendcmd(4994): AtCmdFwd service not ready - Exhausted retry attempts - :6
04-30 20:25:58.267: I/Atfwd_Daemon(4994): result : -1      ,Init step :2      ,qmiErrorCode: 0
04-30 20:25:58.387: I/WindowState(952): WIN DEATH: Window{17bab130 u0 com.Company.Igaguri/com.unity3d.player.UnityPlayerActivity}
04-30 20:25:58.387: I/ActivityManager(952): Process com.Company.Igaguri (pid 6853) has died
04-30 20:25:58.387: D/ActivityManager(952): cleanUpApplicationRecord -- 6853
04-30 20:25:58.387: W/WindowManager(952): Force-removing child win Window{c92aecf u0 SurfaceView} from container Window{17bab130 u0 com.Company.Igaguri/com.unity3d.player.UnityPlayerActivity}
04-30 20:25:58.397: I/ALPS_COMPASS(952): HSCDSensor: time adjusted = 2546648158887090
04-30 20:25:58.387: W/ActivityManager(952): Force removing ActivityRecord{391253d u0 com.Company.Igaguri/com.unity3d.player.UnityPlayerActivity t674}: app died, no saved state
04-30 20:25:58.417: W/WindowManager(952): Failed looking up window
04-30 20:25:58.417: W/WindowManager(952): java.lang.IllegalArgumentException: Requested window android.os.BinderProxy@1e65a32e does not exist
04-30 20:25:58.417: W/WindowManager(952):     at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:8798)
04-30 20:25:58.417: W/WindowManager(952):     at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:8789)
04-30 20:25:58.417: W/WindowManager(952):     at com.android.server.wm.WindowState$DeathRecipient.binderDied(WindowState.java:1157)
04-30 20:25:58.417: W/WindowManager(952):     at android.os.BinderProxy.sendDeathNotice(Binder.java:551)
04-30 20:25:58.417: I/WindowState(952): WIN DEATH: null
04-30 20:25:58.467: E/AudioPolicyManager(419): unknown stream type 15
04-30 20:25:58.467: E/AudioPolicyManager(419): unknown stream type 15
04-30 20:25:58.467: E/AudioPolicyManager(419): unknown stream type 15
04-30 20:25:58.467: E/AudioPolicyManager(419): unknown stream type 15
04-30 20:25:58.467: E/AudioPolicyManager(419): unknown stream type 15
04-30 20:25:58.467: E/AudioPolicyManager(419): unknown stream type 15
04-30 20:25:58.477: E/AudioPolicyManager(419): unknown stream type 15
04-30 20:25:58.477: E/AudioPolicyManager(419): unknown stream type 15
04-30 20:25:58.477: E/AudioPolicyManager(419): unknown stream type 15
04-30 20:25:58.477: E/AudioPolicyManager(419): unknown stream type 15
04-30 20:25:58.477: E/AudioPolicyManager(419): unknown stream type 15
04-30 20:25:58.477: E/AudioPolicyManager(419): unknown stream type 15
04-30 20:25:58.477: E/AudioPolicyManager(419): unknown stream type 15
04-30 20:25:58.477: E/AudioPolicyManager(419): unknown stream type 15
04-30 20:25:58.477: E/AudioPolicyManager(419): unknown stream type 15
04-30 20:25:58.477: E/AudioPolicyManager(419): getDeviceForStrategy() earpiece device not found
04-30 20:25:58.477: E/AudioPolicyManager(419): unknown stream type 15
04-30 20:25:58.477: E/AudioPolicyManager(419): unknown stream type 15
04-30 20:25:58.477: E/AudioPolicyManager(419): getDeviceForStrategy() earpiece device not found
04-30 20:25:58.477: E/AudioPolicyManager(419): getDeviceForStrategy() earpiece device not found
04-30 20:25:58.477: E/AudioPolicyManager(419): unknown stream type 15

なんとなくですが、以下のメッセージが、解決の糸口になるのではと考えています。

  • WARNING: Shader 
  • invalid address or address of corrupt block 0xab74e218 passed to dlfree

 質問

上記の問題を解決する方法を教えていただきたいです。

 補足:ソースコード

 IgaguriController.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class IgaguriController : MonoBehaviour {
    public void Shoot(Vector3 dir)
    {
        GetComponent<Rigidbody>().AddForce(dir);
    }

     void OnCollisionEnter(Collision collision)
    {
        GetComponent<Rigidbody>().isKinematic = true;
        GetComponent<ParticleSystem>().Play();
    }

    // Use this for initialization
    void Start () {
        //Shoot(new Vector3(0, 200, 2000));
    }

    // Update is called once per frame
    void Update () {

    }
}

 IgaguriGenerator.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class IgaguriGenerator : MonoBehaviour {
    public GameObject igaguriPrefab;

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {
        if (Input.GetMouseButtonDown(0))
        {
            GameObject igaguri = Instantiate(igaguriPrefab) as GameObject;
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            Vector3 worldDir = ray.direction;
            //igaguri.GetComponent<IgaguriController>().Shoot(new Vector3(0, 200, 2000));
            igaguri.GetComponent<IgaguriController>().Shoot(worldDir.normalized * 2000);
        }

    }


}

 フォルダ構成

C:.
│  Igaguri.csproj
│  Igaguri.sln
│  Igaguri_Android.apk
│  
├─Assets
│  │  GameScene.unity
│  │  igaguri.fbx
│  │  IgaguriController.cs
│  │  IgaguriGenerator.cs
│  │  igaguriPrefab.prefab
│  │  New Terrain 1.asset
│  │  New Terrain.asset
│  │  target.fbx
│  │  test.prefab
│  │  
│  └─Standard Assets
│              
├─ProjectSettings
│      AudioManager.asset
│      ClusterInputManager.asset
│      DynamicsManager.asset
│      EditorBuildSettings.asset
│      EditorSettings.asset
│      GraphicsSettings.asset
│      InputManager.asset
│      NavMeshAreas.asset
│      NetworkManager.asset
│      Physics2DSettings.asset
│      ProjectSettings.asset
│      ProjectVersion.txt
│      QualitySettings.asset
│      TagManager.asset
│      TimeManager.asset
│      UnityConnectSettings.asset
│      
└─UnityPackageManager
        manifest.json
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+1

これだけだとなんとも分かりませんね・・・。
リストしてくれたエラーで検索するとこちらの記事がヒットしました。

https://stackoverflow.com/questions/25069186/invalid-address-passed-to-dlfree

ここでの解答にも書かれていますが、コードなしでは解決がむずかしいかと思います。
ただ、メモリアクセス周りな感じがしているので、アプリの開始時点でnullアクセスがないか確認してみるといいかもしれません。

ちなみにですが、「WARNING: Shader」のほうは頂点シェーダがない(Unsupported: 'Hidden/BlitToDepth' - Pass '' has no vertex shader)というワーニングです。

これは、Unsupportedと書かれている通り、該当のシェーダがおそらくモバイル向けに用意されておらず、シェーダ内で「#pragma exclude_renderers」に、glsl2か3あたりが書かれていてシェーダがモバイル向けには用意されていないために起こるものだと思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/01 02:27

    回答ありがとうございます。
    ソースコードを追記しました。他にも必要な情報がありましたら教えてください。

    キャンセル

  • 2018/05/01 07:52

    アプリ起動時に実行されるスクリプトはこれだけですか? これだけであれば、特にクラッシュするような内容ではないように見えますが・・。

    キャンセル

  • 2018/05/01 11:57

    そうですね、C#Scriptは上記の2つです。
    一応サンプルコードのリンクや、フォルダ構成を掲載しました。

    キャンセル

check解決した方法

0

Terrainを削除したら、実機(Android5)で動きました。
また、以下の端末(Android7)では、Terrainが存在している状態でも、動きました。

  • HUAWEI P10 lite
  • Android7

TerrainはAndroid5では動かないんですかね?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.84%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Android

    6105questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Unity

    3394questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity3D

    1133questions

    Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。