kichikuou / xsystem4-android

Android port of xsystem4
Other
19 stars 4 forks source link

Android14での問題? #3

Closed kakurezato closed 11 months ago

kakurezato commented 11 months ago

いつも楽しませて頂いております。 不具合というか、OS側の問題ではないかと思いますがご報告です。

Pixel6を使っておりAndroidのバージョンが14なのですが、USBでのデータ転送でAndroid/dataへの書込が出来ないようでした。 一応adbでデータを入れることができました。

ただ今度はアプリが起動時にクラッシュするようになりました。 クラッシュに関してはxsystem4のバージョンをSnapshot-2023-04-19まで落とすことで解決しました。(Snapshot-2023-08-27及びSnapshot-2023-12-01ではクラッシュする)

以前使っていたPixel3a(Android12)ではSnapshot-2023-12-01でもデータ転送、クラッシュに関する問題は発生しませんでした。

kichikuou commented 11 months ago

報告ありがとうございます。

Pixel6を使っておりAndroidのバージョンが14なのですが、USBでのデータ転送でAndroid/dataへの書込が出来ないようでした。

手元のPixel 7a (Android 14) ではUSBで書き込みできていますので、機種依存の問題か、なにか別の原因かもしれません。もう少し詳しく状況を教えていただけますでしょうか。 (Android/data 以下のディレクトリが見れない? 書き込もうとするとエラーになる?)

ただ今度はアプリが起動時にクラッシュするようになりました。

adb logcat でクラッシュ時のログを取っていただくことは可能でしょうか?

kakurezato commented 11 months ago

手元のPixel 7a (Android 14) ではUSBで書き込みできていますので、機種依存の問題か、なにか別の原因かもしれません。もう少し詳しく状況を教えていただけますでしょうか。 (Android/data 以下のディレクトリが見れない? 書き込もうとするとエラーになる?)

Android/data 以下のディレクトリを見ることはできます。 今確認したところ、io.github.kichikuou.xsystem4 のディレクトリが表示されない状態でした。 その状態でPCからio.github.kichikuou.xsystem4 のディレクトリをコピーしようとしてもできません。(エラーメッセージはなくエラー音だけ鳴る) 全く関係ないフォルダをAndroid/data へコピーすることは出来たので、io.github.kichikuou.xsystem4 以下へのアクセス権の問題ということですかね?

adb logcat でクラッシュ時のログを取っていただくことは可能でしょうか?

取り方が正しいかわかりませんが、クラッシュログはこんな感じでした。 こちらもアクセス権の問題っぽい?

