内部テスト版リリースを試みる Part4、HSPDish Helper ver.1.72を使って 64bit版(内包).APKファイルをビルドする


2020年 5月 24日
 
 
 今回は HSP3.6β2をダウンロードしてビルドし、アプリコンソールにきちんとアップロードできるかやってみます。

 おにたま(オニオンソフト)のおぼえがき HSP3.6β2を公開しました
 
 
 今回も内容が混沌としているので始めに要点を書きます。

1、64bit版(内包).APKファイルをビルドするには、現時点では HSP3.6β2の HSPDish Helper ver.1.72を使います。

2、その最に現時点では NDK r14bを使います。

3、なぜか Helper ver.1.72では AndroidManifest.xmlのパッケージネーム(package=)を書き換えるとビルドできなくなる。
 そこで、その場合は Helperの新規作成パッケージ名欄に、アプリコンソールの指定の名前(始めにアップロードしたパッケージ名)を書きます。

4、なぜかバージョンコード(versionCode=)は書き換えてもビルドできます。

5、AndroidManifest.xmlはプロジェクトフォルダとその中の binファルダに 2つあるので、書き換えはプロジェクトフォルダのを書き換えます。

6、Helper ver.1.72では .dpmファイル(データパック)は使えません、なぜか自分の場合は .apkファイルの容量が増えるという謎バグでしたけど。
 データは全部 assetsフォルダに放り込みます。

7、Android App Bundle警告は無視しても公開はできます、要するにエラーが無ければ大丈夫みたいです。

8、この状況で API 24以下でリリースビルドすると .APKファイルが生成されない。
 APIの変更は新規作成でないとできないらしい。
 
 
 すべて「現時点では」という事になると思います。
 
 

 HSPDish Helperを立ち上げます。

 ver.1.72になってます、デフォルト(初期状態)で android-29になってます。


 
 

 妙に NDKビルドが長いけど 64bit版もビルドしてるとかだろうか。

 自分の PCが遅いだけかな。

 デバッグビルドはできたので、リリースビルドをしてみる。


 
 
 API 29はダウンロードしてなかったか。


 
 
 そういえば、と思って Helperのオプション画面を出すと SDKマネージャーというボタンがあるので押してみる。


 
 
 SDKマネージャーを呼び出してくれるのか。

 前回の失敗を踏まえてチェックボックスをよく確認して、この 2つだけにする。

 ダウンロードに数分もかからなかった。
 
 
 これじゃ足りない?


 
 
 これでどうかな。

