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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Android

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

1441閲覧

(Android)UnityでILC2PPにするとstreamingAssetsPathからpersistentDataPathにコピー出来なくなった。

fukufuku1

総合スコア27

Android

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2019/10/23 05:16

プレイストアにリリースするには64bitにする対応が必要になるとのことで、
色々と調べてアプリを64ビットでBuildしたところ動かなくなりました。

色々と確認すると、以下の部分がうまくいっていないようで
どのようにすればうまくいくかご存知の方いらっしゃいますでしょうか。

【前提】
・unityでandroidのアプリ
・設定(scripting Backend)で「Monoにしてx86をチェック」 → 「IL2CPPにしてARM64にチェック」
※これで64ビットになると思ってます。
またMonoの時には正常に処理されてます。

【やりたいこと】
streamingAssetsPathにあるcsvファイルを、pesistentDataPathにコピーする。

【ソース】※うまくいっていない場所
WWW www1 = new WWW(Application.streamingAssetsPath + "/infile.csv");
string path1 = Application.persistentDataPath + "/infile.csv";
File.WriteAllBytes(path1, www1.bytes);

【結果】
ファイルコピーがうまくいかない。(実機の内部ストレージを直接みるとinfile.csvが0バイトの空のファイルで作成される)
※前提に記載した「Monoにしてx86をチェック」にするとファイルコピーがうまくいくことは確認済みです。

【備考】
pesistentDataPathに1つのcsvファイルをコピーするだけなので、
他の方法で実現可能ということでしたらそちらでも大丈夫です。

お手数ですがわかる方がいましたら教えて頂けないでしょうか。
宜しくお願い致します。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

WWWクラスは生成しても、実際にファイルの内容を読み込むまでには時間がかかります。
そのため、yield return www1;などで読み込みが完了するまで待機させないといけません。
(私にとっては、むしろx86で動くほうが不思議です)

また、WWWクラスは古いクラスであり、現在ではUnityWebRequestクラスを使うことが推奨されていますので、こちらを使うのがよいです。
(こちらの場合でもWWWクラスと同様に待機させる必要があります)

投稿2019/10/25 05:40

fiveHundred

総合スコア9803

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fukufuku1

2019/10/27 21:17

回答頂きありがとうございました。 別の方法で解決したので試していないのですが 待機が必要だったの可能性が高いですね。(他の方も記載いただいたようにIL2CPPが早い) ※一応他の方法はResourcesフォルダからpesistentDataPathにコピーする処理で代用できました。 一番最初に回答頂きましたのでこちらをベストアンサーにさせて頂きます。 ありがとうございました。
guest

0

基本的にはfiveHundredさんの書かれた事のままだと思います。(なぜそちらが低評価なのかがわからないです)
手元にAndroidNDKを入れていないし、実機もないので確認できないですが、fukufuku1さんは x86でMonoARM64でIL2CPP を試されたようですが、 x86でIL2CPP は設定できたと思います。この設定の時はできましたか?
また、 ARM64でIL2CPP の時に yield return www1; を試してみましたか?

x86/ARM64に関わらず、MonoでできてIL2CPPでできない、だけど処理を待てばできるのであれば、
Mono(スクリプト)が遅くてIL2CPP(ネイティブ)が速い
だけだと思いますがいかがでしょうか?

ちなみにファイルの存在を確認というのは実機上のファイルマネージャからであって、Windowsのエクスプローラーからではないということでよろしいですね?

投稿2019/10/26 06:35

vo3

総合スコア321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fiveHundred

2019/10/26 06:46

> (なぜそちらが低評価なのかがわからないです) なぜか毎日私に低評価を入れる人がいるので、今回もそれだと思います。 しかし、なぜ毎日低評価を入れるがよく分からないですね。 低評価を入れてもその理由が分からない以上、私も運営も改善しようがないので、誰も得しない行為だと思いますがね。
fukufuku1

2019/10/27 21:23

回答頂きありがとうございました。 別の方法で解決しましたので記載していただいたことを試してはいないのですが 表題の記載の補足として以下2点回答させていただきます。 x86でIL2CPPでは確認していなかったので確認してみればよかったですね。 ※影響する部分がさらに絞れたので またファイルの確認は実機上(スマホ)であってます。 回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問