12-11 01:25:05.215 12628 12628 E AndroidRuntime: FATAL EXCEPTION: main 12-11 01:25:05.215 12628 12628 E AndroidRuntime: Process: io.github.kichikuou.xsystem4, PID: 12628 12-11 01:25:05.215 12628 12628 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{io.github.kichikuou.xsystem4/io.github.kichikuou.xsystem4.LauncherActivity}: java.io.FileNotFoundException: /storage/emulated/0/Android/data/io.github.kichikuou.xsystem4/files/Rance7_daisengoku/.xsystem4.ico: open failed: EACCES (Permission denied) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3782) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3922) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:205) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at android.os.Looper.loop(Looper.java:294) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:8177) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: Caused by: java.io.FileNotFoundException: /storage/emulated/0/Android/data/io.github.kichikuou.xsystem4/files/Rance7_daisengoku/.xsystem4.ico: open failed: EACCES (Permission denied) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at libcore.io.IoBridge.open(IoBridge.java:574) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at java.io.FileOutputStream.(FileOutputStream.java:236) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at java.io.FileOutputStream.(FileOutputStream.java:186) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at kotlin.io.FilesKtFileReadWriteKt.writeBytes(FileReadWrite.kt:108) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at io.github.kichikuou.xsystem4.Item$Companion.findIcon(GameList.kt:61) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at io.github.kichikuou.xsystem4.Item$Companion.fromDirectory(GameList.kt:42) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at io.github.kichikuou.xsystem4.GameList.(GameList.kt:122) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at io.github.kichikuou.xsystem4.GameListAdapter.(LauncherActivity.kt:37) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at io.github.kichikuou.xsystem4.LauncherActivity.onCreate(LauncherActivity.kt:72) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:8595) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:8573) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1456) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3764) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: ... 12 more 12-11 01:25:05.215 12628 12628 E AndroidRuntime: Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at libcore.io.Linux.open(Native Method) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at libcore.io.ForwardingOs.open(ForwardingOs.java:563) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at libcore.io.BlockGuardOs.open(BlockGuardOs.java:274) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at libcore.io.ForwardingOs.open(ForwardingOs.java:563) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:8063) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: at libcore.io.IoBridge.open(IoBridge.java:560) 12-11 01:25:05.215 12628 12628 E AndroidRuntime: ... 24 more 12-11 01:25:08.859 12689 12689 E AndroidRuntime: FATAL EXCEPTION: main 12-11 01:25:08.859 12689 12689 E AndroidRuntime: Process: io.github.kichikuou.xsystem4, PID: 12689 12-11 01:25:08.859 12689 12689 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{io.github.kichikuou.xsystem4/io.github.kichikuou.xsystem4.LauncherActivity}: java.io.FileNotFoundException: /storage/emulated/0/Android/data/io.github.kichikuou.xsystem4/files/Rance7_daisengoku/.xsystem4.ico: open failed: EACCES (Permission denied) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3782) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3922) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:205) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at android.os.Looper.loop(Looper.java:294) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:8177) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: Caused by: java.io.FileNotFoundException: /storage/emulated/0/Android/data/io.github.kichikuou.xsystem4/files/Rance7_daisengoku/.xsystem4.ico: open failed: EACCES (Permission denied) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at libcore.io.IoBridge.open(IoBridge.java:574) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at java.io.FileOutputStream.(FileOutputStream.java:236) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at java.io.FileOutputStream.(FileOutputStream.java:186) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at kotlin.io.FilesKtFileReadWriteKt.writeBytes(FileReadWrite.kt:108) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at io.github.kichikuou.xsystem4.Item$Companion.findIcon(GameList.kt:61) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at io.github.kichikuou.xsystem4.Item$Companion.fromDirectory(GameList.kt:42) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at io.github.kichikuou.xsystem4.GameList.(GameList.kt:122) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at io.github.kichikuou.xsystem4.GameListAdapter.(LauncherActivity.kt:37) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at io.github.kichikuou.xsystem4.LauncherActivity.onCreate(LauncherActivity.kt:72) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:8595) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:8573) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1456) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3764) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: ... 12 more 12-11 01:25:08.859 12689 12689 E AndroidRuntime: Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at libcore.io.Linux.open(Native Method) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at libcore.io.ForwardingOs.open(ForwardingOs.java:563) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at libcore.io.BlockGuardOs.open(BlockGuardOs.java:274) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at libcore.io.ForwardingOs.open(ForwardingOs.java:563) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:8063) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: at libcore.io.IoBridge.open(IoBridge.java:560) 12-11 01:25:08.859 12689 12689 E AndroidRuntime: ... 24 more

kichikuou commented 11 months ago

Android/data 以下のディレクトリを見ることはできます。 今確認したところ、io.github.kichikuou.xsystem4 のディレクトリが表示されない状態でした。

io.github.kichikuou.xsystem4 以外のアプリのディレクトリで、表示されているものもあるということでしょうか。

仰るとおりアクセス権の問題のように思います。adb shell でパーミッションを確認してみてください。 ちなみに私のPixel 7aでは以下のようになりました。u0_a297がxsystem4-androidのユーザーID、u0_a70がUSB経由で書き込んだものです。(u0_のあとは環境ごとに違うと思います)

