古いアプリはストアから消される?
というニュースを以前どこかで聞いたのですが、2018年7末の時点ではAppStoreやGooglePlayで私の古いアプリ達は生存していました。ただし新規にアプリをリリースする場合はiPhoneXやAndroid8に対応させないとダメっぽそうです。
あと古いアプリは検索順も不利になるのかな?と思い検索してみたのですが、以前からほとんど変化ありません。とはいえ、1年もcocos2d-xやxcode/android studioに触れていないので色々環境をアップデートしてアプリを更新する準備をしておこうと思います。
iOSのビルド
まず事前にXcodeのバージョンを最新にアップデートしました(ver9.4.1)。
cocos2d-xの3.15は色々問題があったけれど3.16では解消されたと聞いていました。しかし最新の3.17をダウンロードしてサンプルをビルドしようとしたらエラーが出るではありませんか…
具体的な場所としては下図の赤線の階層(cocosライブラリ/platformフォルダ/CCFileUtiles.cpp)です。
ググって調査したところ、以下のGithubにある修正で対応できました。3.16で解消されたはずなのに何故?
→参考:remove “system” usage (#17921)
iOSはこれでOK。iPhoneXは所持していないのでシミュレータで起動確認できました。
あとCocos2d-xはデフォルトの設定でアラートが大量にでるので設定を少し変更します。まずライブラリから警告が大量にでるので、Cocosライブラリの警告は表示しないようにします(下図)。
あとCocos2d-xはデフォルトでiOS6がターゲットになっているので、これをiOS8に変更しました。現時点のxcodeでは8.0が設定できる一番古い設定でした。ちなみに、この設定でiPhone4以前の端末で起動できなくなります。
ProjectのDeployment targetも8.0に変更しました。
あとwantsFullScreenLayoutで警告がでますが、これはNOの設定をしているときに不具合がでる可能性があり、YESならとりあえずOKなので放置しました。
→参考:iOS7 UI以降ガイド(Apple公式)
さらにdidRotateFromInterfaceOrientationでも警告がでますが、私のアプリはデバイスの回転に対応しない(向きはPortrait固定)ので放置します。
→参考:iOS8以降で、どうデバイスの回転を取り扱うかまとめてみる
あと【possible misuse of comma operator…】と警告がでるので以下のサイトを参考に修正しました(修正しなくても良いと思うのですが、簡単な修正なのでしました)。
→参考:Xcode 9 warning – possible misuse of comma operator here
iOSはこれでおしまい。次はAndroid
Androidのビルド
Cocos2d-xの新規プロジェクトをAndroidStudioで開くと、Gradleのバージョンを上げることを強く推奨されるのでアップデートします(ver2.2.3 → ver3.3)
このアップデートはAndroidStudio自体のアップデートではなくプロジェクト自体の設定のため、プロジェクト毎にアップデートする必要があります。
私の環境ではAndroidStudio自体のバージョンは2.3.3ですがAndroid8の実機で動作確認できました。
→参考:Gradle と Gradle Plugin のバージョンについて
Gradleの処理が終わるとrunボタンがアクティブになるので、早速ビルドしたのですがエラーでビルドできませんでした。原因はNDKのバージョンなので、以下のサイトのとおりNDKを14.1に変更したらビルドが通りました。
→参考:cocos2d-xで作成したプログラムがAndroidのエミュレータ及び実機でビルドできません
でgooglePlayは今後Android8.0に対応していないアプリはリリースできないので、sdkも8.0までダウンロードしました。でもってAndroid8.0を搭載したP20Liteにて起動成功!。
最後にケアレスミスで表示されたエラーについて。昨年まで利用していたNexus7はAndroid8に対応していないため、新しくP20Liteを購入下のですが、実機確認の際に表示されたダイアログを間違えて操作し、Macとの接続を許可しませんでした。
一瞬あせりましたが「confirming dialog…」とあったので、P20Liteを再接続しダイアログを操作して事なきを得ました。
という感じで今回はおしまい。次回はgoogleの広告(Admob)の導入に挑戦したい。
追記: targetSdkVersionの変更
大切なことを忘れていました!。Googleは今年の8月以降、ターゲットAPIレベル 26 以降が必須になるとアナウンスしています。以下のリンクの通り、日本語でも昨年末に発表されました。
今後の Google Play でのアプリのセキュリティおよびパフォーマンスの改善について。
cocos2d-xで作成されたプロジェクトは下図のようにlibcocos2dxのbuild.gradleで設定されています。しかしターゲットAPIレベル (targetSdkVersion)は直接設定されてはおらず、変数「PROP_TARGET_SDK_VERSION」で設定されています。
この変数は下図のようにgradle.propertiesで設定されています。これをGoogleの指示通り26に設定しましょう。
おしまい
twitterを本格的に初めてみた。ブログの更新記事をつぶやくのがメイン。あとCocos2dやUnity、その他アプリ開発に関連するツイッターの方をフォローして情報も集められたらなぁと思います。
— 柳澤@ゲーム作るよ (@designdrill) 2015, 12月 28