(注 : 画像では 29.0をダウンロードしてますけど、なるべく最新版(この場合は 29.0.3)の方が良いと思います)
 
 
 今度はリリースビルドできました。

 .keystoreのパスワード入力だと思うけど、表示が変わってる。


 
 
 できたようです。


 
 
 それでは、もう一度アップロードを試みる。


 
 
 ふむ、あくまでもパッケージ名は同じでないとダメなのかな。


 
 
 それでは AndroidManifest.xmlを書き直して。

 リリースビルドしてアップロード。
 
 
 たぶん、バージョンコード。


 
 
 バージョンは確か 2だったと思うので 3で。


 
 

 うーん、なんだろう?
 
 
 minSdkVersionと targetSdkVersionは Helper ver.1.72では自動で直してくれるみたい。

 
 
 
 あ、ファイルサイズが 130MBあるな。

 今までは 90MBくらいだった。

 64bit版プラスのためかな?
 余計なファイルが入っていたためでした。
 Helper.1.72の .dpmファイルの不具合みたいです。

 ちなみに本作は画像データが 20MB、音声データが 70MB程です。
 
 
 そうだ忘れてた .dpmファイル(データパック)は使えないという情報があったな。

 それじゃあ画像データを全て assetsファイルに入れて

 念のため、クリーン → ビルド → リリースビルドしてみる。

 うーん NDKビルド長いなー 64bit分だと思うけどかなり気長に待つ必要がある。

 なんとかリリースビルドまでできたので .apkファイルをもう一度アップロードしてみるが NG。

 どうもアプリストアには 100MBまでという制限があるようだ。

 Google Playの100MB制限とAPK Expansion Files

 HSPDishで APKファイルは使えないと思うし、開発は 100MBまでを想定した方がよさそう。

 と言っても、ほとんど音声データなんだけど。
 
 
 それなら削られるような大きいサイズのデータはどうかな、とみてみると

 .dpmファイル(データパック)が紛れ込んでるではありませんか。

 これじゃ画像データ分 2重のデータ容量になってしまう、という事で.dpmファイルを削除。

 もう一度、クリーン → ビルド → リリースビルド。

 元のデータサイズに戻った感じ。


 
 
 よーし、これならいけるんじゃないか、という事で再アップロード。

 あれ?AndroidManifest.xmlの内容は直したと思ったけど、100MBの要領制限は表示されなくなりました。
 
 
 どうもビルドに失敗してるらしい。


 
 
 パッケージ Rが何の事か分からないけど、とりあえず SDKマネージャーで 29Rをダウンロードしてみる。

 失敗した、その事では無いらしい。
 
 
 そうすると、やはりこの辺のどれかかな。


 
 
 3.6β2のマニュアル

 Javaは 1.8だし Antは 1.9だから問題無いとして、NDKは r12だと動作確認済みには乗ってないけど、どうかな。

 試しに r17cを入れてみるか。

 それじゃあ、セットしてと。


 
 
 おお、上手く行った(API 29でのビルドは NDK r12はダメで、r17cではうまく行くようです原因は別のようで不明)

 ではリリースビルド。

 できた、容量も 100MB以下だ。

 しまった AndroidManifest.xml書き直して無い、仕方ないので書き直してやり直し。
 
 
 ビルドできない。

 なるほどどうやらこのパッケージ Rと言うのは AndroidManifest.xmlのこれか。


 
 
 それではデバッグビルドの時は AndroidManifest.xmlをデフォルトにして、リリースビルド時に書き換えてみるのはどうか。

 ダメか


 
 
 て事はあれか、最初にアップロードしたパッケージをそのまま使い倒す必要があると。

 それでは hex_terst_10に戻してやってみる。

 ビルドできない

 NDKをその時使ってた r12に戻してみる。

 できた。

 AndroidManifest.xmlは hsp20200505.hex_test10はそのままだから versionCode=”3″とだけ直す。

 リリースビルド

 

 そうか、APIが変わってるんだった。

 たしかに 10の時使ってた API21の build-toolsは無いけど。

 ではダウンロードしてみる。

 もう一度リリースビルドしてみると、できたと表示されて .apkファイルはできない。

 あーもう、ややこしくて訳が分からない、もう一度一から検証しなおしてみる。
 
 
 

検証のやり直し


 HSPDish Helperは ver.1.72を使う。

 まず NDK r12にて API 29のビルドをしてみる。


 
 
 .dpmファイルを使う、まずデバッグビルドしてみる。

 ビルドはできる、自分の環境で 7分 22秒かかった。

 リリースビルドもできる。

 なぜかファイルが倍近くの 160MB程ある。


 
 
 それでは .dpmファイルを使わないでやってみる。

 assetsフォルダに画像やその他データを入れて

 ビルド、今度は 5分 40秒程だった、どうも初回は7分で、次回(クリーン後)からは5分のようだ。

 ギリギリ 100MB以内でした。

 という事は、これが MZKさんとしまくろねこさんの言っていた .dpmファイルの不具合のようです(それとも違うようです)
 
 
 今度は AndroidManifest.xmlのパッケージ名とバージョン No.を書きか変えてみます。

 クリーンしてビルド。

 ちなみにクリーンボタンを押すと binフォルダをごっそり消去するようです。


 
 
 ビルド終了しました、と表示はされますが .apkファイルは作られません。


 
 
 それでは NDKを r17cにしたらどうでしょう。

 なぜかビルド時間が 3分になりましたけど結果は同じ。


 
 
 今度は新規作成時にパッケージ名をグーグルアプリコンソール御指定の(最初にアップロードした時のパッケージ名)「hsp20200505.hex_test10」にしてみます。

 なぜか今度は初回 2分、クリーン後 1分30秒になる、なぜ?

 ビルドできました。

 AndroidManifest.xmlを見てみる。

 これならパッケージ名は大丈夫そうだ。
 
 
 それではリリースビルドしてアップロードしてみる。

 後はバージョンコードだけですけど・・・


 
 
 それでは AndroidManifest.xmlを書き換えて、クリーン、ビルド。

 お、行けたぞ。

 ではリリースビルドしてアップロード。

 おお、できたぞ、すげー。


 
 
 コンソールの保存を押して

 満を持して確認を押してみる


 
 
 うわああぁ、まだダメなのか。

 64bit版か・・・

 という事でググってみる。

 以下の掲示板の情報を見つけた。

 HSP3Dish 64ビット版が作成されない

 「ビルドした時に libsフォルダの中に armeabi-v7aフォルダが作られその中に.soファイルが作られましたが、