$ adb shell
lynx:/ $ cd /storage/emulated/0/Android/data/
lynx:/storage/emulated/0/Android/data $ ls -ld io.github.kichikuou.xsystem4
drwxrws--- 3 u0_a297 ext_data_rw 3452 2023-12-03 10:41 io.github.kichikuou.xsystem4
lynx:/storage/emulated/0/Android/data $ ls -l io.github.kichikuou.xsystem4/files
total 7
-rw-rw---- 1 u0_a297 ext_data_rw   47 2023-12-03 10:41 dummy.txt
drwxrws--- 5 u0_a70  ext_data_rw 3452 2023-12-11 08:53 sengoku
lynx:/storage/emulated/0/Android/data $ ls -l io.github.kichikuou.xsystem4/files/sengoku
total 1466441
-rw-rw-r-- 1 u0_a70 ext_data_rw   6849244 2003-09-01 13:46 AliceLogo2.alk
drwxrws--- 2 u0_a70 ext_data_rw      3452 2023-12-03 10:49 DLL
-rw-rw-r-- 1 u0_a70 ext_data_rw        36 2003-02-24 13:20 DrawPluginDLL.inc
-rw-rw-r-- 1 u0_a70 ext_data_rw       418 2005-05-23 16:07 SACT_DLL.inc
drwxrws--- 2 u0_a70 ext_data_rw      3452 2023-12-03 10:50 SaveData
-rw-rw-r-- 1 u0_a70 ext_data_rw    245760 2006-05-26 10:14 System40.exe
-rw-rw-r-- 1 u0_a70 ext_data_rw       757 2006-11-02 11:37 System40.ini
-rw-rw-r-- 1 u0_a70 ext_data_rw    352256 2001-05-30 00:00 ijl15.dll
drwxrws--- 2 u0_a70 ext_data_rw      3452 2023-12-03 10:50 movie
-rw-rw-r-- 1 u0_a70 ext_data_rw   8545905 2006-11-11 14:45 戦国ランス.ain
-rw-rw-r-- 1 u0_a70 ext_data_rw      3262 2006-10-30 14:41 戦国ランス.ico
-rw-rw-r-- 1 u0_a70 ext_data_rw 675711248 2006-10-23 15:43 戦国ランスBA.ald
-rw-rw-r-- 1 u0_a70 ext_data_rw      2249 2006-10-23 15:43 戦国ランスBA.bgi
-rw-rw-r-- 1 u0_a70 ext_data_rw       110 2006-10-30 10:52 戦国ランスDLL.inc
-rw-rw-r-- 1 u0_a70 ext_data_rw 753534480 2006-11-08 10:36 戦国ランスGA.ald
-rw-rw-r-- 1 u0_a70 ext_data_rw    346384 2006-11-08 10:36 戦国ランスGB.ald
-rw-rw-r-- 1 u0_a70 ext_data_rw  54495504 2006-10-25 19:23 戦国ランスWA.ald
-rw-rw-r-- 1 u0_a70 ext_data_rw     26679 2006-10-25 19:23 戦国ランスWA.wai

クラッシュログもありがとうございます。 exeファイルからアイコンを抽出して.xsystem4.icoとして書き込む処理をSnapshot-2023-08-27に入れたのですが、 /storage/emulated/0/Android/data/io.github.kichikuou.xsystem4/files/Rance7_daisengoku/ディレクトリに対する書き込み権限がないためクラッシュしているようです。 とりあえず動けばいいという場合は、なにか適当なアイコンファイル(.ico)をRance7_daisengoku/にコピーしておけばそれが使われるのでクラッシュしなくなると思います。

Snapshot-2023-12-01で実装したZIP経由でのインストールを使う方法もあります。

  1. ゲームのフォルダ全体をZIP圧縮する
  2. USB経由でAndroidのDownload以下にコピー
  3. xsystem4-androidの「ZIPからインストール」でコピーしたZIPを選択

この方法ではxsystem4-android自体がio.github.kichikuou.xsystem4/files/以下にファイルを書き込むので、アクセス権の問題は起きないはずです。

kakurezato commented 11 months ago

io.github.kichikuou.xsystem4 以外のアプリのディレクトリで、表示されているものもあるということでしょうか。

そうです、表示されているものがあります。

仰るとおりアクセス権の問題のように思います。adb shell でパーミッションを確認してみてください。 ちなみに私のPixel 7aでは以下のようになりました。u0_a297がxsystem4-androidのユーザーID、u0_a70がUSB経由で書き込んだものです。(u0_のあとは環境ごとに違うと思います)

確認したところ以下のような状態でした。

