루팅을 하지 않고 /system이나 /data/data 등에 접근하기 위해 AOSP에 제가 만든 프로젝트를 넣고, 서명하여
롬을 만들어 빌드를 하는것까진 성공했습니다.
루팅된 디바이스에서 유저 어플리케이션으로 동작할때는
Runtime.getRuntime().exec("su"); 부분에서 디바이스의 superSU 등의 앱에서 권한 허가를 허용한다면 문제없이 돌아가는 소스인데요.
빌드한 롬에서 Runtime.getRuntime().exec("su") 명령어를 사용하고 (정확히는 su가 아니라 /system/xbin/su 입니다.)
DataOutputStream에서 writeBytes()작업을 하면 broken pipe 에러가 뜹니다.
adb에서는 su 명령어를 입력하면 # 모드로 이상없이 진행하는데, 소스에서는 어떤 부분이 문제가 되는지 잘 모르겠네요.
갤럭시 넥서스 JB 4.1.1 버전 AOSP 빌드하였고
제가 만든 프로젝트의 Manifest permission은 다음과 같습니다.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
물론 manifest에 android:sharedUserId="android.uid.system" 애트리뷰트 추가했습니다.
현재 BufferedReader 에서 /data/data 에 있는 파일을 FileReader를 통해 가져와서 readLine을 해보면 정상적으로 동작합니다.
한줄 요약 : 프로젝트의 권한을 올리고 prebuilt app으로 만들어도 superSU등의 앱이 없으면 ls -al /data/data가 불가능한가요?