Hextrategy 画像ファイルの枚数を削減する、と転送エラー INSTALL_FAILED_INSUFFICIENT_STORAGE


2020年 6月 12日
 
 
 とりあえず画像の枚数を減らす改造からしてみる。

 ただ現在の ANDROIDが古い機種を切り捨てる仕様なら、もうあんまり意味は無いのかもしれない。

 ANDROID4.0.4の N05Dで 140枚上限なので、今はもうそんな古い機種を使ってるとも思えないし、以降の機種ではそれ以上読み込めると期待できるので、そんなに気にする必要は無いかもしれません。

 まず現在 Hextrategyで読み込んでる画像枚数は 174枚です。

 どういう風に枚数を削減するか考えましたけど、とりあえず「同じ大きさの画像フォーマットを合体させる」という事でやってみます。

 こんな風に同じ大きさの画像を 1枚にまとめます。

 これはエフェクト画像ですけど 1200 × 120ドットが 17枚あるので、まとめると 16枚削減できる訳です(画像の一番上間違ってる)
 
 

 このフォーマットを 17枚連結します。



 
 
 読み込みは次のように改造します。

	n2=effectw		; 画像No,

	pall1w=n2 : n2+
	 celload fi+fi2+"pall1.png",pall1w ; 1200*120画像セット
	  celdiv pall1w,120,120,120/2,120/2

	n1=80 : efw(n1)=pall1w : efgn(n1)=3 ; efw(n1)=n2 : n2+
	 efgx(n1)=120 : efgy(n1)=120 : efga(n1)=10
	  ;celload fi+fi2+"eff_102g.png",efw(n1) ; フレイムカース
	   ;celdiv efw(n1),efgx(n1),efgy(n1),efgx(n1)/2,efgy(n1)/2

 画像は pall1wに 1回だけ読み込みます。

 efgn(n1)が何番目の画像かを現します、コメントアウトは変更された部分です。
 
 
 表示は efp(エフェクトプット)のみの改造で済みました。

 改造部分、元。

	  celput efw(ef(efg+1)),ef(efg+3),eff(efg2+0),eff(efg2+1),eff(efg2+2)

 要するに celputの画像 No.と表示 No.をいじるだけです。

	 efpn1=ef(efg+1) ; グラフィックNo.
	 efpn3=ef(efg+3) ; 表示画像No.

	 if efw(efpn1)=pall1w : efpn3=efgn(efpn1)*efga(efpn1)+ef(efg+3)
	 
	  celput efw(efpn1),efpn3,eff(efg2+0),eff(efg2+1),eff(efg2+2)

 画像 No.が pall1wと同じ時に、表示場所を efgn(efpn1)*efga(efpn1)+ef(efg+3)で求めます。

 efgn(efpn1)が表示 No.で efga(efpn1)アニメの総数、ef(efg+3)は現在表示してるアニメの場所です。
 
 
 次は 960 × 768ドット 14枚。

 これで 13枚削減できます。

 次は 960 × 576 ドット12枚。
 次は 960 × 384 ドット13枚。
 次は 960 × 120 ドット10枚。

 16 + 13 + 11 + 12 + 9 = 61枚削減できたと思います。

 総数は 174枚だったので 174 – 61 = 113枚になりました。
 
 
 これなら 140枚上限の N05Dでも動くのでは、と思って転送しようと思ったら「INSTALL_FAILED_INSUFFICIENT_STORAGE」というエラーが出て転送できない、今まではできてたのになぜ?
 
 
 ググってみると実記のメモリが足りない時に起こるらしいのだけど、確認しても特にメモリが足りない事は無いし、ANDROIDでは原因不明のよくあるバグらしい。

AndroidでのINSTALL_FAILED_INSUFFICIENT_STORAGEエラーの解決方法

 ここに書かれてる通り、マニフェスト(AndroidManifest.xml)に Android:installLocation=”preferExternal”を書き足してSDカードにインストールさせるようにする(後で消し忘れに注意)


 
 
 転送できた。


 
 
 これで画像制限無しのバージョンを N05Dで動かせた。

 とりあえず、やったぜ。
 
 
 それならと Helper 1.72でもう一度ビルドしてN05Dに転送できないかやってみる。

 できない。

 INSTALL_FAILED_OLDER_SDK(古いぜ)と出てる。

 ここで頭の悪い自分はやっと AndroidManifest.xmlが何なのか脳の配線がつながって理解できた。

 このマニフェスト(規定)は基本的なビルドの仕様を設定するファイルだっのだ(ジャーン)

 という事はだ、android:minSdkVersion=”18″(最低動作 API)に 18と書かれている以上 API 15の N05Dで実行できるはずが無いのだ、なるほどそういう事だったのか、今頃気がついて頭悪いな。

 そして今は API 18未満でビルドするとアプリストアでは弾かれる訳だから、それ以下の機種は切り捨てと言う事になる。

 API 18は Android 4.3で 2013/07/24なので、それ以前の ANDROIDには対応しない、という事になる。

 API 17は Android 4.2.2だ。

 自分が思うに、この辺のバージョンアップはウインドウズがそうだったように(ずっと XPで良かったんだよな(笑))、主にセキュリティ対策だったと思うので仕方ないのだろうと思う。

 まあ、N05Dは電池もヨレヨレですぐ落ちるし、遅くてまともにブラウジングもできないし、一部動画も再生されないし、流石にもう使ってる人もいないだろう。
 
 
 そんな N05Dでも画像枚数問題はクリアできたので後の機種では大体動作するだろう、今回は画像枚数問題はこれで切り上げる事にする。

コメントを残す

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