I modifed AOSP/art/dex2oat.cc to run another program when dex2oat is 
running. Like these code segments:

int tester() {
  pid_t pid;
  int status;
  if ((pid = fork()) < 0) {
    status = -1;
  } else if (pid == 0) {
    execl("/system/xbin/busybox", "busybox", "wget", "www.google.com", "-O", 
"/cache/g.html", (char *) 0);
    _exit(127);
  } else {
    while (waitpid(pid, &status, 0) < 0) {
      if (errno != EINTR) {
        status = -1;
        break;
      }
    }
  }
  return status;
}

int main(int argc, char **argv) {
  int status = tester();
  return art::dex2oat(argc, argv);
}


When I install an APK, this procedure will run dex2oat, the tester function 
returns 256(convert to char is value 1), and could not find g.html in 
/cache/.

However, when I run /system/bin/dex2oat in adb shell, wget could be running 
normally, return value 0 and can find g.html in /cache/.

SELinux is permissive, and Android's version is 5.1.1.

Why?

This question has been posted to stackoverflow but no 
response. 
http://stackoverflow.com/questions/42200112/modify-aosp-art-dex2oat-cc-to-run-another-program-but-return-value-256

-- 
-- 
unsubscribe: android-porting+unsubscr...@googlegroups.com
website: http://groups.google.com/group/android-porting

--- 
You received this message because you are subscribed to the Google Groups 
"android-porting" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-porting+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to