HSP Dish helperによるアンドロイド版アプリ AAB形式によるビルド、32bit OSでは現状できない感じ

2022年 11月 18日
 
 
 * 結論を書きます。

 現状では 32bit OSでは、グーグルアプリの AABファイル形式に対応した HSP3.7βの Dish helperでのビルドは難しい感じです。

 ただ自分はスキルが低いので絶対にできないのかは分かりません。
 
 
 今回はレポート形式でやってみたいと思います。

 今回のビルドには、HSP3.6では無くて、HSP3.7βを使いたいと思います。

 なぜかと言うと HSPDish helperが ANDROIDの .AAB形式ファイルに対応しているらしいからです。

 ※ Google Playに公開するための新規アプリは、2021年8月からandroid 11(API30)及びAAB(Android App Bundle)形式で登録する必要があります。

 と言う事らしいので、HSP3.6の helperではアプリストアへアップできない可能性があります。

 注意 : ビルドと実機転送は 32bit OSでも HSP3.6の helperを使えばできます、前回の記事参照。

 後 APKファイルでのストアへのアップができないかどうかは、現時点では検証してません。
 
 
 と言う事で、今回は 3.7βの helperで進めて行きます。


 
 

 それじゃあ 3.7βの ANDROID版マニュアルを見て、と。
 
 
 SDKは新たに Gradle(Gradleはビルドツールで Android SDKとは違います)というのを用意しないといけないのかな?

 マニュアルにダウンロード先があるので開く。


 
 
 ページの下の方に Command line tools onlyというのがあるので、それの自分の場合は WINDOWSなのでそれをダウンロードする。


 
 
 100MBあまりのファイルで Zipの展開に数分かかる。

 フォルダの位置だけど、マニュアルだと推奨フォルダは、「c:\and-sdk」です。とあるけど、cドライブのフォルダが無駄に増えるのは嫌なので、自分はとりあえず「c:\ANDROID\and-sdk」にしてみる。


 
 
 このフォルダの中に、先にダウンロードした cmdline-toolsフォルダを入れれば良いみたい。

 
 
 JDK (Java Development Kit)をインストールしてください。JavaSE 16、またはJavaSE 17を推奨します。

 ふむ、今までは SE 8推奨だったけど、SE 16、SE 17で良いのか、と言っても 32bit版あったかなあ。

 ※できる限り、64bit環境で64bit版をご使用ください。32bit環境での検証は行っていません。

 む、自分のPCは win7の 32bit版だ、流石にもう 64bitにしないとダメかもしれないなあ、まあ、お金が無くてそのままにしてきたけど。

 とりあえず、このまま 32bitで進めてみて、ダメだったら PCの 64bit更新を考える。
 
 
 なるほど、どうやら JavaSEの 32bit版は SE8までみたい、それで SE8が残ってたのか。

 SE9以降には 32bit版は無くて、32bit版の更新は全部 SE8で行うみたい、たぶん。

 JsvaSEのダウンロードページ

 下の方に SE8のダウンロードがある。

 しかし、まあ普通の人は 32bitOSなんて使って無いと思うので、推奨のSE16 SE17を使いましょうね。

 

 よく分からないけど 32bit版も 2030年までは使えるという事だろうか。
 
 

 そういう事なら、今まで使っていた JavaSE8は 8u91だったんだけど、せめて最新の 8u351を使ってみる事にする。

 インストール方法がよく分からないので、一旦前の JE8u91をアンインストールする事にする。


 
 
 改めて jre-8u351-windows-i586.exeをクリックしてインストールを進める。


 
 
 インストールはできたみたいだけど、プログラムのアンインストール欄に表記が無いので再起動してみた。

 でもやっぱり無い。

 これはランタイム(JRE)ので SEのでは無い。

 はて、今度アンインストールする時はどうするんだろう?

 ちょっと変だけど、とりあえず進める。
 
 
 
 HSPDish Helperを立ち上げる。

 管理者権限で立ち上げるはずだったけど書いてないな。
 
 
 この時点だと ver1.94、まずオプションを押してフォルダを指定する。


 
 
 Java、インストールしたものは Program Failesにある

 
 
 SDK

 
 
 プロジェクトは任意だと思うので、今回は製作中の CDWの buildフォルダを使う。

 マニュアルだと推奨フォルダは、「c:\and_project」です。 という事なんだけど、これらはパス、つまりフォルダの位置の記述が長いとエラーになったり、何か余計な文言(日本語だとかスペースだとか)が入るとエラーになったりするためのリスク回避だと思う、たぶん。
 
 
 
 最初に、ビルドに必要なツール類、Platform APIのインストールを行う必要があります。と言う事なので、マニュアルに従って、まず SDKセットアップボタンを押してみる。


 
 
 自動でやってくれるみたい。

 自分の環境で 2分くらい。

 これ、つまり前みたいに SDKマネージャーで個別に必要なものをインストールしなくて良いみたい、ワンボタンで OK?
 
 
 それでは androidでビルドしてみます。

 下の androidタブを押します。

 API(ANDROIDのバージョン)は現時点では 31になってます、さっきSDKセットアップボタンを押した時に自動でインストールされたものだと思います。

 プロジェクト名を書きます、今回は CDWで最後にビルドテストしたものの続きで書いてます。

 新規作成を押します。
 
 
 設定したプロジェクトフォルダプロジェクト名のフォルダが作成されます。


 
 
 中身はこんな感じ

 一見フォルダが少なくなったりと、色々変わっているようです。
 
 
 helperの表示は次のようになります。

 ソーススクリプトにプログラムファイル(.hsp)の基点を指定します。

 あるいはプロジェクトフォルダ内の hspフォルダにスクリプトファイル(.hsp)をコピペでも良いようです、その場合は main.hspという名前のファイルがスタートの基点になるそうです。
 
 
 Assetフォルダを開くボタンを押して assetsフォルダを表示してみます。

 なるほど、ずいぶん下の階層になったようです。
 
 
 データをコピペします。

 画像データの他、音声データもデータファイルも、全てここに放り込めば良いはずです。

 説明書によると、本 helper(3.7β2から)では dpmパックファイルを aseetsに入れる事で使用できるそうです。
 
 
 hspフォルダ内に .iniファイルを用意します。

 このファイルはメモ帳で書いて、ファイル名を .iniにしたものですけど、ほぼ実機の表示設定です。

 中身はこんな感じ

 これで 540 × 960ドットのフルスクリーン表示してくれます。
 
 
 
 本 helperでは、しまくろねこさんによる Dish P HelperAndroid/iOSアイコン作成ツールが使えるようになってます。


 
 
 Dish P Helper


 
 
 Android/iOSアイコン作成ツール

 しまくろねこさんは流石ですね。
 
 
 
 それでは ビルドボタンを押してビルドしてみましょう。


 
 
 失敗しました

 Downloading https://services.gradle.org/distributions/gradle-7.3-bin.zip

 と出てるのでダウンロードしてみる。

 ブラウザに上記アドレスを入れると勝手にダウンロードしてくれる。


 
 
 元のページはこんな感じ。


 
 
 使い方が分からないので、まず Gradleについて調べる、グーグルで先頭に出たページ。

 Gradleとは何者?インストール方法〜使い方までわかりやすく解説 TRAINOCAMP

 つまり、今までのアパッチアントと同じビルドツールという事みたい、なんかスクリプトを使ったビルドが出来るので、細かいビルド編集ができるとかなんとか言うのが特徴なのかな。

 どうもパスを通せば良いみたいなのでやってみる。
 
 
 まず適当な位置に置いて


 
 
 PATHの通し方、WIN7の場合、[コントロールパネル]→[システムとセキュリティ]→[システム]と進み、画面左にある[システムの詳細設定]をクリックする。


 
 
 詳細設定タブの環境変数ボタンを押す。


 
 
 システム環境変数の項目から Pathを見つけて、クリックして編集ボタンを押します。


 
 
 変数値の所を最後尾にして ;(セミコロン)を足します。


 
 
 Gradleの binフォルダを開いて、どれでも良いのでプロパティを開きます。


 
 
 場所:に書いてあるアドレスをコピーします。


 
 
 先ほどの ;(セミコロン)の後に貼り付けて OKを押します。

 Gradleの場合、指定するのは binフォルダと言う事ですね。
 
 
 OKを押します。


 
 
 パスが通っていれば、コマンドプロンプトで gradle -vで以下のように表示されるようです。


 
 
 それではもう一度クリーンを押してビルドしてみます。

 ダメでした

 ログを翻訳してみる。

