root としてログに記録された adb のスクリーンショットを取得しようとすると、「アクセス許可が拒否されました」というエラーが表示されます。
screenshot -i /sdcard/screen.png
error: writing file /sdcard/screen.png: Permission denied
しかし、スクリーンキャップを使用すると機能します。
screencap -p /sdcard/screen.png
なぜこうなった ?
root としてログに記録された adb のスクリーンショットを取得しようとすると、「アクセス許可が拒否されました」というエラーが表示されます。
screenshot -i /sdcard/screen.png
error: writing file /sdcard/screen.png: Permission denied
しかし、スクリーンキャップを使用すると機能します。
screencap -p /sdcard/screen.png
なぜこうなった ?
ソース コード によるとscreenshot
、ファイルを書き込む前に UID を AID_SHELL (シェル ユーザー) に設定します。
/* switch to non-root user and group */
gid_t groups[] = { AID_LOG, AID_SDCARD_RW };
setgroups(sizeof(groups)/sizeof(groups[0]), groups);
setuid(AID_SHELL);
png = fopen(outfile, "w");
if (!png) {
fprintf(stderr, "error: writing file %s: %s\n",
outfile, strerror(errno));
exit(1);
}
ディレクトリ「/sdcard」のプロパティを変更するだけです
chmod 777 /sdcard
これは私の電話で動作します。