2014年9月18日木曜日

[XClip]バグつぶし

アリさんって方からバグレポ貰って対応してたんだけど、全然直らないくさいw

ごめんアリさん。

リリースが続いたから、簡単な履歴を。
そして自分の頭の中を整理する。

---さかのぼること2か月前---

Xposedモジュールは各アプリの中で各アプリプロセスとして動作するから、xclipのリソースが見えない。
みえる様に出来るのかもしれないけど調べてない。
だから、クリップ履歴のデータをSDカードに保存するように作っていた。
これは、アプリ固有の領域(/data/data/pacakage)が見えないから。
で、SDカードに保存して読み込みしてた。
 →この状態がv1.0(2個目のv1.0は長押し以外も対応しただけ)


自分で使ってて、なんかのアプリで一覧でないなぁ~って思ってログ見てたら権限無いよ~って書いてあって、何かというとアプリの権限もそのままに利用するから、「android.permission.WRITE_EXTERNAL_STORAGE」の無いアプリは読み書きできなくて一覧が出なかった。
あーこの辺も各アプリプロセスとして動作するんだなぁっって事で、AIDL経由でXClipプロセスで読み書きするようにした。
これで、XClipの「android.permission.WRITE_EXTERNAL_STORAGE」権限で読み書きできるようになったので、一覧が出るようになった。
あと、コピーが不完全だったのでClipboardManager.setPrimaryClipだけじゃなくてClipboardManager.setTextもフックするように修正。
 →この状態がv1.3

でこれをアップしたあたりでアリさんから連絡。
なんかクラッシュすると。


で、調査してたら、10回に1回くらいの割合でリストが出ないことがあった。
これのことかなぁと思って調べたら、AIDLのバインドが終わっていない間に処理しようとしてリストが取れない事があった。
で、これを修正。
 →この状態がv1.4

で、アリさんからまだ駄目だと。


また調べてたらandroid4.4からSDカードの読み書きがいろいろ制限あると。
これかな?と思って、AIDL経由にしたし、アプリ領域使おうという事で、各アプリに割り当てられてる領域に保存するように修正。
 →この状態がv1.5

で、さっきまだ駄目って。。。
おかしいなぁと思って、クラッシュってどういうの?
って聞いたら、

アプリで長押し(入力エリアじゃなくても)すると、アプリが死ぬんだって。
マジで?
そんなの出たことないですぜ。

1.0は出ないんだって。
マニフェストなおし間違って1.0が2個あるんだけど、大きな修正は1.3で入れたからそこかな。

ていうか、1.0→1.3の修正って結構重要なんだよね。
そもそもAIDL経由にしないと正しく動かないしなぁ。

もうちょっと調査&バグフィックスリリース続くかもしれないけどごめんね。

0 件のコメント:

コメントを投稿