脱獄していない端末から、開発中アプリのデータベースファイルを引っこ抜く

ワンライナーでいけることがわかった。
パッケージ名が your.app.package、データベースファイル名が sql.db として、:

adb shell run-as your.app.package cat databases/sql.db\
 |sed s/\\r$// > sql.db

まず run-as コマンドでパッケージ内のファイルをコンソールに出力する。
これを開発環境側で受けるんだけれど、 adb shell の出力は LF (\n) を CRLF (\r\n) に変更してしまうそう。そこでパイプで sed に流し込み、行末直前の \r を削除する。
あとは結果をリダイレクトして完了。
注: run-as のために your.app.package を debuggable=true にしておくこと。

sed がない Windows 環境だと、どうするのがいいのかな? とりあえず Cygwin

sed 's/\r$//' を C コードで書けばこんな感じか?:

#include <stdio.h>

#define LF 0x0A
#define CR 0x0D

int main() {
  int c;
  while ((c = getchar()) != EOF) {
    if (c == CR) {
      const int c2 = getchar();
      switch (c2) {
      case EOF:
	putchar(c);
	return 0;
      case LF:
	putchar(LF);
	break;
      default:
	ungetc(c2, stdin);
	putchar(c);
	break;
      }
    } else {
      putchar(c);
    }
  }
  return 0;
}

であればこれを Windows 用にコンパイルして… って、 Windows に開発環境入れるの大変だろうしなあ。 Android 開発している人向けと考えるなら Java のほうがいい?