* What went wrong:
Unable to start the daemon process.
This problem might be caused by incorrect configuration of the d
For example, an unrecognized jvm option is used.

* 何が悪かったのか:
デーモン プロセスを開始できません。
この問題は、d の構成が正しくないことが原因である可能性があります。
たとえば、認識されない jvm オプションが使用されています。

 よく分からないけど、そういえば Javaのインストールが変だったし Javaのパスはどうかな。
 
 
 環境変数の Pathを確認したけど Javaのパスは無いので書き足してみる。

 Javaの場合も binフォルダを指定すれば良いみたい。


 
 
 コマンドプロンプトで javaと入れてみる。

 パスは通ったみたい。
 
 
 もう一度ビルドしてみる。

 同じくダメでした。

 Error occurred during initialization of VM
 Could not reserve enough space for 2097152KB object heap

 VM の初期化中にエラーが発生しました
 2097152KB のオブジェクト ヒープに十分なスペースを予約できませんでした
 
 
 2GBのメモリが確保できなかった、と読める感じがする。

 32bitOSのメモリは 4GBまでなので、自分の PCは 4GBメモリを積んでるけど、システム(OS)で結構使ってるし、フリーのメモリとなると確かに 2GBも無い。

 という訳で helper以外のソフトを全部閉じて実行してみる。

 同じでした。
 
 
 エラーの文を Google検索にかけてみる。

 トラブルシューティング Java[tm]: VM 初期化中にエラー: Could not reserve enough space for object heap が発生 ORACLE

 アカウントを持っていてサインインしないと詳しくは見れないみたいだけど、どうせ見ても詳しい事は自分には分からないかも。

 まあ適当に Javaがメモリ確保の設定に失敗してるっぽい。
 
 
 jvm xmxでググってみる。

 Java で -Xmx や -XX:MaxRAM オプションを指定した際の最大ヒープ・サイズを調べる Qiita

 こんな項目がある。

 ・最大ヒープ・サイズ: 物理メモリーの1/4

 Javaを直接いじった事が無いので、よく分からないけど、これの通りなら 4GBのメモリなら最大 1GBなんだろうか。

 でも、これだと 64bitOSだったとしても 8GBはメモリ積んで無いとダメって事かな?

