Androidのバージョンアップ(→API26)で事故った件

やられました。たーふじです。

天下のGoogle様に一言もの申したい気分。

APIレベルの強制変更はハンパないって〜

あぁ今日も空が青い。

2018年8月から始まったAPI26への強制連行。
(リリース済みの既存アプリは10月中の対応が必要だった)
開発者の皆様も同様にセンブリ茶並みの苦渋を舐めさせられた事かと。

私の場合はアプリがそもそもAPIレベル”22″以下だった事が大変の原因でした。
API26への移行は気が狂いそうになるものでした。
解決したけど達成感よりも虚無感の方が大きい、そんな件。

API23で導入されたカメラ、SDカードの許可仕様
Androidがカメラや外部ストレージの利用許可を得る仕様に変更になった。
いつの間にか方針転換。
このへんApple仕様に寄せていくのが潔いっすね、Googleさん。

ただ私のアプリの場合、minSdkVersionをAPI19にしてたので
Android4.4も動作対象になっており、テストに使ってたデバイスはAndroid5.1(APIレベル22)でした。
そのため、実機テストは十分やったにも関わらずAndroid6以降とAndroid5.xでは挙動が違うことに気づけなかった。
個人開発の大変な点はあまり開発コストかけられない点で、結果、実機のテストバージョンが絞られること。
ユーザーからの指摘により本件不具合が発生していた事がようやく分かりました。
なんてこったい。
ありがたや。 → ユーザーさん

ちなみに実機のAndroidOSを6以降に上げるなんて事はしたくない。
Googleさんの仕組みでAndroid5.xに戻せなくなるっぽいので。
・・・とんだくそ仕様だなオイ。щ(゜ロ゜щ)!!

で、アプリをテストするためにAndroid StudioからAndoidシミュレータを使おうと決意。
昔使おうとしてうまくいかなかったトラウマがあるんで、Androidシミュレータ。
でもきっと今ならうまくいくと心に響かせ再びチャレンジです。
まず基本としてアーキテクチャがARMのAndroidイメージはまともにテストできません。
空前絶後の重たさです。
なのでGoogleさんの推奨どおりx86用のイメージを落とします。
build.propertyおよびApplication.mkのコンパイルタイプをARMからx86に変更し
アプリをコンパイル。モジュールは出来上がった。

いざ起動してみると、ああやっぱり。問題発生。
x86シミュレータで画面がまっくらになる。
アプリに組み込んだAdMob広告だけが表示されてるという切なさ。
なんじゃこりゃ。
だから、やりたくなかってん・・・w

調査の結果、Cocos2d-xフォーラムに行き着き、この問題は最新版では
すでに解決済みであるとのこと。OpenGL描画部分の問題だそうだ。
現在使用しているのはCocos2d-x3.15。
まじか。Cocos2d-xのフレームワークまでアップグレードしなければならないのか。
さすがにそこまでは精神の安定(モチベーション)が保たりひん。(˙꒳​˙ )͟͟͞͞ =

なのでCocos2d-x3.15で作成したプロジェクトのcocos2dフォルダを
3.17のもので一時的に置き換えた
テスト用の別プロジェクトを作成することにしました。

これでようやくx86イメージのAndroidシミュレータでアプリが起動。
カメラのテストができるようになりました。
シミュレータでカメラがテストできる。
この点はAndroid素晴らしいと思う。

その後はJavaのActivityにAPIレベルでの分岐と
カメラの使用許可ロジックなど、せっせと
組み込んではテスト、組み込んではテストとまた大変でした。

Androidアプリの開発者としてAPIレベルの変更仕様を追えてなかったのは
不備ではあるものの、API26に強制的に上げさせるなら
古いバージョンからのアップグレードガイドラインも
用意してくださればな、と思った本件。

こんな感じで1つ対応しようと思うと、芋づる式に他の対応が必要になってくるのが
開発のしんどいところですね。
いやほんと今回はマジで神経すり減らされました。

AndroidはFirebase FCMの組み込みでも苦労させられた。
まあその辺は長くなるのでまた別の機会に・・・。

ガッデム! ⸜( ॑꒳ ॑ )⸝

コメントを残す

メールアドレスが公開されることはありません。