arm64-v8aフォルダは見当たりません。(64ビット版アプリなら arm64-v8aフォルダが作られるらしい)」

 何?ほんとだ arm64-v8aフォルダは無い。


 
 
 「NDKを r20b ではなく r14b に変更したところarm64-v8aフォルダが作られました」

 おお、それはすごいな rootさん優秀、やってみよう。
 
 
 Android NDK、リビジョン 14bをダウンロードする


 
 
 セットしてビルドしてみる

 ちなみに r14bだと初回 5分、クリーン後は 3分半でした、NDKによってビルド時間が変わるようです。
 
 
 なるほど arm64-v8aフォルダが出来てる。


 
 
 それではリリースビルドしてアップロードしてみる。

 64bitエラーは出なくなりました、どうやら 64bit版対応はうまくできたようです。
 
 
 最後の警告、これは Android App Bundle(.aabファイルになるらしい)でアップロードしろよ、もしくは「複数の APKを使って自分で管理します」という事のようです。


 
 
 複数の APKと言うのが Helper.1.72で対応してくれた形式のようです。

 ググってみると Android App Bundleの対応には色々なプログラム環境でも苦慮してるようです。

 例えば UNITYの場合は Android App Bundle形式での書き出しに対応してるようです。
 
 
 という事で、最後にこの警告が出た時は「てめこのやろふざけるなよ」と思いましたけど、要するにエラーはダメですけど警告は問題無いようで、いつの間にか公開できるボタンが一番下に現れてました。

 分かり難い。
 
 
 という事でやっと「公開ボタン」を押します。

 しるか
 
 
 次の画面になりました。

 画面の見方がよく分かりませんけど「アルファ版としてリリース」ボタンを押すとアルファ版に移行するんだと思います。


 
 
 「公開待ち」になりました。

 現在はコロナ禍の影響で審査に時間がかかるようです。

 5月 23日の午後に公開申請しました、と記録しておきます。
 
 
 という事でビルドからリリースまで結局 1ヶ月くらい格闘してましたけど、先達の方達の情報のお陰でほとんど奇跡的に難関を突破した感じです、ありがとうございました。
 
 
 次回は審査待ちを経て HEXTRATEGYの内部テスト版テスター募集という形での ANDROIDスマホ公開になると思います。

 日程は分かりません、しばらくかかる可能性もあります、あしからず。