oriole:/storage/emulated/0/Android/data $ ls -ld io.github.kichikuou.xsystem4
drwxrws--- 3 u0_a433 ext_data_rw 3452 2023-12-02 09:37 io.github.kichikuou.xsystem4
oriole:/storage/emulated/0/Android/data $ ls -l io.github.kichikuou.xsystem4/files
total 3
drwxr-s--- 5 shell ext_data_rw 3452 2023-12-02 13:18 Rance7_daisengoku
oriole:/storage/emulated/0/Android/data $ ls -l io.github.kichikuou.xsystem4/files/Rance7_daisengoku/                                                            <
total 1815329
-rw-r--r-- 1 shell ext_data_rw   6849244 2003-09-01 13:46 AliceLogo2.alk
drwxr-s--- 2 shell ext_data_rw      3452 2023-12-02 13:17 DLL
-rw-r--r-- 1 shell ext_data_rw        36 2003-02-24 13:20 DrawPluginDLL.inc
drwxr-s--- 2 shell ext_data_rw      3452 2023-12-02 13:17 Manual
-rw-r--r-- 1 shell ext_data_rw   1007104 2010-02-25 11:56 Rance7.exe
-rw-r--r-- 1 shell ext_data_rw       418 2005-05-23 16:07 SACT_DLL.inc
-rw-r--r-- 1 shell ext_data_rw       772 2023-12-02 13:10 System40.ini
-rw-r--r-- 1 shell ext_data_rw         4 2010-08-24 13:00 Version.txt
-rw-r--r-- 1 shell ext_data_rw    352256 2001-05-30 00:00 ijl15.dll
drwxrws--- 2 shell ext_data_rw      3452 2023-12-02 13:18 movie
-rw-r--r-- 1 shell ext_data_rw      4273 2023-12-02 13:10 【必読】Readme_大戦国ランス.txt
-rw-r--r-- 1 shell ext_data_rw  12802767 2023-12-02 13:10 戦国ランス.ain
-rw-r--r-- 1 shell ext_data_rw 303199760 2023-12-02 13:10 戦国ランスBA.ald
-rw-r--r-- 1 shell ext_data_rw      6138 2023-12-02 13:10 戦国ランスBA.bgi
-rw-r--r-- 1 shell ext_data_rw       110 2006-10-30 10:52 戦国ランスDLL.inc
-rw-r--r-- 1 shell ext_data_rw 988933136 2023-12-02 13:10 戦国ランスGA.ald
-rw-r--r-- 1 shell ext_data_rw 480462352 2023-12-02 13:10 戦国ランスGB.ald
-rw-r--r-- 1 shell ext_data_rw  54981904 2023-12-02 13:10 戦国ランスWA.ald
-rw-r--r-- 1 shell ext_data_rw     26835 2023-12-02 13:10 戦国ランスWA.wai
-rw-r--r-- 1 shell ext_data_rw   8383504 2023-12-02 13:10 戦国ランスWB.ald

グループ?の書込み権限がなかったようです。 chmod にてfiles以下のディレクトリに書込み権限を付与したら最新版でも起動するようになりました。

Snapshot-2023-12-01で実装したZIP経由でのインストールを使う方法もあります。

1. ゲームのフォルダ全体をZIP圧縮する

2. USB経由でAndroidの`Download`以下にコピー

3. xsystem4-androidの「ZIPからインストール」でコピーしたZIPを選択

この方法ではxsystem4-android自体がio.github.kichikuou.xsystem4/files/以下にファイルを書き込むので、アクセス権の問題は起きないはずです。

この方法でも上手くいきました。

こちらの環境の問題だったようですみません。 助かりました、ありがとうございます。

ちなみに io.github.kichikuou.xsystem4 ディレクトリは表示されないままですが、Googleコミュニティで情報を募ったところAndroid12以降の仕様だとの情報がありました。 現状はroot化などの非正規の手段でないとどうしようもなさそうなので諦めます。

kichikuou commented 11 months ago

ちなみに io.github.kichikuou.xsystem4 ディレクトリは表示されないままですが、Googleコミュニティで情報を募ったところAndroid12以降の仕様だとの情報がありました。

kakurezatoさんのPixel3a (Android12)や私のPixel 7a (Android 14)で動いているという状況と矛盾するのでその情報は正しくないと思いますが、手元で再現できないとこれ以上の調査は難しいです。お手数ですが当面はZIPからインストールする方法での対処をお願いします。

kakurezato commented 11 months ago

ちなみに io.github.kichikuou.xsystem4 ディレクトリは表示されないままですが、Googleコミュニティで情報を募ったところAndroid12以降の仕様だとの情報がありました。

kakurezatoさんのPixel3a (Android12)や私のPixel 7a (Android 14)で動いているという状況と矛盾するのでその情報は正しくないと思いますが、手元で再現できないとこれ以上の調査は難しいです。お手数ですが当面はZIPからインストールする方法での対処をお願いします。

個人的にはAndroid14で出ていたストレージにアクセス出来ない不具合に近いのかなと思っています。 複数のGoogleアカウントでログインしている状態なのでその辺りも関係してるかも?

最新版でプレイできるようになっただけで十分すぎるほどありがたいです。 アプリ側の問題でもなさそうですし気になさることもないかと。 こちらで対応可能なので今後も楽しませていただきます。 対応のほど、ありがとうございました。