2013年4月30日火曜日

XperiaZを無線LAN接続でデバッグする


XperiaZを無線環境でデバッグできるか調べた。

結論から言うと一応できたけど設定時のみUSB接続が必要。
接続が外れるたびにUSBで繋いで設定しなきゃだめっぽいかな。
一度繋がってしまえばクレードルで充電したままでもデバッグ機能を利用可能。
追記:一度設定すればUSBで接続する必要なかった。詳細は一番下。


以下手順。


1.端末をPCとWiFiで繋ぐ
 ┗なんとかして家庭の無線LANに繋ぐ。
2.端末のIPを調べる
 ┗設定->Wi-Fi->メニュー->詳細設定->IPアドレスを確認
IPアドレスの確認 
今回は192.168.1.3。メモ。
3.端末の設定
 ┗設定->開発者向けオプションを有効に
     ┗USBデバッグを有効に
4.PCと接続
 ┗PCと実機をUSBケーブルでつなぐ
  しばらくするとPC側にドライバがインストールされ、接続完了となる。
5.接続の確認
 ┗"adb devices"コマンドにて確認
  adb.exeはAndroidSDKインストール先にある。
USB接続で認識されているか確認
デバイス名が表示されればOK
6.接続ポートの設定
 ┗"adb tcpip 5555"を実行(ポートは好きにして。)
7.接続
 ┗"adb connect 192.168.1.3:5555"を実行(IPとポートは調べたやつ)
  Connect to ~~と出れば接続OK
無線LANでの接続
8.USBを外す
9.接続できてるか確認
 ┗"adb devices"コマンドを再度実行
  デバイスが出てこればOK


この状態ならlogcatも見れるしeclipseから実行もできる。
ddmsからスクリーンキャプチャも撮れる。
クレードルで充電しながらでもOK。
なかなか便利。
しばらく使ってみよう。

追記:
ここまで設定したあとであれば、
・端末の開発者オプションON、USBデバッグON
・PCから"adb connect 192.168.1.3:5555"
でいつでも接続可能。
これは便利だ。

参考:
 http://techbooster.jpn.org/andriod/environment/7734/

2013年4月29日月曜日

Xperia Z 購入!


2年以上使ってきたGalaxySとお別れを告げ
docomo Xperia Z買ってきました。
なんだかんだでやっぱりAndroidが好きだわー。

ちょっと使ってみたけど
いやー早い。サックサク!
画面大きくて見やすい!
前も後ろもガラスでかっこいい!
Android4.1だしChromeが使える!

このスタイリッシュな感じ久々にソニーっぽい!


ケース買わないとだけど見た目ださくなるの必至だね。
みんなどうしてるんだろう。

防水機だから充電もクレードルでやりたいし・・・。

どーせ開発デバイスとして使うためにはUSB直挿ししなきゃいけないからケースもクレードルもなしでフィルムのみでもいいかも。

もしくはフィルム+ケースでクレードルなしか。

どーしよ!

2013年4月28日日曜日

Activityの追加


既存プロジェクトにActivityを追加する方法。

クラスの追加

srcに新規⇒クラス
名前と親クラス指定


AndroidManifestに追加

マニフェストに追加しないと呼び出せないらしい。

 
 もともとあるActivityを見ながら適当に。
 intent-filter~の部分はデフォルトで起動するActivityを指定する部分だからどれか1か所にだけ記述。

2013年4月27日土曜日

Eclipseでよく使うショートカットキー


Eclipseでよく使うキーボードショートカットキーをメモ。
あんまり多くても覚えきれないのでいくつか使うものだけ。


  • コメントアウト 

 Ctrl+/
 コメントアウトしたい行を選んで実行


  • コード自動整形(フォーマッティング) 

 Ctrl+Shift+F


  • import句自動補間 

 Ctrl+Shift+0
 赤いにょろにょろが出たときに便利


  • Overrideメソッドの作成 

 Eclipse⇒ソース⇒メソッドのオーバーライド/実装
 これキーボードショートカットじゃないな…。


  • 1行削除 

 Ctrl+D


  • javaDoc作成 

 Shift+Alt+J
  
  VisualStudioで言うところのXMLコメント。
javadoc



  • リファクタリング(名称変更) 

 Ctrl+Alt+R
 変数名、関数名、クラス名などにカーソルを合わせた状態で行う。
 変更後エンターで参照先含め全て変更される。

