내 코드에서 내 안드로이드 화면의 스냅 샷을 캡처하려고합니다. 그리고 나는 같은 쉘 스크립트를 사용하고있다.스크립트는 adb에서는 제대로 작동하지만 Android 코드에서는 작동하지 않습니다.
proc = runtime.exec("su");
OutputStream os = proc.getOutputStream();
os.write("copy".getBytes("ASCII"));
os.flush();
System.out.print("Finished");
에뮬레이터에는 수퍼 유저가 있습니다. 즉, su 파일은/system/xbin/위치에서 사용할 수 있습니다. 사용 나는 아시아 개발 은행 (명령 프롬프트)에서이 파일을 컴파일 한
/system/bin/screencap -p /data/data/com.example.code/files/Hari123.png
: 여기, 파일 복사 컨텐츠 다음이이 일을 후에, 나는이 같은 명령 프롬프트에서 명령을 실행
adb shell chmod 6755 /system/bin/copy
:
adb shell exec copy
이 모든 것이 정상적으로 작동합니다. 그러나, (처음에 언급) 안드로이드 코드도 또한 다음과 같은 코드를 갖는
proc = runtime.exec("su");
는 "1"의 proc.exitvalue()를 제공한다. 나는 loooooon 시간 동안 이것을 고치려고 노력했다. 나는 충분한 검색을했으나 아무 쓸모가 없었다.
에뮬레이터에서 문제가 될 수 있습니까? 아니면, "copy"파일을 네이티브 실행 파일로 만들어야합니까? 그렇다면 어떻게 말해주십시오.
실제로 쉘 사용자는 대개 su를 사용할 수 있다고 생각하지 않지만 최근 변경된 사항이 없으면 에뮬레이터에서 adb 셸이 이미 쉘 사용자가 아닌 루트 사용자로 실행됩니다. 여하튼, 해킹 된 것보다는 오리지널 'su'바이너리 일 가능성이있는 단서를 놓쳤다. 그런 경우라면 해답을 얻을 수있다. –
어떤 경우에 적어도 코드가 장치에서 제대로 작동해야합니까? 스크립트 파일이 장치 sdcard에 직접 복사 할만큼 충분히 괜찮습니까? 아니면 바이너리 실행 가능 파일로 만들어야합니까? –
이 답변의 요점은 스크립트를 실행하지 않는 앱 버전에서도 실패보고에 일관성이 있다는 잘못된 'su'를 제안하는 것입니다. –