Διαφήμιση

XTRV ROM και Init.d scripts

    Αυτή η σελίδα κάνει χρήση των Cookies. Εάν θέλετε να μάθετε περισσότερα για τα Cookies, κάντε κλικ στις Περισσότερες πληροφορίες

    • XTRV ROM και Init.d scripts

      Καλησπέρα στην κοινότητα. Ελλείψη δυστυχώς...ROM για να φλασάρουμε (κάποιοι από εμάς, οι άτυχοι δηλαδή), είπα πριν από μερικές ημέρες να ρίξω μια ματιά σε αυτά τα περιβόητα init.d scripts της ελληνικής XTRV ROM, έτσι για να μάθω και εγώ ρε παιδί μου, ακριβώς τι tweaks διαθέτει η ROM μας. Δυστυχώς τα ευρήματά μου δεν ήταν και τόσο καλά. Και εξηγούμαι ευθύς αμέσως:

      Καταρχήν η ROM διαθέτει 6 init.d scripts (τουλάχιστον στο nikel), τα οποία έχουν ως εξής:


      1) 09sdcardspeedfix


      Αυξάνει με πλάγιο τρόπο την ταχύτητα ανάγνωσης της SD card (read ahead).


      2) S97MemoryTweaks


      Διαχειρίζεται παραμέτρους της μνήμης ώστε να φορτώνονται περισσότερες εφαρμογές πρωτού "σκοτωθεί" κάποια και κάνει και κάποιες αλλαγές στο build.prop.


      3) S97SystemOptimizer


      Smart mounting για καλύτερη ταχύτητα ανάγνωσης στο /data και /cache, system process tweaks ώστε να είναι πιο αποκρίσιμες οι εφαρμογές συστήματος, δικτυακά tweaks για καλύτερη συμπεριφορά των δεδομένων και Wi-Fi, σκότωμα του mediaserver, κάποια kernel tweaks κτλ.


      4) sysctl_tweaks


      Κατά κύριο λόγο kernel tweaks για καλύτερη και πιο αποδοτική κατανάλωση αλλά και performance boosts.


      5) Sqlite_optimize


      Βελτιστοποιεί τις βάσεις δεδομένων κάνοντας Vacuum (διαγράφει άδειες σελίδες στη βάση) και reindex.


      6) Zipalign


      Βελτιστοποιεί την αποκρισιμότητα και τη διαχείρηση μνήμης από τις εγκατεστημένες εφαρμογές και εφαρμογές συστήματος.


      Όλα καλά μέχρι εδώ. Όλα ? Χμμ, όχι και τόσο. Καταρχήν το script νούμερο 4, το μόνο που κάνει είναι να διαβάζει ένα configuration αρχείο ονόματι sysctl.conf μέσα στο /system/etc, το οποίο περιέχει παραμέτρους διαχείρησης κλειδιών (ρυθμίσεων) του kernel. Έλα όμως που μια παράμετρος και συγκεκριμένα η kernel.random.read_wakeup_threshold είναι λάθος και το script χτυπάει στην συγκεκριμένη παράμετρο (τουλάχιστον στο nikel που το δοκίμασα) και δεν συνεχίζει με τις υπόλοιπες, δουλεύει δηλαδή, εν μέρει. Επίσης λείπει η παράμετρος kernel.random.write_wakeup_threshold που συνήθως πάει πακέτο με την πρώτη και ρυθμίζει το λεγόμενο entropy του συστήματος και έχει (ελαφριά) επίδραση στην κατανάλωση ενέργειας.


      Πάμε στο script υπ' αριθμόν 5. Το script αυτό είναι αρκετά παλιό και έχει προκύψει από ένα "πακέτο" παλαιότερων βελτιστοποιήσεων για συγκεκριμένες συσκευές. Είναι σεταρισμένο να διαβάζει και να χρησιμοποιεί για έλεγχο αρχεία που δεν υπάρχουν στην XTRV. Όταν δεν τα βρει, απλά προσπαθεί να εκτελέσει το Vaccum και το Reindexing "βίαια", ούτως ή άλλως δηλαδή, αλλά έλα που αν βάλεις ένα log για να πιάσεις τα exit codes στο boot θα διαπιστώσεις ότι αποτυγχάνει να τρέξει, επειδή προσπαθεί να εκτελεστεί μέσα από το init.d folder και χωρίς working directory, δεν μπορεί καν να ανοίξει τις βάσεις για να διαγράψει τις κενές σελίδες (υποψιάζομαι θέμα permissions). Επίσης το script δεν διαθέτει κάποιο log file που να γράφει τι κάνει, ώστε να έχει μια άλφα εικόνα ο χρήστης. Κοινώς και αυτό...υπολειτουργούσε.

      Τέλος, φτάνουμε στην περίπτωση του script 6, το zipalign. Εδώ επικρατούσε το απόλυτο χάος καθώς το script "χτύπαγε" με τη μία. Ο λόγος είναι και σε αυτή την περίπτωση, η παλαιότητά του. Προσπαθεί να βρει .apk αρχεία μέσα στο /system/app καθώς και στο /data/app, ώστε να τα βελτιστοποιήσει αλλά προφανώς δεν πρόκειται να βρει κανένα apk εκεί, αφού αυτά βρίσκονται μέσα σε υποφακέλους, ανά εφαρμογή. Το script αυτό ευτυχώς, έδωσε ο Θεός και έγραφε log file και ήταν πιο εύκολο να καταλάβει κάποιος ότι δεν παίζει.


      Να σημειώσω εδώ ότι για όλους τους παραπάνω ισχυρισμούς δεν χρειάζεται να πιστέψετε τα λεγόμενά μου. Κατεβάστε τον Android Terminal Emulator, ανοίξτε ένα terminal window, γράψτε su (ελπίζω να έχετε root πρόσβαση) και δοκιμάστε απλά να τρέξετε τα scripts που ανέφερα, δίνοντας /etc/init.d/<όνομα script>. Το 6 δεν υπάρχει περίπτωση να κάνει τίποτα, θα "χτυπήσει". Το 5 θα τρέξει...εντελώς κατά τύχη, καθώς το working directory του terminal, του επιτρέπει πράγματι να κάνει τη Vacuum, κάτι το οποίο δεν συμβαίνει κατά τη διάρκεια του boot. Τρέχει δηλαδή επειδή έτυχε και το εκτέλεσε κάποιος από terminal. Για το 4, δώστε στο τερματικό sysctl -p. Η εντολή αυτή κάνει force load τις παραμέτρους από το /etc/sysctl.conf. Εκεί θα δείτε ότι μία από τις παραμέτρους "χτυπάει" και ως εκ τούτου, ΔΕΝ λαμβάνονται υπόψη οι γραμμές του sysctl.conf κάτω από τη γραμμή που "χτύπησε". Υπάρχει μια περίπτωση αυτό να συμβαίνει μόνο σε συγκεκριμένες συσκευές, για να πω την αλήθεια, αλλά αυτό θα το δούμε στα τέστ.

      Για να μην τα πολυλογώ, διόρθωσα το sysctl.conf ώστε να φορτώνονται σωστά όλες οι παράμετροι και έβαλα και αυτή που έλειπε. Το sqlite_optimize το πέταξα στα σκουπίδια (ήταν απλά πολύ πιο εύκολο να ξαναφτιαχτεί) και έγραψα ένα νέο συνδυάζοντας script του XDA με μικρές αλλαγές ώστε να δουλεύουν σωστά, το οποίο εκτελείται όχι νωρίτερα από 5 ημέρες από την προηγούμενη εκτέλεση (δεν χρειάζεται σε κάθε boot να γίνονται vaccum και reindex οι βάσεις, είναι περιττό, δεν προλαβαίνουν καν να γίνουν fragmented) και μάλιστα παράγει και log file στο /data που δείχνει σε ποιες βάσεις εκτέλεσε το sqlite3 με παράμετρο τη Vaccum και το ReIndex και τι αποτέλεσμα πήρε πίσω (SUCCESS ή τον αντίστοιχο κωδικό σφάλματος). Στο zipalign επίσης μπήκε χέρι, ώστε αρχικά να εντοπίζει σωστά τα .apk, εν συνεχεία να τα κάνει optimize (εκτελώντας το zipalign πρόγραμμα) παράγοντας ένα προσωρινό αρχείο στο /data/local, μετα μετακινεί το zipaligned αρχείο πίσω στην αρχική τοποθεσία, διατηρώντας τα permissions και το ownership (ώστε να μη χτυπάει η εφαρμογή όταν ξεκινάει) και τέλος σβήνει το προσωρινό αρχείο από το /data/local, ώστε να μην μένουν "σκουπίδια" στο /data. Εννοείται ότι τώρα γράφει σωστά τις ενέργειες που κάνει στο log file του. Τίποτε από αυτά δεν γίνονταν με το παλιό script.

      Να σημειώσω εδώ ότι για όλα τα παραπάνω είναι ενήμερος ο Γιώργος @gkalen και έχει λάβει τα διορθωμένα από εμένα scripts, τα οποία τουλάχιστον στο nikel παίζουν μια χαρά, ελπίζω να παίξουν και για όλους τους υπόλοιπους, εφόσον σκοπεύει να τα χρησιμοποιήσει. Το αφήνω επάνω του :D


      Αυτά τα ολίγα, όλα καλά κοινώς και συνεχίζουμε να προσπαθούμε ώστε να κάνουμε την XTRV όσο καλύτερη γίνεται.


      Την καλησπέρα μου και πάλι.
    • Πιο αναλυτικός δε γίνεται !!
      Όλα θα μπουν στις νέες ρομς και θα δουλέψουν για όλες τις συσκευές από 6.0 και κάτω ..
      Σ'ευχαριστω και προσωπικά που ασχολήθηκες , δεν υπήρχε περίπτωση να ασχοληθούμε με κάτι τέτοιο τουλάχιστον σύντομα , οπότε θεωρώ τη βοήθεια σου σ'αυτο το κομμάτι απαραίτητη ..
      Keep Rocking Κώστα !!!
    • Νέα έκδοση Zipalign script (Zipalignv11).

      Changelog:
      - Βελτιστοποίηση στο log file του script, ώστε να σβήνεται μετά τα 50k και όχι σε κάθε εκτέλεση του script και άρα να περιέχει περισσότερα από 4-5 executions.
      - 'Ελεγχος ώστε κάθε 5 ημέρες να σβήνεται το DB αρχείο του script και να ελέγχονται από την αρχή όλα τα .apk αρχεία για alignment, για να καλυφθεί η περίπτωση αλλαγής ROM ή άλλες επεμβάσεις του χρήστη. Σε μικρότερο χρονικό διάστημα ελέγχονται μόνο τα νέα .apk (αυτά που δεν έχουν ήδη ελεγχθεί).

      Πηγαίος κώδικας:

      Shell-Script

      1. #!/system/bin/sh
      2. #Modified script by BanditGR @ xiaomi-miui.gr
      3. #1.0 - Initial corrected version
      4. #1.1 - Log file optimizations, clean ZIPALIGNDB every x days for better efficiency
      5. #Define file locations
      6. LOG_FILE=/data/zipalign.log;
      7. ZIPALIGNDB=/data/zipalign.db;
      8. ZIPALIGNTM=/data/zipalign_execute_clean.log;
      9. #Interval between DB file clean, in seconds, 604800=1 week, 432000=5 days
      10. RUN_EVERY=432000
      11. #If Log file exists and size is greater than 50k then delete it
      12. if [ -e $LOG_FILE ]; then
      13. LOGSIZE=`stat -c %s "$LOG_FILE"`
      14. if [ $LOGSIZE -gt 50000 ];then
      15. rm $LOG_FILE;
      16. fi;
      17. fi;
      18. #If file to determine DB clean exists, execute the following code
      19. if [ -e $ZIPALIGNTM ]; then
      20. LASTRUN=`stat -c %Y "$ZIPALIGNTM"`
      21. # Get current date in epoch format
      22. CURRDATE=`date +%s`
      23. # Check the interval
      24. INTERVAL=$(expr $CURRDATE - $LASTRUN)
      25. # If interval is more than the set one, then run the DB clean script
      26. if [ $INTERVAL -gt $RUN_EVERY ];then
      27. echo "More than $RUN_EVERY seconds have elapsed since last DB clean..." | tee -a $LOG_FILE;
      28. echo "Deleting DB file $ZIPALIGNDB..." | tee -a $LOG_FILE;
      29. if [ -e $ZIPALIGNDB ]; then
      30. rm $ZIPALIGNDB;
      31. fi;
      32. #Delete file to check DB clean, it will be re-created later on
      33. rm $ZIPALIGNTM;
      34. else
      35. echo "Less than $RUN_EVERY seconds have elapsed since last DB clean..." | tee -a $LOG_FILE;
      36. echo "No need to clean DB file. Continuing with main script..." | tee -a $LOG_FILE;
      37. fi;
      38. fi;
      39. #If file to determine DB clean doesn't exist, create it
      40. if [ ! -f $ZIPALIGNTM ]; then
      41. touch $ZIPALIGNTM;
      42. echo "This file is used to determine when to clean the zipalign DB file, do NOT delete, unless you know what you are doing." | tee -a $ZIPALIGNTM;
      43. fi;
      44. #If DB file doesn't exist, create it
      45. if [ ! -f $ZIPALIGNDB ]; then
      46. touch $ZIPALIGNDB;
      47. fi;
      48. #Set a working path
      49. cd /data/
      50. echo "Starting FV Automatic ZipAlign $( date +"%m-%d-%Y %H:%M:%S" )" | tee -a $LOG_FILE;
      51. for DIR in /system/app /data/app; do
      52. cd $DIR;
      53. #for APK in *.apk; do
      54. for APK in `busybox find -iname "*.apk"`; do
      55. if [ $APK -ot $ZIPALIGNDB ] && [ $(grep "$DIR/$APK" $ZIPALIGNDB|wc -l) -gt 0 ]; then
      56. echo "Already checked: $DIR/$APK" | tee -a $LOG_FILE;
      57. else
      58. ZIPCHECK=`/system/xbin/zipalign -c -v 4 $APK | grep FAILED | wc -l`;
      59. if [ $ZIPCHECK == "1" ]; then
      60. echo "Now aligning: $DIR/$APK" | tee -a $LOG_FILE;
      61. APKFILE="$(basename $APK)"
      62. /system/xbin/zipalign -v -f 4 $APK /data/local/$APKFILE;
      63. busybox mount -o rw,remount /system;
      64. #Copy file to original dir
      65. #cp -f -p /data/local/$APKFILE $DIR/$APK;
      66. echo "Now copying aligned file /data/local/$APKFILE to original directory, preserving permissions: $DIR/$APK" | tee -a $LOG_FILE;
      67. cat "/data/local/$APKFILE" > "$DIR/$APK";
      68. #Set proper permissions aka 644
      69. #chmod 644 $DIR/$APK;
      70. #Remove temporary file from /data/local
      71. echo "Now removing temporary file: /data/local/$APKFILE, from /data/local" | tee -a $LOG_FILE;
      72. rm -f /data/local/$APKFILE;
      73. grep "$DIR/$APK" $ZIPALIGNDB > /dev/null || echo $DIR/$APK >> $ZIPALIGNDB;
      74. else
      75. echo "Already aligned: $DIR/$APK" | tee -a $LOG_FILE;
      76. grep "$DIR/$APK" $ZIPALIGNDB > /dev/null || echo $DIR/$APK >> $ZIPALIGNDB;
      77. fi;
      78. fi;
      79. done;
      80. done;
      81. busybox mount -o ro,remount /system;
      82. touch $ZIPALIGNDB;
      83. echo "Automatic ZipAlign finished at $( date +"%m-%d-%Y %H:%M:%S" )" | tee -a $LOG_FILE;
      Προβολή όλων


      =============== Αυγ 13th 2017, 7:28pm ===============
      Νέα έκδοση S97SystemOptimizer script.


      Changelog:
      - Διορθώθηκαν ΟΛΕΣ οι renice εντολές για τα Android processes (και προστέθηκαν και 1-2 νέες). ΚΑΜΙΑ δεν δούλευε, στον τομέα αυτό το script δεν έκανε τίποτα, τώρα κάνει σωστά το setpriority.
      - Μπήκε ένας έλεγχος για τα touch tweaks, καθώς η set_touchscreen μέθοδος δεν υπάρχει απαραίτητα σε όλες τις συσκευές.
      - Η killall εντολή αντικαταστάθηκε από την pkill (που δουλεύει σίγουρα) και τρέχει τώρα μέσω busybox.
      - Τα RAM tweaks δεν δουλεύουν και έγιναν comment out (μάλλον απομεινάρι εντολών από παλιό Android).

      Shell-Script

      1. #!/system/bin/sh
      2. # Optimizing your device
      3. # Created Aris setiawan @ 2014
      4. # Modified script by BanditGR @ xiaomi-miui.gr
      5. #Set a working path
      6. cd /data/
      7. # Smart mounting
      8. mount -o noatime,remount,rw,discard,barrier=0,commit=60,noauto_da_alloc,delalloc /cache /cache;
      9. mount -o noatime,remount,rw,discard,barrier=0,commit=60,noauto_da_alloc,delalloc /data /data;
      10. # Tweaking processes at wake modified by me (Thanks Slaid480@XDA)
      11. # Corrected by BanditGR @ xiaomi-miui.gr
      12. renice 17 -p $(pgrep com.miui.home) # MIUI Launcher
      13. renice 17 -p $(pgrep com.teslacoilsw.launcher) # Nova Launcher
      14. renice 20 -p $(pgrep com.android.phone)
      15. renice 18 -p $(pgrep com.android.contacts) # Contact app
      16. renice 18 -p $(pgrep com.android.mms) # Text message app
      17. renice 18 -p $(pgrep com.google.android.inputmethod.latin) # Keyboard
      18. renice 18 -p $(pgrep com.nuance.swype.dtc) # Swype Keyboard
      19. renice 10 -p $(pgrep com.sec.android.app.controlpanel) # Task manager
      20. renice 18 -p $(pgrep com.android.systemui) # Status bar
      21. renice 18 -p $(pgrep com.android.settings) # Settings menu
      22. renice 17 -p $(pgrep com.android.vending) # Market app
      23. renice 15 -p $(pgrep com.android.camera) # Camera app
      24. renice 18 -p $(pgrep com.android.browser) # Browser app
      25. renice 18 -p $(pgrep mobi.mgeek.TunnyBrowser) # Dolphin Browser app
      26. renice 3 -p $(pgrep com.android.providers.media) # Media app
      27. renice 15 -p $(pgrep com.google.android.gms) # Google app
      28. renice 3 -p $(pgrep com.process.acore)
      29. renice 3 -p $(pgrep android.process.acore)
      30. # Touch Tweaks
      31. # Only execute if the system supports set_touchscreen
      32. if [ -e /sys/class/touch/switch/set_touchscreen ]; then
      33. echo 7025 > /sys/class/touch/switch/set_touchscreen;
      34. echo 8002 > /sys/class/touch/switch/set_touchscreen;
      35. echo 11001 > /sys/class/touch/switch/set_touchscreen;
      36. echo 13030 > /sys/class/touch/switch/set_touchscreen;
      37. echo 14005 > /sys/class/touch/switch/set_touchscreen;
      38. fi;
      39. # Network Speed Tweaks
      40. echo 0 > /proc/sys/net/ipv4/tcp_timestamps
      41. echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
      42. echo 1 > /proc/sys/net/ipv4/tcp_sack
      43. echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
      44. echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
      45. echo 5 > /proc/sys/net/ipv4/tcp_keepalive_probes
      46. echo 30 > /proc/sys/net/ipv4/tcp_keepalive_intvl
      47. echo 900 > /proc/sys/net/ipv4/tcp_keepalive_time
      48. echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
      49. echo 404480 > /proc/sys/net/core/wmem_max
      50. echo 404480 > /proc/sys/net/core/rmem_max
      51. echo 256960 > /proc/sys/net/core/rmem_default
      52. echo 256960 > /proc/sys/net/core/wmem_default
      53. echo 4096 16384 404480 > /proc/sys/net/ipv4/tcp_wmem
      54. echo 4096 16384 404480 > /proc/sys/net/ipv4/tcp_rmem
      55. # Kill media app
      56. # Better to just use busybox here
      57. #busybox killall -9 android.process.media;
      58. #busybox killall -9 mediaserver;
      59. busybox pkill -9 android.process.media;
      60. busybox pkill -9 mediaserver;
      61. # Optimizing flags
      62. LOOP=`ls -d /sys/block/loop*`;
      63. RAM=`ls -d /sys/block/ram*`;
      64. MMC=`ls -d /sys/block/mmc*`;
      65. for j in $LOOP $RAM
      66. do
      67. echo "0"
      68. done
      69. # Hard rock kernel tweaks.
      70. echo 0 > /proc/sys/vm/panic_on_oom
      71. echo 0 > /proc/sys/kernel/panic
      72. echo 0 > /proc/sys/kernel/panic_on_oops
      73. # Sd Card Read Write Speed
      74. echo "2048" > /sys/devices/virtual/bdi/179:32/read_ahead_kb
      75. echo "2048" > /sys/devices/virtual/bdi/7:0/read_ahead_kb
      76. echo "2048" > /sys/devices/virtual/bdi/7:1/read_ahead_kb
      77. echo "2048" > /sys/devices/virtual/bdi/7:2/read_ahead_kb
      78. echo "2048" > /sys/devices/virtual/bdi/7:3/read_ahead_kb
      79. echo "2048" > /sys/devices/virtual/bdi/7:4/read_ahead_kb
      80. echo "2048" > /sys/devices/virtual/bdi/7:5/read_ahead_kb
      81. echo "2048" > /sys/devices/virtual/bdi/7:6/read_ahead_kb
      82. echo "2048" > /sys/devices/virtual/bdi/7:7/read_ahead_kb
      83. echo "2048" > /sys/devices/virtual/bdi/179:0/read_ahead_kb
      84. echo "2048" > /sys/devices/virtual/bdi/default/read_ahead_kb
      85. echo "97" > /sys/devices/virtual/bdi/default/max_ratio
      86. echo "97" > /sys/devices/virtual/bdi/179:0/max_ratio
      87. # Kernel | fs tweak
      88. sysctl -w kernel.msgmni=1024
      89. sysctl -w kernel.msgmax=64000
      90. sysctl -w kernel.shmmax=268435456
      91. sysctl -w kernel.shmall=2097152
      92. sysctl -w kernel.sem="500 512000 100 2048"
      93. sysctl -w kernel.threads-max=10000
      94. sysctl -w fs.lease-break-time=10
      95. sysctl -w fs.file-max=65536
      96. # Disable I/O Stats
      97. if [ -e /queue/iostats ]; then
      98. echo 0 > /queue/iostats;
      99. fi;
      100. # Ram tweaks
      101. # This doesn't work
      102. #/bin/mount -o remount,rw /
      103. #/bin/rm -r /voodoo/root/usr/*
      104. #/bin/mount -o remount,ro /
      105. #rngd
      Προβολή όλων
      Files
      • Zipalign.txt

        (3,38 kB, λήφθηκε 138 φορές, τελευταία )
      • S97SystemOptimizer.txt

        (4,34 kB, λήφθηκε 325 φορές, τελευταία )
    • Διαφήμιση
    • Πως να πετύχετε να ενεργοποιείται αυτόματα το Documents App στο MIUI, μετά το reboot της συσκευής

      Και συνεχίζω ακάθεκτος στο development thread μου (τρομάρα μου ! :D)

      Έχουμε δει πάρα πολλές φορές την απορία από χρήστες, γιατί δεν μπορώ να χρησιμοποιήσω το τάδε app (το οποίο θέλει να γράφει στην SD Card -αν υπάρχει- ή και στον εσωτερικό αποθηκευτικό χώρο). Αυτό συμβαίνει και με "μαμίσιες" εφαρμογές της MIUI. Η απάντηση που συνήθως δίνουμε είναι ότι πρέπει ο χρήστης να πάει στις Ρυθμίσεις -> Εγκατεστημένες Εφαρμογές -> Να εντοπίσει από την τεράστια λίστα όλων των εγκατεστημένων εφαρμογών στο σύστημα, την εφαρμογή Documents (ή Έγγραφα ανάλογα με το πως φαίνεται στην συσκευή του χρήστη), να κάνει tap επάνω της και να επιλέξει "Ενεργοποίηση". Μακάρι όμως τα πράγματα να ήταν τόσο απλά. Σε κάθε reboot της συσκευής, το MIUI απενεργοποιεί από μόνο του το Documents app και ο χρήστης πρέπει και πάλι να το ενεργοποιήσει εκ νέου, διαδικασία που ναι μεν είναι απλή, αλλά χρονοβόρα και εύκολο να ξεχαστεί. Πάμε να δούμε ένα τρόπο, πως μπορούμε να πετύχουμε αυτόματα την ενεργοποίηση του Documents app, αυστηρά στην XTRV ROM και λέω αυστηρά γιατί γενικά θα πρέπει η ROM μας να διαθέτει τη δυνατότητα εκτέλεσης init.d scripts (δεν το διαθέτουν απαραίτητα όλες οι ROM, πχ official MIUI, η XTRV όμως είναι κομπλέ).

      Καταρχήν ανοίγουμε ένα notepad στο PC μας και μέσα κάνουμε copy/paste τις παρακάτω γραμμές:

      Shell-Script

      1. #!/system/bin/sh
      2. # Enable Documents App
      3. sleep 30
      4. pm enable com.android.documentsui

      1) Σώζουμε το αρχείο ως αρχείο κειμένου, με όνομα: ZZEnableDocuments. Προσοχή στο 'ZZ' (κεφαλαία λατινικά) και το αρχείο να μην έχει κατάληξη, πχ να ΜΗΝ λέγεται ZZEnableDocuments.txt. Αν παρατηρήσουμε ότι μετά την αποθήκευση, έχει αποθηκευτεί ως txt, απλά το μετονομάζουμε στα Windows και σβήνουμε την κατάληξη .txt. Εναλλακτικά χρησιμοποιούμε το συνημμένο αρχείο σε αυτό το μήνυμα (ΞΑΝΑ προσοχή ότι πρέπει όταν το κατεβάσουμε να ΣΒΗΣΟΥΜΕ, μέσω μετονομασίας, την κατάληξη .txt).

      2) Μεταφέρουμε το αρχείο στο κινητό, είτε συνδέοντας τη συσκευή και αντιγράφοντάς το στον εσωτερικό αποθηκευτικό χώρο, είτε από την εφαρμογή Αρχεία-> Κατηγορίες -> FTP.

      3) Εν συνεχεία, με μια εφαρμογή Διαχείρισης Αρχείων με δυνατότητες rootXTRV ROM, στην aroma έκδοση της έχει μια έτοιμη τέτοια εφαρμογή που μπορείτε να εγκαταστήσετε, ονόματι Root Explorer και για τις ανάγκες του παραδείγματος θα υποθέσουμε ότι αυτή χρησιμοποιούμε για τα επόμενα βήματα), πάμε στο φάκελο /sdcard (υποθέτουμε ότι αντιγράψαμε το αρχείο μας, στον εσωτερικό αποθηκευτικό χώρο της συσκευή), βρίσκουμε το αρχείο ZZEnableDocuments και κάνουμε long tap επάνω του και από τις επιλογές που θα εμφανιστούν στο πάνω μέρος της οθόνης επιλέγουμε το πρώτο εικονίδιο όπως βλέπουμε από αριστερά στα δεξιά (το οποίο αντιστοιχεί στην ενέργεια 'Copy'). Μετά πατάμε στο πάνω μέρος εκεί που λέει ROOT, ώστε να βγούμε αυτόματα στο πηγαίο (root) φάκελο της συσκευής. Από εδώ επιλέγουμε την εξής "διαδρομή" (μπαίνουμε δηλαδή διαδοχικά στους εξής φακέλους): system, etc, init.d

      4) Πατάμε το πρώτο μπλε εικονίδιο κάτω δεξιά -ΟΧΙ το X-, το οποίο ουσιαστικά αντιστοιχεί στην ενέργεια 'Paste'. Θα μας ζητηθεί να επιβεβαιώσουμε την ενέργειά μας (θα μας βγει ένα μήνυμα ότι το filesystem θα γίνει remount κτλ κτλ). Απαντάμε 'Yes'. Τώρα πρέπει να βλέπουμε στο φάκελο αυτό (δηλαδή στην "διαδρομή" /system/etc/init.d) ότι υπάρχει μέσα το αρχείο μας (δηλαδή το γνωστό αρχείο ZZEnableDocuments).

      5) Κάνουμε long tap στο αρχείο. Από πάνω δεξιά τέρμα, υπάρχουν 3 τελίτσες, τις πατάμε. Από το μενού που θα μας εμφανιστεί, επιλέγουμε 'Permissions'. Στο νέο πλαίσιο κειμένου τσεκάρουμε όλες τις επιλογές Read, Write, Execute για τις εγγραφές Owner, Group, Others. Αν το έχουμε κάνει σωστά, τότε κάτω δεξιά δίπλα από την ένδειξη ENTER OCTAL θα πρέπει να γράφει: 0777 rwxrwxrwx. Αν το γράφει αυτό, πατάμε Ok.

      Τελειώσαμε.

      Κάνουμε ένα reboot τη συσκευή και αν όλα έχουν πάει καλά, τότε μετά από 30 δευτερόλεπτα από την "έναρξή" της συσκευής (όταν δηλαδή μας εμφανιστεί η lockscreen για να δώσουμε κωδικό SIM + κωδικό ή pattern συσκευής), το Documents app θα ενεργοποιηθεί χωρίς εμείς να κάνουμε το παραμικρό. Η καθυστέρηση αυτή δεν είναι τυχαία και έχει επιλεγεί έτσι να είναι σίγουρο ότι έχει ξεκινήσει η συσκευή σε MIUI περιβάλλον και ότι το script μας (που αναλαμβάνει την αυτόματη ενεργοποίηση του Documents App) θα τρέξει τελευταίο. Τα τεστ έδειξαν ότι σε διαφορετική περίπτωση (δηλαδή όταν προσπαθούσα να ενσωματώσω αυτό το "fix" σε ήδη υπάρχοντα script της XTRV), δεν γινόταν αυτόματη ενεργοποίηση ή μάλλον γινόταν πολύ νωρίς και το MIUI είχε πάντα τον τελευταίο λόγο.


      Δοκιμάστε το και πείτε μου. Σε rooted nikel δουλεύει μια χαρά.
      Files
      • ZZEnableDocuments.txt

        (82 Byte, λήφθηκε 141 φορές, τελευταία )
    • Διαφήμιση
    • Ο/H linuxilakis έγραψε:

      Το δοκίμασα σε mido με 7.8.17 και δείχνει να μην δουλεύει.
      Αν αλλάξεις το 30 σε 60 μέσα στο script και reboot, κάνει τίποτα ? Permissions να φανταστώ άλλαξες μετά την αντιγραφή σωστά ?
    • Δεν το έβαλα στα init, το πέταξα σκέτο απλά να δω αν δουλεύει, με το κατάλληλο chmod και σαν απλό script μέσα από το terminal. ΟΚ ;)
      Οπότε υποθέτω με προσαρμογή του timer, θάναι εντάξει.
    • Διαφήμιση
    • Ο/H fog έγραψε:

      Δεν το έβαλα στα init, το πέταξα σκέτο απλά να δω αν δουλεύει, με το κατάλληλο chmod και σαν απλό script μέσα από το terminal. ΟΚ ;)
      Οπότε υποθέτω με προσαρμογή του timer, θάναι εντάξει.
      Το script σίγουρα δουλεύει, το θέμα είναι γιατί παρουσιάζει αυτή τη συμπεριφορά σε mido. Αν δεν βρει άκρη ο linuxilakis, θα δοκιμάσουμε κάτι άλλο.