2013年4月26日金曜日

Eclipseでソースコード自動整形の設定

Eclipseでコードの自動フォーマットの設定方法

自動フォーマットって?

整形前
こんなのを

整形後

こんな風に整形する機能

Eclipseでは通常のクラス等のコードとXMLのコードを自動整形することができるみたい。

以下設定方法


整形ルールの設定


  • クラス等のソースコード

Eclipse⇒ウィンドウ⇒設定⇒Java⇒コードスタイル⇒フォーマッター⇒編集
Javaコードのフォーマット設定
編集項目は膨大。お好みに合わせて。

  • XMLコード

Eclipse⇒ウィンドウ⇒設定⇒XML⇒XMLファイル⇒エディター
XMLコードのフォーマット設定

自動適用の設定

実行時に自動適用するように設定する。
Eclipse⇒ウィンドウ⇒設定⇒Java⇒エディター⇒保管アクション

保管時に選択したアクションを実行にチェックを入れる。


自動適用の設定




ここはVisualStudioよりいいなぁ。

2013年4月25日木曜日

INSTALL_FAILED_INSUFFICIENT_STORAGE

プロジェクトを実機でデバッグしようとしたら下記エラーが出た。

配置エラー。
[2013-03-14 23:41:37 - GoGoRocket] Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
[2013-03-14 23:41:37 - GoGoRocket] Please check logcat output for more details.
[2013-03-14 23:41:37 - GoGoRocket] Launch canceled!
十分な容量がありません。

いやいやそんなわけないし。
ギガ空いてるし。

結局再起動したら入りました。たまにあるねこういうの。

2013年4月24日水曜日

Cocos2Dってなんだ?

ちまたで噂(?)のCocos2Dが気になったので調べてみた。
Cocos2D
Cocos2D-x


ぐぐって出てきたこと
・ゲームエンジンらしい。(ゲームエンジンってなんだ)
・iPhoneアプリではよく使われてるらしい
・iPhone用のCocos2D for iPhone,Android用のCocos2D-xがあるらしい
・Sprite(画像?)管理が楽になるらしい
・C++で使う?Lua/Javasctiptで使う?

んー、便利そう?正直よくわからん!

こんなよさそうなページ見つけたから動かそうとしてみたけど情報が古そう?リンクもきれちゃってる。
https://sites.google.com/a/gclue.jp/android-docs-2009/cocos2dno-zumi-rumi

オフィシャルサイトっぽいところでダウンロードしてみたけど…
http://www.cocos2d-x.org/

C++ C++ C++ 、、、、NDK必須ぽいなー。
C++知識ないし時間かかりそう。

いずれは覚えたいけどちょっと保留かな。


