cocos2d-x 3.17

投稿者: | 2018年7月26日

古いアプリはストアから消される?

というニュースを以前どこかで聞いたのですが、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)です。

0726_11

ググって調査したところ、以下のGithubにある修正で対応できました。3.16で解消されたはずなのに何故?
→参考:remove “system” usage (#17921)

iOSはこれでOK。iPhoneXは所持していないのでシミュレータで起動確認できました。

0726_2

あとCocos2d-xはデフォルトの設定でアラートが大量にでるので設定を少し変更します。まずライブラリから警告が大量にでるので、Cocosライブラリの警告は表示しないようにします(下図)。

0726_3

あとCocos2d-xはデフォルトでiOS6がターゲットになっているので、これをiOS8に変更しました。現時点のxcodeでは8.0が設定できる一番古い設定でした。ちなみに、この設定でiPhone4以前の端末で起動できなくなります

0726_5

ProjectのDeployment targetも8.0に変更しました。

0726_6

あと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のエミュレータ及び実機でビルドできません

0726_7

でgooglePlayは今後Android8.0に対応していないアプリはリリースできないので、sdkも8.0までダウンロードしました。でもってAndroid8.0を搭載したP20Liteにて起動成功!。

0726_8

Di9LUw1XsAAzChC

最後にケアレスミスで表示されたエラーについて。昨年まで利用していたNexus7はAndroid8に対応していないため、新しくP20Liteを購入下のですが、実機確認の際に表示されたダイアログを間違えて操作し、Macとの接続を許可しませんでした。

0726_9

一瞬あせりましたが「confirming dialog…」とあったので、P20Liteを再接続しダイアログを操作して事なきを得ました。
という感じで今回はおしまい。次回はgoogleの広告(Admob)の導入に挑戦したい。

 

追記: targetSdkVersionの変更

大切なことを忘れていました!。Googleは今年の8月以降、ターゲットAPIレベル 26 以降が必須になるとアナウンスしています。以下のリンクの通り、日本語でも昨年末に発表されました。

Google developers : 2017.12/26

今後の Google Play でのアプリのセキュリティおよびパフォーマンスの改善について。

cocos2d-xで作成されたプロジェクトは下図のようにlibcocos2dxのbuild.gradleで設定されています。しかしターゲットAPIレベル (targetSdkVersion)は直接設定されてはおらず、変数「PROP_TARGET_SDK_VERSION」で設定されています。

0728_a

この変数は下図のようにgradle.propertiesで設定されています。これをGoogleの指示通り26に設定しましょう。

0728_b

おしまい

 
 


コメントを残す

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

Time limit is exhausted. Please reload the CAPTCHA.