Androidでcocos2dxを使ったアプリを作るには、create-android-project.shで自動生成されたプロジェクトを使うのが一般的なやり方だと思うんだけど、いざリリースしようとしたときにソースの難読化を行うProguardを適用したら、できあがったapkをインストールしたものを起動しようとすると強制終了が発生してしまうようになってしまった。その解決方法。
Proguardは難読化として、クラスのメソッド名とかを単純な1文字とかの名前に置き換える。しかし外から呼び出されるメソッドは名前を変えられてしまうと困るので、置き換えないように設定を書く必要がある。
Proguardを有効にするには、proj.android/project.propertiesの proguard.config=...
の行頭の#
を取り除いてproguardの設定ファイルを指定する:
proguard.config=proguard-project.txt |
設定ファイル proj.android/proguard-project.txt には以下の設定を追加する:
# Cocos2dx |
org.cocos2dx.lib
以下すべてと、ネイティブのものはkeep
する。自分の場合はAdmobも使っているので、そのクラスやメソッドも難読化しないようにする必要があった。
またProguardとは関係ないけど、AdmobのAdView
をアプリのonDestroy
時にdestroy
してやらないと、次回起動時に強制終了する場合があったので注意。
追記
- 新たに試したところ、上記の記述だといろいろエラーが出る。いつ変わったんだろう? https://github.com/devspacenine/SoundboardLibrary/blob/master/proguard.cfg