どなたかAndroidでCocos2Dの使い方やさしく紹介してるサイトあったら教えてください(´・ω・`)

2013年4月23日火曜日

Pankia match feature がAVDで動かない

以前からネット対戦できるもの作ってみたいなーと思っていて
Pankiaでその機能が簡単に実装できるらしいから試してみた。

結果、対戦部屋はできたけど対戦相手が入ってくるところまでは確認できなかった。

やったことメモ

Wikiを見ながらアプリに組み込み、実機へ転送。
ダッシュボードから対戦部屋を作成できることを確認できた。
対戦メニュー
対戦部屋の作成
部屋の作成完了
ここまでは問題なし。

よーし対戦相手入ってきたときの動き確認しよう!
と思っても実機1台しか持ってない。
ということで仕方なくAVDに同じアプリを入れて実行。

起動すらしない・・・。

03-04 16:49:31.423: E/AndroidRuntime(1098): FATAL EXCEPTION: Timer-0
03-04 16:49:31.423: E/AndroidRuntime(1098): java.lang.NullPointerException
03-04 16:49:31.423: E/AndroidRuntime(1098): at com.pankia.api.networklmpl.bluetooth.BluetoothController.getDeviceAddress(BluetoothController.java:11)
03-04 16:49:31.423: E/AndroidRuntime(1098): at com.pankia.api.networklmpl.bluetooth.BluetoothPacket.getHeartbeatPacket(BluetoothPacket.java:42)
03-04 16:49:31.423: E/AndroidRuntime(1098): at com.pankia.api.networklmpl.nearby.NearbyHeartbeatManager.run(NearbyHeartbeatManager.java:54)
03-04 16:49:31.423: E/AndroidRuntime(1098): at java.util.Timer$TimerImpl.run(Timer.java:284)

どーみてもbluetoothが使えないからだよなー。


ちなみにPankiaの対戦機能はオンライン対戦とローカル対戦の2種類がある。
・オンライン対戦は3Gなり無線LANなりで世界中の人と対戦
・ローカル対戦はBluetoothを使って近くにいる人と対戦
って感じらしい。
現時点では対戦相手が揃ってからの動作を確認したいだけなので
オンライン対戦だけでも動いてくれたらいいのにな・・・

ネット探したけど情報ヒットせず。
どうしようもないのでPankia Supportに書き込んできた。
情報くれるといいなぁ…。

2013年4月22日月曜日

アプリ「104」をバージョンアップしました。

Android4.xで動かなくなってた104を再度リリースしました。

104[トランプゲーム]
naichilab
価格:undefined  平均評価:5.0(1)
今度こそ動くはず!


動かない間に何人かの人はアンインストールしちゃったなぁ。
当然だけど残念・・・。(自分でも動かんかったらアンインストールするしね)

次からは気をつけよう。

2013年4月21日日曜日

AVDに署名付きapkをインストールする

104をリリースする際、自分の持っている端末(GalaxyS)で動作確認したのだが、
リリース後Android4.0の端末にて不具合が出るとの報告を受けた。

今回それを確認するため、AVDに署名付きAPKをインストールしたので方法をメモしておく。

AVDの作成

とりあえず作ったのは下記2点

・XperiaAcroHD(Android4.0.3)
Xperia Acro HD のAVD
・Nexus7(Android4.1.2)
Nexus7 のAVD

署名付きAPKの作成

eclipseのメニューからエクスポート
keystoreを選択してぽちぽちと。

ADBを使ってAPKのインストール

準備
・AVDを起動しておく(1個だけ!)
・APKファイルパスを覚えておく

AndroidSDKをインストールした場所にadb.exeっていうのがある。
自分の場合は "C:\android-sdk-windows\platform-tools\adb.exe"
これをコマンドプロンプトから起動する。

コマンド:adb install [apkのパス]
adb install コマンド
Successと表示されれば成功。
AVDにアプリがインストールされてる。

2013年4月20日土曜日

sqlcipher NoSuchFieldError

直したと思ったバグが残ってた。
先日書いた記事でproguardにより署名付きAPKが動かなくなったけど
それの続きっぽい。

先日の対応で自分の持ってるGalaxyS(Android2.3.3)は解決したんだけど
Android4.0.3持ってる人から立ち上がらないとの報告があった。
実際AVDを立ち上げてAPKを直接Installして動かしてみたらエラーした。
Android 4.0.3でのエラー画面
対応内容メモ

エラー内容は以下の通り
java.lang.NoSuchFieldError: no field with name='nWindow' signature='I' in class Lnet/sqlcipher/CursorWindow;
at java.lang.Runtime.nativeLoad(Native Method)
at java.lang.Runtime.loadLibrary(Runtime.java:368)
at java.lang.System.loadLibrary(System.java:535)
at net.sqlcipher.database.SQLiteDatabase.loadLibs(Unknown Source)
at net.sqlcipher.database.SQLiteDatabase.loadLibs(Unknown Source)
at com.pankia.api.db.LocalDBHelper.(Unknown Source)
at com.pankia.api.db.LocalDB.(Unknown Source)
at com.pankia.api.db.LocalDB.initialize(Unknown Source)
at com.pankia.PankiaController.(Unknown Source)
at com.pankia.PankiaController.start(Unknown Source)
at com.pankia.PankiaActivity.onCreate(Unknown Source)
at com.naichilab.game104.TitleActivity.onCreate(Unknown Source)
at android.app.Activity.performCreate(Activity.java:4465)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
at android.app.ActivityThread.access$600(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:210)
at android.app.ActivityThread.main(ActivityThread.java:4473)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
at dalvik.system.NativeStart.main(Native Method)

net/sqlcipher/CursorWindowの中のnWindowがないって言ってるのか?

昨日proguard-projectに記述したのは
-keep class net.sqlcipher.database.** {*;}

だったのでもしやと思い
-keep class net.sqlcipher.** {*;}

に変更したらエラーしなくなった。

無事起動。
なーんで2.3.3ではエラーしないんだろうなー。

4.0で起動しない状態で2日間ほっといたもんだから何人かアンインストールしちゃった。残念。
今度からはちゃんと署名付きAPKをいくつかのAVDに入れてテストしよう。めんどうだけど・・・。

2013年4月19日金曜日

Can't find SQLiteDatabase.mNativeHandle

リリースした署名付きAPKが実際インストールしてみると動かない。
Can't find SQLiteDatabase.mNativeHandle から始まるエラー。

なんとか直ったのでメモ
以下DDMSで確認した実行時のエラー
03-02 22:21:08.089: E/Database(6563): Can't find SQLiteDatabase.mNativeHandle
03-02 22:21:08.089: E/Cursor(6563): Can't find net/sqlcipher/database/SQLiteCompiledSql
03-02 22:21:08.089: E/Cursor(6563): Can't find net/sqlcipher/database/SQLiteQuery
03-02 22:21:08.089: E/Cursor(6563): Can't find net/sqlcipher/database/SQLiteProgram
03-02 22:21:08.089: E/Cursor(6563): Can't find net/sqlcipher/database/SQLiteStatement
03-02 22:21:08.089: E/CursorWindow(6563): Can't find net/sqlcipher/CursorWindow
03-02 22:21:08.105: E/AndroidRuntime(6563): FATAL EXCEPTION: main
03-02 22:21:08.105: E/AndroidRuntime(6563): java.lang.NoClassDefFoundError: net.sqlcipher.CursorWindow
03-02 22:21:08.105: E/AndroidRuntime(6563): at java.lang.Runtime.nativeLoad(Native Method)
03-02 22:21:08.105: E/AndroidRuntime(6563): at java.lang.Runtime.loadLibrary(Runtime.java:432)
03-02 22:21:08.105: E/AndroidRuntime(6563): at java.lang.System.loadLibrary(System.java:554)
03-02 22:21:08.105: E/AndroidRuntime(6563): at net.sqlcipher.database.SQLiteDatabase.a(Unknown Source)
03-02 22:21:08.105: E/AndroidRuntime(6563): at net.sqlcipher.database.SQLiteDatabase.a(Unknown Source)
03-02 22:21:08.105: E/AndroidRuntime(6563): at com.pankia.api.db.LocalDBHelper.(Unknown Source)
03-02 22:21:08.105: E/AndroidRuntime(6563): at com.pankia.api.db.LocalDB.(Unknown Source)
03-02 22:21:08.105: E/AndroidRuntime(6563): at com.pankia.api.db.LocalDB.initialize(Unknown Source)
03-02 22:21:08.105: E/AndroidRuntime(6563): at com.pankia.PankiaController.(Unknown Source)
03-02 22:21:08.105: E/AndroidRuntime(6563): at com.pankia.PankiaController.start(Unknown Source)
03-02 22:21:08.105: E/AndroidRuntime(6563): at com.pankia.PankiaActivity.onCreate(Unknown Source)
03-02 22:21:08.105: E/AndroidRuntime(6563): at com.naichilab.game104.TitleActivity.onCreate(Unknown Source)
03-02 22:21:08.105: E/AndroidRuntime(6563): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-02 22:21:08.105: E/AndroidRuntime(6563): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
03-02 22:21:08.105: E/AndroidRuntime(6563): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
03-02 22:21:08.105: E/AndroidRuntime(6563): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-02 22:21:08.105: E/AndroidRuntime(6563): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
03-02 22:21:08.105: E/AndroidRuntime(6563): at android.os.Handler.dispatchMessage(Handler.java:99)
03-02 22:21:08.105: E/AndroidRuntime(6563): at android.os.Looper.loop(Looper.java:123)
03-02 22:21:08.105: E/AndroidRuntime(6563): at android.app.ActivityThread.main(ActivityThread.java:3687)
03-02 22:21:08.105: E/AndroidRuntime(6563): at java.lang.reflect.Method.invokeNative(Native Method)
03-02 22:21:08.105: E/AndroidRuntime(6563): at java.lang.reflect.Method.invoke(Method.java:507)
03-02 22:21:08.105: E/AndroidRuntime(6563): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
03-02 22:21:08.105: E/AndroidRuntime(6563): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
03-02 22:21:08.105: E/AndroidRuntime(6563): at dalvik.system.NativeStart.main(Native Method)
03-02 22:21:08.105: E/AndroidRuntime(6563): Caused by: java.lang.NoClassDefFoundError: net.sqlcipher.database.SQLiteStatement
03-02 22:21:08.105: E/AndroidRuntime(6563): ... 25 more
03-02 22:21:08.105: E/AndroidRuntime(6563): Caused by: java.lang.NoClassDefFoundError: net.sqlcipher.database.SQLiteProgram
03-02 22:21:08.105: E/AndroidRuntime(6563): ... 25 more
03-02 22:21:08.105: E/AndroidRuntime(6563): Caused by: java.lang.NoClassDefFoundError: net.sqlcipher.database.SQLiteQuery
03-02 22:21:08.105: E/AndroidRuntime(6563): ... 25 more
03-02 22:21:08.105: E/AndroidRuntime(6563): Caused by: java.lang.NoClassDefFoundError: net.sqlcipher.database.SQLiteCompiledSql
03-02 22:21:08.105: E/AndroidRuntime(6563): ... 25 more
03-02 22:21:08.105: E/AndroidRuntime(6563): Caused by: java.lang.NoSuchFieldError: mNativeHandle
03-02 22:21:08.105: E/AndroidRuntime(6563): ... 25 more
03-02 22:21:08.117: E/(128): Dumpstate > /data/log/dumpstate_app_error


最初 java.lang.NoClassDefFoundError: net.sqlcipher.CursorWindow に着目して調べてたんだけど
どーも欲しい情報と違う。

次に Can't find net/sqlcipher/database/SQLiteCompiledSql
こっちで調べてみた。
そしたらこちらに有用な情報みっけ。
http://zak-raw.hatenablog.com/entry/20120221/1330657597
どんぴしゃなエラー内容が書いてある。
どーも必要なファイルがproguardによって削除されてるらしい。

proguard-project.txtに以下を記述
-keep class net.sqlcipher.database.** {*;}

うごいた!!
ここまで2時間かかった・・・(笑

2013年4月18日木曜日

アプリにバージョンを設定する

104をバージョンアップしてリリースするために
バージョン設定の方法を調べた。

Google developersによると
・マニフェストファイルに2つの項目があるよ。
・それは"android:versionCode""android:versionName"だよ。

と書いてあります。

でその2つの説明は、
android:versionCode
・アプリケーションバージョンを表す整数値です。
・アップグレードもしくはダウングレードの評価に利用されます。
・整数型で指定し、バージョンアップ内容の大小にかかわらず変更します。
・好きな整数を指定できますが、1ずつインクリメントしてください。
・この値はユーザーには見えません。

android:versionName
・ユーザーに表示されるバージョンの文字列です。
・これは"<major>.<minor>.<point>"のような文字列で表されます。

versionCodeとversionName

versionCodeは毎回インクリメント、versionNameは好きに設定。
でよさそうですねー。

2013年4月17日水曜日

Eclipseから実行する際のUploadタイムアウトの設定

Eclipse上から実行ボタンを押して実機へ配置するとき
タイムアウトが発生することがある。
Failed to install xxx.apk on device : timeout
急に頻発しだしたのでタイムアウト時間を延ばした。

方法はこちら。

Eclipse -> ウィンドウ -> 設定 -> Android -> DDMS -> ADB connection timeout(ms)

を変更するだけ。

2013年4月16日火曜日

Proguard returned with error code 1.

昨日の続き
Progaurd有効にするとapkエクスポートできない件でどハマり。

Conversion to Dalvik format failed with error 1については解決したけど
エラー内容が変わった。


Proguard returned with error code 1. See console

なんとかapk作るとこまでたどり着けたのでやったこと書いとく。

環境
  • ADTは21.1
まず発生してた症状
  • Helloworld作成→apk出力OK
  • proguard有効化→apk出力OK
  • Pankiaプロジェクト参照追加→エラー
エラー内容

[2013-02-28 00:31:54 - test2] Proguard returned with error code 1. See console
[2013-02-28 00:31:54 - test2] Warning: com.amazon.inapp.purchasing.FailurePrompt: can't find superclass or interface com.amazon.android.framework.prompt.SimplePrompt
[2013-02-28 00:31:54 - test2] Warning: com.amazon.inapp.purchasing.KiwiBaseCommandTask: can't find superclass or interface com.amazon.android.framework.task.command.AbstractCommandTask
[2013-02-28 00:31:54 - test2] Warning: com.amazon.inapp.purchasing.KiwiPurchaseRequestCommandTask$1: can't find superclass or interface com.amazon.android.framework.task.Task
[2013-02-28 00:31:54 - test2] Warning: com.amazon.inapp.purchasing.FailurePrompt: can't find referenced class com.amazon.android.framework.prompt.SimplePrompt
[2013-02-28 00:31:54 - test2] Warning: com.amazon.inapp.purchasing.FailurePrompt: can't find referenced class com.amazon.android.framework.prompt.PromptContent
以下大量にエラー

ぐぐりまくったら下記方法を発見。
  • proguard-project.txtに下記を追加
-dontwarn com.google.**
-dontwarn com.amazon.**

これでエラーは出なくなった。
けど無視しただけだよね?本当にこれでいいのか・・・

参考サイト:

2013年4月15日月曜日

Conversion to Dalvik format failed with error 1

104にPankiaを使ってネットランキングとトロフィー機能を付けてみたんだけど
apkにエクスポートする段階でエラーが出てしまう・・・。
Conversion to Dalvik format failed with error 1
proguardなのかpankiaなのか・・・
前はリリースできてたからそれ以降の変更点としては

  • pankiaライブラリへの参照を追加
  • ネットランキング、アチーブメント機能追加
  • proguardの有効化

一気にいろいろやっちゃって原因切り分けれん。

ハマりそうだったのでとりあえず元通りにしてから考え直すことに。
pankiaの参照削除、PankiaActivity削除、proguard無効化、etc...
apk作れることを確認。

さて、まずはproguradだけ確認しようか。
proguardのコメントアウトされている行を再度コメントアウトして・・・

実行したけど相変わらずエラー。
[2013-02-26 23:33:20 - game104] Proguard returned with error code 1. See console
[2013-02-26 23:33:20 - game104] Warning: com.google.ads.m: can't find referenced class com.google.ads.internal.state.AdState
[2013-02-26 23:33:20 - game104] Warning: com.google.ads.m: can't find referenced class com.google.ads.internal.state.AdState
[2013-02-26 23:33:20 - game104] You should check if you need to specify additional program jars.
[2013-02-26 23:33:20 - game104] Warning: there were 2 unresolved references to classes or interfaces.
[2013-02-26 23:33:20 - game104] You may need to specify additional library jars (using '-libraryjars').
[2013-02-26 23:33:20 - game104] java.io.IOException: Please correct the above warnings first.
[2013-02-26 23:33:20 - game104] at proguard.Initializer.execute(Initializer.java:321)
[2013-02-26 23:33:20 - game104] at proguard.ProGuard.initialize(ProGuard.java:211)
[2013-02-26 23:33:20 - game104] at proguard.ProGuard.execute(ProGuard.java:86)
[2013-02-26 23:33:20 - game104] at proguard.ProGuard.main(ProGuard.java:492)

んーcom.google.ads.internal.state.AdStateが見つからんって言ってるか?
ぐぐったらここ見つけた。
"AdMob SDK 6.1.0 and 6.2.1"から発生するエラーだから
proguard-project.txtに"-dontwarn com.google.ads.**"を追記しろって。

追記したらapk出力できた。1歩前進。

再度Pankia追加してみる。

  • プロジェクトにpankiaライブラリプロジェクトへの参照追加

そのままエクスポート。

それでもエラー。。。
Proguard returned with error code 1. See console

[2013-02-26 23:43:03 - game104] Proguard returned with error code 1. See console
[2013-02-26 23:43:03 - game104] Warning: com.amazon.inapp.purchasing.FailurePrompt: can't find superclass or interface com.amazon.android.framework.prompt.SimplePrompt
[2013-02-26 23:43:03 - game104] Warning: com.amazon.inapp.purchasing.KiwiBaseCommandTask: can't find superclass or interface com.amazon.android.framework.task.command.AbstractCommandTask
[2013-02-26 23:43:03 - game104] Warning: com.amazon.inapp.purchasing.KiwiPurchaseRequestCommandTask$1: can't find superclass or interface com.amazon.android.framework.task.Task

以下700行以上続くエラー。。。なげーよ。
proguardに色々書いてみたが消せず。
progaurdわけわからんと思って無効化してみたら別のエラー出るし…。

また明日・・・。

追記:こちらで一応解決しました。



参考サイト:


2013年4月14日日曜日

proguardの有効化


Pankiaを導入した際、Proguardの設定がうまくできかなかったので再度調べてみた。

Pankiaのドキュメントには
・ADT8.0以降で作成したプロジェクトには"proguard.cfg"ファイルが自動生成されている
・"proguard.cfg"に記述を追加してね~
・追加しないとAPKにしたとき正しく動かないよ~
って書いてあったのだが
どこを探しても"proguard.cfg"がない。

調べてみると詳しく説明してあるサイトを見つけました。
Androidに統合されたProGuardに関する改善点(ADT17)
ここによると
・ADT17.0にてproguardに関する改善がいくつか行われた。
・"proguard.cfg"はなくなり、2つの構成設定ファイルに統合された。
・ただ使うだけなら"project.properties"の中の下記行をコメント解除するだけでいい。
# To enable ProGuard to shrink and obfuscate your code, uncomment this
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
というようなことが書いてありますね。

なるほどシステム用、アプリケーション用に分かれたのは合理的。
ユーザーはシステム用の方は意識する必要がなく、必要ならアプリケーション用の方だけ修正すればいいと。
上記コメントアウト行の最後にある"proguard-project.txt"というのがアプリケーション用っぽいです。
探してみたら新規で作ったプロジェクトのRoot直下に置かれています。

こいつがproguard.cfgの代わりとみて間違いなさそう。

開いてみるとプロジェクトごとのkeepオプションはここに書いてね~って書いてありますね。
pankiaを使うときはここに記述するようにします。

2013年4月13日土曜日

Androidのエミュレータが遅すぎたからVMwareにAndroidOS入れてデバッグできるようにした


この記事ではAndroid2.3の環境を作ります。 Android4の環境の作り方はこちらで紹介してます。 GooglePlayからアプリのダウンロードとかもできるので気に入ってます。

AndroidDeveloperからadt-bundle-windowsダウンロードしてeclipseでHelloWorld作ったのはいんだけど。。。
フリーズしてんじゃないかってくらいエミュレータが遅かったので解決方法調べた。

方法は2つ。

1つ目は普通にエミュレータを高速化する方法
詳細はこちら→噂の爆速エミュレーター(android)を試してみたがマジで早かった件。

2つ目は仮想マシンにAndroidOS入れる方法
俺のノートPCは古くて1つ目の方法ができなかったので、今回は2つ目の方法を試すことにした。
やってみたらかなり簡単にできた。
OSのイメージさえあればいろんなバージョンの環境が作れる。

やり方

まずはisoダウンロード。
ダウンロード先のっけていいかわかんないから伏せとく。
バージョンはAndroid2.3.7
Android2.3.7のiso


このISOで仮想マシンを新規作成
俺はVMwarePlayerでやることにした。

primaryでbootableでパーティション作ってext3でフォーマットしてインストール
終わったら仮想マシンのネットワーク接続をブリッジに設定
再起動してネットにつながるのを確認
OKなら仮想マシンのIPアドレス確認(俺はnetstatでみた)
ホストOS側の環境変数にADBHOST:[ゲストOSのIP]を設定
ADBサービス再起動
参考:http://d.hatena.ne.jp/androidzaurus/20080930/1222739493
eclipseから実行するとゲストOS側にアプリが起動する

ちゃんと動くISO見つけるのが一番苦労した
新規仮想マシンの作成

仮想マシン名とパス



OSisoを指定
インストール

パーティション作成

新規作成

Primary

容量を好きに指定

Bootable

書き込み

確認してくるのでYESって入力

パーティション作成おわり

インストールパーティションを選ぶ

ext3フォーマット選ぶ

とりあえずYES

とりあえずYES

とりあえずYES
SDカード作る

容量を好きに設定
android起動

ちゃんと起動した

DevTools開く

TerminalEmulator開く

IPアドレス調べる

デバッグできた
Related Posts Plugin for WordPress, Blogger...