原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

Unityでビルド時にCommandInvokationFailure: Unable to convert classes into dex format.エラーが出たときの対処

桜散る・・・

 インディーゲームフェスティバルのTOP20が発表されましたね。
我が「キューティーサーキット」は残念ながら選外となったのですが、選ばれたアプリの中には、インディゲーム界隈で既に話題となっていたタイトルもあったりして、結構な有名どころも応募していたことを知ってビックリ。
みんな狙うところは一緒なんですね。

 

というわけで・・・

 目標としていたコンテストに落選、と大変残念な結果となったわけですが、逆に考えると未完成分のステージの作成やらイベント関連の構築などの「キューティーサーキット」完成版リリースまでの残作業については焦って作業する必要もない訳で、これまでのように深夜までPCの前に噛り付いて時間に追われることもない、と思うとちょっとホッとしたり。

 

その先を曲がったら、きっと星空が広がっている

 

この気持ちでがんばります。

 

さて・・・

 急いては事を仕損じる、と諺にもあるように、何事も焦ってやると失敗しがちで、急ぐときほど落ち着いて行動するべきなんですが、時間に追われてそんなことを言ってられない状況になると、ついつい楽に解決できる方法に流れてしまい、後で大きな後悔をする羽目になったりすることってあります。

 

 「キューティーサーキット」の場合もそうで、Unityで課金処理を実装するのはそんなに難しくないらしいのですが、製作中は余裕を持って調べることができなかったので、より簡単に実装できるアセットを購入して課金処理を作成しました。


 が、つい先日、そのアセットがUpdateしたよ。とUnityからメールが来たので、ホイホイとアセットストアからダウンロードしてアップデートしたらワラワラとエラーがでる。

 

 内容は、クラスが重複しているよ。というエラー。どうやら今回のアップデートで大幅にディレクトリ構成を変えたらしく、スクリプトファイルが上書きされず、以前のスクリプトが残ったままになっている。
 
 ん~、なんじゃそれ、とは思ったものの、仕方なく重複分の古いファイルをポチポチと削除、すると今度は元々使用していたメソッドに対して、そんなメソッドはないよ。見たいなエラーが発生。はぁ?と、どういうこと?と調べると、ディレクトリ構成だけじゃなく、クラス名が丸々変わっていたりするものがある。
 
 いや、いや、ありえんし。どっかの金融系システムじゃあるまいし、3社合同で開発とかしてるわけじゃないんだからi/fの整合ぐらいはちゃんとしろよ。と怒りに震えたのですが、その振り上げた拳を下ろすところはどこにもないので、至ってポーカーフェースのまま静かにソースの修正を実施。時間をかけて修正して、これで大丈夫だと思ってAndroidビルドしてみると
 
 CommandInvokationFailure: Unable to convert classes into dex format.

ゴ━━━━(# ゚Д゚)━━━━ルァ!!

 

plug-inが重複ですか、そうですか。
そうです、上記のエラーがでて、詳細エラーメッセージに java.lang.IllegalArgumentException: already added とか表示される場合は、クラスファイルの多重定義になっています。
ソースレベルでのクラスファイルの重複はビルド以前にconsoleに表示されるので分かるかと思いますが、そうでない場合はPluginsフォルダ内のaar/jarファイルでクラスファイルが重複している可能性があります。
今回の場合は、バージョン違いのaar/jarファイルが重複して存在していたため、上記のエラーとなっていました。
古いaar/jarファイルを削除してスッキリさせましょう。そして、このエラーでGoogle検索してこのブログを開いてここまで読んでくれた方、ご苦労様、ありがとう。焦らずにもっと簡潔に書いてあるブログを探しましょう。

 

そういえば・・・

 はてなブログをPro版に変えたのでドメインを取得しました。これでGoogleアドセンスに申し込める!と思って申し込んだら見事に審査に落ちました。コンテストといい落選続きです。ええ、性格が悪いからですね。

 

最後に宣伝

 ダウンロード数は全く伸びませんが、完成版をリリースする計画は変わりません。iOS版もリリース予定です。がんばります。お子様からお年寄りまで楽しめる内容となっています。とか、プレスリリースしても今のところ全て空振りです。こちらも落選続きです。つまり、性格が悪いからですね。

goo.gl

と、思ったら・・・

Appliv様にレビューを掲載して頂きました。ありがとうございます。

良かった、性格悪くなかった。

android.app-liv.jp

 

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。