안녕하세요.
이번에 제가 리붓기능이 있는 어플을 만드려고 하는데..
동작을 하지 않아 고수님들 의견을 여쭙고자 글을 올립니다.
제 개발환경은 오드로이드T 프로요입니다.
일단 구글링 결과 일반 어플은 동작 하지 않는다고 해서
안드로이드/packages/apps 폴더 안에 제 app을 넣고
안드로이드/build/target/product/generic.mk 에
마지막 줄에 제 app이름을 넣어 패키지내에 삽입을 시켰습니다.
그리고 소스상에는
AndroidManifest.xml 에는
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.MASTER_CLEAR" />
<uses-permission android:name="android.permission.REBOOT"/>
의 권한을 넣고
소스상에는 버튼 클릭 시 이벤트가 발생하도록 하여
일단 import에
import android.os.ServiceManager;
import android.os.ICheckinService;
import android.os.Power;
import android.os.PowerManager;
을 넣고
버튼 클릭 시 이벤트에는
Button buttonP = (Button)findViewById(R.id.btnMi);
buttonP.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
String chmodStr = "stop";
String chmodStr2 = "setprop log.redirect-stdio true";
String chmodStr3 = "start";
// 리부팅 관련 소스
ICheckinService service = ICheckinService.Stub.asInterface(ServiceManager.getService("checkin"));
if (service != null) {
try {
// This RPC should never return
service.masterClear();
} catch (android.os.RemoteException e) {
// Intentionally blank - there's nothing we can do here
Log.w(TAG, "Unable to invoke ICheckinService.masterClear()");
}
} else {
Log.w(TAG, "Unable to locate ICheckinService");
}
try{
Power.reboot("NULL");
}catch(IOException e){
e.printStackTrace();
}
}
});
을 넣었지만
아래와 같은 에러가 떨어집니다.
다른 분들은 다 성공 했다고 하는데
제 소스에 문제가 있는지 혹은 Odroid-T에 다른 설정을 더 추가해야 하는지 의견을 여쭙고자 합니다.
(참 이번 프로요업그레이드 하고 나서는 ICheckinService 같은 파일이 없어서 추가적으로 넣어주었습니다.)
01-24 05:46:23.545: WARN/LOG Warring(2388): Unable to locate ICheckinService
01-24 05:46:23.595: WARN/System.err(2388): java.io.IOException: Operation not permitted
01-24 05:46:23.595: WARN/System.err(2388): at android.os.Power.rebootNative(Native Method)
01-24 05:46:23.595: WARN/System.err(2388): at android.os.Power.reboot(Power.java:103)
01-24 05:46:23.595: WARN/System.err(2388): at com.android.fontListItem.FontListItem$1.onClick(FontListItem.java:106)
01-24 05:46:23.595: WARN/System.err(2388): at android.view.View.performClick(View.java:2408)
01-24 05:46:23.595: WARN/System.err(2388): at android.view.View$PerformClick.run(View.java:8816)
01-24 05:46:23.595: WARN/System.err(2388): at android.os.Handler.handleCallback(Handler.java:587)
01-24 05:46:23.595: WARN/System.err(2388): at android.os.Handler.dispatchMessage(Handler.java:92)
01-24 05:46:23.595: WARN/System.err(2388): at android.os.Looper.loop(Looper.java:123)
01-24 05:46:23.595: WARN/System.err(2388): at android.app.ActivityThread.main(ActivityThread.java:4627)
01-24 05:46:23.595: WARN/System.err(2388): at java.lang.reflect.Method.invokeNative(Native Method)
01-24 05:46:23.595: WARN/System.err(2388): at java.lang.reflect.Method.invoke(Method.java:521)
01-24 05:46:23.595: WARN/System.err(2388): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-24 05:46:23.595: WARN/System.err(2388): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-24 05:46:23.595: WARN/System.err(2388): at dalvik.system.NativeStart.main(Native Method)
혹시 가능하면 universal androot를 오드로이드에 설치해 보시길 바랍니다.androot apk파일은 구글 검색하면 쉽게 구할 수 있습니다.설치하고 루팅이 잘 안되면 unroot를 한번 선택하고 다시 root를 실행시켜 보세요.그 다음 dev tool 의 터미널에서 su(super user)를 입력하고 reboot명령을 실행시키면 리부팅이 될겁니다.
그리고 다시한번 작성하신 프로그램을 디버깅해보시길 바랍니다.진행결과 공유 부탁드립니다.