Monthly Archives: December 2014

MapFragmentを使うとDuplicate idでて落ちる件

Caused by: java.lang.IllegalArgumentException: Binary XML file line #13: Duplicate id 0x7f0a0060, tag null, or parent id 0xffffffff with another fragment for com.google.android.gms.maps.MapFragment

onCreateViewでこのエラーが出る。

stackoverflowの

http://stackoverflow.com/questions/14083950/duplicate-id-tag-null-or-parent-id-with-another-fragment-for-com-google-androi

これやったら治った。

半日くらいかかった。

Google Play からの通知

アプリ XXXX(パッケージ ID xXXX.XXX.XXX)が Google Play ストアから削除されましたのでお知らせいたします。

削除の理由: デベロッパー販売 / 配布契約書の第 4.4 項への違反

定期的な審査の結果、Google では、アプリが YouTube 利用規約または YouTube API 利>用規約に違反して YouTube 動画をダウンロードまたは収益化したり、YouTube 動画にア>クセスしたりしていると判断しました。許可されない方法でのコンテンツ、商品、サービスへのアクセスはデベロッパー販売 / 配布契約書に違反しており、Google Play では許>容されません。

この特定のアプリは、ポリシーに違反するものとして無効になっています。デベロッパー アカウントが必要な条件を満たしている場合は、ポリシーに準拠するようこのアプリを>改訂し、新しいパッケージ名でアップロードし直すことができます。

キター!!

YouTube様の動画にアクセスもダウンロードもAPIも使ってないのに。。

文言にYouTubeっていうのがあったのでそれを削除しといた。google審査に引っかかるのは想定がいただ。

しかもパッケージ名変えないとならないのかよ。めんどくさ

 

Android studio 1.0.2 でpackage nameを変える方法

eclipse時代からパッケージを変えるのは辛い作業だということを知っている人は知っている作業だがやらないといけないこともあるが、日本語のサイトをいくつか参考にしたがうまくいかなかった。

結局

src/main/java/(com.XX.XXX) のパッケージ部分をRefactor -> move すればいいことに気がついた。

Refactor -> renameをやれって他では書いていたが何回やってもsrcを変えようとされた。

moveを押した後何度かまじ変えんの?みたいなダイアログがでるから全部okで大丈夫だった。あとはclean buildしてandroid studio自体を再起動。buildしなおすでちゃんと動いた。ちゃんと終わった後find . -type f -exec grep com.XXX {} \; -printしたから間違いない。

workspace.xmlこれが引っかかったが、なんか状態の履歴?みたいなのらしい。

あと古いパッケージの空ディレクトリが残ってたから消すこと。

android lollipopでadmobが出ない件

lollipop-2200

<uses-permission android:name=“android.permission.ACCESS_NETWORK_STATE”/>

これがmanufestに足りなかった。ネットワーク状態とかを確認すると言われても困る。

4.4で出てたからいけるわ。みたいな感じでアップロードした後で気がついた。悔しい。。でも。。治った。

PreferenceFragmentが古いandroidで使えない

みたいなのでなんかエラー出て気づいた。

適当に検索したら

https://github.com/Machinarius/PreferenceFragment-Compat

これ使えば行けた。mavenで管理されてて感謝

MySQL情弱だけど孫スレーブを作った

XXX.dmpとshow slave status;だけで作る事になったが、

フィーリングでやるわけにはいかない空気があったので調べた。DBAは死んでいる。

バックアップのスクリプトはこんな感じだった。

mysql -uXXX -pXX XXX -e ‘stop slave’

mysql -uXXX -pXX XXX -e ‘show slave status’ > slave_status.log

mysqldump -uXX -pXX XXX > dump.sql

mysqldumpにposも出してくれるオプションなんて当然使ってなくて絶望しつつ、Exec_Master_logposとReadMasterLogPosも違ってた。結構遅延してた。

この辺りの値のどっちをCHANGE MASTER XX XXに入れるのかあんまり理解してなかったし、他のサイトもここの値なんていっしょっしょみたいな空気てでき等に書いてあってさらに混迷を深める。頭痛かった。

で調べた結果たぶん。

dump.sql と show slave status だけある場合は

Exec_Master_Log_PosとRelay_Master_Log_Fileを使うところにたどり着いた。

SQLスレッドが実行された後のデータがdumpされてるはずだから。

もしrelay.logとdumpとshow slave statusがあったら、

Exec_Master_Log_PosとRelay_Master_Log_FileとRelay_Log_FileとRelay_Log_Posを全指定して、IOスレッドで送られてきたけどSQLスレッドではまだ読まれていないファイルから読み込んだのち、マスターのbinlog参照みたいなことがきっとできると思うけど、あんまそういうシーンが思いつかないような気もする。すげー遅延が出てる状態で止まったとかだったらあるのかもしれないけど。。

MySQLの本を買って勉強しようと思った。

 

Java の File classのlistFilesとかで落ちる件

file.listFiles();

とかファイルネームを読み込んだときに落ちることがあった。

JNI WARNING: NewStringUTF input is not valid Modified UTF-8: illegal start byte 0xff

in Ljava/io/File;.listImpl:(Ljava/lang/String;)[Ljava/lang/String; (NewStringUTF)

エラーはこんな感じ。

でてっきり自分のくそコードのせいで落ちてたんだと思ってけど、なんか使えない文字があるとかそんなんらしい。

http://mail.openjdk.java.net/pipermail/core-libs-dev/2012-June/010403.html

http://stackoverflow.com/questions/12127817/android-ics-4-0-ndk-newstringutf-is-crashing-down-the-app

らしい。らしい。

自分の場合は謎の文字化けファイルがあったのでそれ消して対応した。

 

Android studio 1.0でjar直突っ込みで使う方法

mavenとかから持ってくるのが筋だとは思いますが、いろいろあるのでメモ。

ProjectName/ModueName/libs

いかに突っ込む

Moduleのbuild.gradeに

dependencies{

compile fileTree(dir: ‘libs’, include: [‘*.jar’])

}

これがあるか確認

あとはクリーンしてビルドすればきっと見える

Androidで動くファイルピッカー的な

https://github.com/imranhasanhira/android-file-chooser

これがデザインも普通で使いやすかった。こんなの

Screenshot (04-01PM, Dec 13, 2014)

jar 一個入れればいいだけだし。他にもデザインいいのいくつかあったけどプロジェクトインポートしたりなんかめんどくさかったので、これを改造していくのが楽だった。

android用のfile picker(explorer的な)のって標準のがないので結構めんどくさい。クラウドに保存しろよポリシーなんだろうけど。。