米ソーシャルゲームプラットフォーム「Heyzap」へ、「ぬしを釣れ!!」英語版を投入しました。
~以下、経緯~
とある朝、「Heyzap Wants to Feature Your Game」というメールが来ました。
これを寝起きに読んだため、中学生なみの英語力を誇る僕は「おいくそ日本猿野郎!お前のゲームの機能くれ!!」と読み取ってしまいました。
「盗人猛々しいYO!!・・・Zzz」と、どんな罵倒メールを送ろうか、寝て考えることにして二度寝しました。
起きてもう一度そのメールを見てイラっときたのですが、いかんいかんと、ここは冷静に深呼吸してみました。
「Heyzap」ってもしかしてそういう単語かな?と思いぐぐってみたところ、どうやら会社名の様で、日本でいうGREEのような、ソーシャルゲームプラットフォームをやっているみたいです。しかもメールの下の方に、「このゲーム超COOL!!2月中に参加してくれたら、プロモーションするよ!!」とか、くすぐったくなりそうな事が書いてあります。
これは、罵倒メールの文面を考えている場合ではありません。しかもメールの差出人はどうやら金髪美女(想像)のようです。これは反則です。
というわけで、組み込みに異様に時間を取られつつも無事、Heyzapの機能を組み込むことに成功しました(Heyzapのページはこちら)。
~ここから技術的な話~
一体何に時間がかかったかというと、「XMLレイアウトだけに追記した実装では、リリースビルドの際、HeyzapSDKがProguardに”使われてないからいらない”と見なされて、消されてしまい、起動時にClassNotFoundExceptionで落とされる」という問題に頭を悩ませていました。
通常はProguard.cfgでJar全体を難読化対象から除外するらしいのですが、記述のしかたが悪いのかうまくいかず。
Heyzapの技術サポートに投げても返事が来ないし、ぐぐりまくっても出てこないし途方に暮れ、酒に逃げる日々(2日間)を送っていたのですが、ある日ひらめきました。
「ソースコードから呼ばれてない」という原因で消されるのなら、ソースコードから呼んでやればいいのでは??
というわけで、
HeyzapLib.load(this); の後に、
HeyzapButton heyzapbutton = null; のように、使わないけど呼んでみただけ、みたいなコードを追加すると、すんなりいけました。
これはProguardがJarを消してしまう場合、Adlantisなど、XMLレイアウトに追加するだけで動くというもの全てに使えるようです。Jar全体の難読化を除外するよりも、本当に要らないところは捨てる、使うところは難読化すると思うので、より最適化されているような気がします。
そんなこんなで、英語版「ぬしを釣れ!!」にはHeyzapの機能が無事組み込まれたわけですが、このHeyzap、利用者にやたらセクシー美女が多いようです。なぜでしょうか。