Najprawdopodobniej będziesz musiał ustawić strefę czasową i dodać użytkownika root. Dodanie użytkownika root można wykonać w ten sposób:
echo "root:x:0:0::/system/etc/crontabs:/system/bin/sh" > /system/etc/passwd
Właściwy odbiór Łańcuch TimeZone jest nieparzysty. Ustaw zmienną środowiskową TZ na ciąg strefy czasowej i upewnij się, że crond ją pobiera. Mam go pod kontrolą środowiska graficznego i wykorzystuję następujące elementy do uzyskania strefy czasowej (może nie być poprawna, ponieważ nie testowałem jej jeszcze w innych strefach czasowych).
public static String findTZS() {
String date = ZooGate.readShellCommand("date");
String[] elements = date.split(" ");
String label = elements[4];
TimeZone tz = Calendar.getInstance().getTimeZone();
boolean dlt = tz.useDaylightTime();
int offset = tz.getDSTSavings()/600000;
DateFormatSymbols dfs = DateFormatSymbols.getInstance();
String[][] z = dfs.getZoneStrings();
for (String[] za: z) {
if (dlt) {
if (za[4].equals(label)) {
return za[2] + offset + za[4];
} else if (za[2].equals(label)) {
return za[2] + offset + za[4];
}
}
}
return "UTC";
}
Upewnij się również, że twój plik crontab ma nazwę użytkownika (root) i jest również własnością tego użytkownika. Jeśli ustawisz plik crontab w pamięci wewnętrznej, aby można było go edytować za pomocą edytorów tekstu Androida, możesz utworzyć dowiązanie symboliczne do/data/media/0. Używam/system/etc/crontabs/root ->/data/media/0/Cron/master
Używasz/data/media i/storage lub/sdcard, ponieważ ten drugi jest systemem plików FUSE, który ukrywa bazowy Unix uprawnienia do systemu plików i prawa własności, więc musisz ustawić prawo własności do rzeczywistego systemu plików w/data.
Jeśli masz starszą Android, który wykorzystuje tłuszcz lub YAFFS lub cokolwiek do pamięci wewnętrznej to może trzeba zachować crontaby w/system
Pamiętaj, że cron nie zawsze uruchamiane na czas pod Androida, ponieważ lubi zaspać.
http://stackoverflow.com/questions/13063106/how-to-install-busybox-on-android-emulator-android-2-3-3 – Sam