「内部テスト版リリースを試みる Part4、HSPDish Helper ver.1.72を使って 64bit版(内包).APKファイルをビルドする」への8件のフィードバック

  1. 初めまして橘一馬と申します。
    自分も最近ゲームを作成しGooglePlayに公開してみたくなりデベロッパー登録までしました。

    リリースビルドは大変そうですね。
    HSPDish Helper ver.1.72を使わないと駄目と言う事でしょうか?
    以前、前バージョンをした時、設定がよくわからず苦労しました。
    また、あの苦労をするのかと思うと躊躇しています。

    この奮闘しているブログを見るのは楽しみです。
    これからも頑張って下さい。

    1.  始めまして、コメントありがとうございます。

      >>HSPDish Helper ver.1.72を使わないと駄目と言う事でしょうか?

       現時点ではそう言う事になると思います。
       記事の通りですが以下の通りになるかと思います。

      1、HSP3.6β2をダウンロードし HSPDish Helper ver.1.72を使ってビルドする。
      2、SDKマネージャーで ANDROID API 29をダウンロードする。
      3、NDKr14bを使う。
      javaは 1.8以降、antは 1.9以降なら変える必要無し。

       ふ、ふ、ふ、それよりもソースの問題で NDKビルドできない、実機で別の動作をされる、そうなると地獄ですよ(笑)
       がんばって下さい。

       実は Googleのアプリストアで無くてもアプリを公開する方法はいくつかあるようなので検討してるのですが、例えば自分の HPで公開して別の手段でシャアウェアにしてみるとか、国内の委託販売でもスマホ向けに売れるようなので、そちらと取引するとか。

       グローバル企業であるグーグルとの取引はめんどくさそうですし、どうせアプリストアに上げた所で膨大なアプリに埋もれてしまうような気もするし、あるいは今作だけで状況次第では止めようかとも考えてますけど、実は本ブログを見てくださってる方がそこそこいらっしゃる様なので、一通りはやっておいたほうが良いかな、という理由でやってたりします。

      1. >グローバル企業であるグーグルとの取引はめんどくさそうですし、どうせアプリストアに上げた所で膨大なアプリに埋もれてしまうような気もするし、・・・

        分かります。確かにそうなんですよね。
        私もGoogle Playストアに登録した自分のアプリを検索しても、トップに出てくるのは関係のないアプリだったりと何とも言えない感情が湧いてきます。

      2. >ふ、ふ、ふ、それよりもソースの問題で NDKビルドできない、実機で別の動作をされる、そうなると地獄ですよ(笑)
        怖いです。
        震えています。

        自分がGoogle Storeに登録したいのは友人とかに検索させて「自分のが載っているでしょう!」と言いたいのが理由です。
        それと色んな事が経験したいです。
        AdMobによる広告配信とかもどんな物なのだろうか?と経験してみたいのです。

        >例えば自分の HPで公開して別の手段でシャアウェアにしてみるとか、国内の委託販売でもスマホ向けに売れるようなので、そちらと取引するとか。
        アルテさんやしまくろねこさんの言う事ももっともです。
        また、次回にでも色々と教えて下さい。

  2. お助け下さい。
    HSPDish Helper ver.1.72を使ってみました。
    ビルドでは正常にできスマホでも動きました。
    さて次はリリースだと思いやってみました。
    プロジェクト名.APKが作成されましたと言うメッセージがが出たのですが、
    \binを見てみると”プロジェクト名-release-unsigned-aligned.apk”と”プロジェクト名-release-unsigned.apk”しかありません。
    “プロジェクト名.apk”と言うのはありませんでした。
    上の2つのファイルを名前を変えるのではないのですよね?
    ここのブログに書いてあった事は一通りやってみたのですが・・・。

    1.  うーん、なるほど、API 21でプロジェクトを作成したら同じになりました。

       その後同プロジェクトで APIを 29表示にしてリリースビルドしても変わらず、新規作成時以外は変わらないようです。

       つまり、API 29で新規プロジェクトから作りなおしてみると良いと思います。

       HSPTV!掲示板にはしまくろねこさんはじめ「技術者」がいらっしゃいますので(笑)そちらで聞くと良いかもしれません。

       検証の結果、この状況(Helper.1.72、NDK r14b)では API 24ではリリースビルドで .apkが生成されませんでした、API 25では生成されます。

       つまりこの場合 API 24以下では .apkファイルが作成されないようです。

      1. 新規プロジェクトから作りなおしてみたら出来ました!
        ありがとうございました。

橘一馬 へ返信する コメントをキャンセル

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