(別の情報で ANDROIDの開発環境である Android Studioが 2019年くらいで 32bitのサポートを終えていて、メモリ 8GB推奨になってるらしいので、そういう事かもしれません)
 
 
 ひとつ気になる項目があるので試してみる。

 4. システムの仮想メモリが不足していないかどうかを確認します(32ビットまたは64ビットJVM)

 初期の割り当てでも 3GBあるようなので関係無いと思うけど、一応 12GBにしてみる。

 同じでした。
 
 
 まあ、自分は Javaはやった事無いので、このくらいにしか分かりません、あきらめる事にします。

 おそらくメモリが足りないんだと思いますけど、いずれにせよ 32bitOSでは現状難しい感じですね。

 Android Studioで Gradleのファイルを Project>Gradle Scripts>gradle.propertiesとたどっていって、org.gradle.jvmargs=-Xms512m -Xmx1024mと設定、とかなんとか、要するに Javaの設定でメモリ上限を -xmx1024mできれば進めるっぽいんですけど、自分にはハードルが高すぎる感じです。

 素直に 64bitにした方が良さそうな感じですね。
 
 
 あとは AABファイルでは無くて、今までの APKファイルでどこまで出来るのか、というのがありますけど。

 最近は最新のゲームも大体 64bitじゃないと出来ないっぽいですし、ブラウザやソフトを沢山開くと遅くてメモリ不足だなと感じてたし、そろそろ潮時かもしれません。
 
 
 タイミングよく ESETにもダメ出しくらってるよ。


 
 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です