Ok, donc d'abord, j'ai réalisé qu'une de mes applications de capture d'écran sur une tablette Android 7, ne fonctionnait pas (me donnait une capture d'écran noire), et ensuite j'ai réalisé que cette application n'avait pas la permission "Capture d'écran" ; ensuite j'ai cherché cette permission dans les Paramètres, mais je ne l'ai pas trouvée ; ensuite j'ai réalisé que l'application fait planter Android et provoque un redémarrage à certains moments lorsque vous lui demandez de capturer.
(EDIT : étrangement, - dans le contexte des problèmes de ce post listés plus loin, - lorsque j'ai essayé de prendre une capture d'écran en appuyant sur le "bouton d'alimentation et le bouton volume-bas", cela a bien fonctionné).
J'ai donc réussi à me connecter à l'appareil, où je peux obtenir Root, et j'ai voulu lancer une commande de screencap, et cela s'est terminé comme ceci :
# screencap -p out.png
stack corruption detected
Aborted
J'ai essayé de faire la même chose qu'un utilisateur normal et j'ai reçu un rapport :
$ screencap -p out.png
Segmentation fault
C'est de la merde, hein ? En plus, j'ai essayé :
# screenrecord out.mp4
... et cela a fait planter Android, et je l'ai redémarré.
Donc, pour arriver à por qué screencap
ne fonctionne pas, ne ressemble pas à un problème trivial - mais l'appareil fonctionne autrement, l'écran est affiché, etc.
Je me demandais donc s'il existait un autre moyen de faire une capture d'écran dans ce contexte (j'ai Root dans le shell sous Android 7, l'écran est rendu et affiché correctement, tout fonctionne apparemment, à l'exception de screencap
elle-même) ?
( Peut-être que certains /dev/...
fichier de nœud de périphérique, qui, lorsque vous cat
) vous donne le contenu actuel de l'écran, pixel par pixel (ce qui, j'imagine, nécessitera un décodage avant d'être visualisable, mais ce n'est pas un problème, je peux utiliser tftp pour transférer les fichiers hors de l'appareil) ? )
EDIT : Voici l'extrait connexe de logcat
quand le crash de la capture d'écran se produit :
02-12 17:05:01.285 22745 22745 D AndroidRuntime: >>>>>> START com.android.internal.os.RuntimeInit uid 0 <<<<<<
02-12 17:05:01.322 22745 22745 D AndroidRuntime: CheckJNI is OFF
02-12 17:05:01.551 22745 22745 D ICU : No timezone override file found: /data/misc/zoneinfo/current/icu/icu_tzdata.dat
02-12 17:05:01.718 22745 22745 W System : ClassLoader referenced unknown path: /vendor/lib64
02-12 17:05:01.719 22745 22745 W System : ClassLoader referenced unknown path: /system/lib64
02-12 17:05:01.930 22745 22745 E memtrack: Couldn't load memtrack module (No such file or directory)
02-12 17:05:01.930 22745 22745 E android.os.Debug: failed to load memtrack module: -2
02-12 17:05:01.951 22745 22745 I Radio-JNI: register_android_hardware_Radio DONE
02-12 17:05:02.092 22745 22745 D AndroidRuntime: Calling main entry com.android.commands.am.Am
02-12 17:05:02.228 22745 22745 D AndroidRuntime: Shutting down VM
02-12 17:05:02.358 18887 22754 I OpenGLRenderer: Initialized EGL, version 1.4
02-12 17:05:02.358 18887 22754 D OpenGLRenderer: Properties::enablePartialUpdates 1
02-12 17:05:02.359 18887 22754 D OpenGLRenderer: Properties::useBufferAge 1
02-12 17:05:02.359 18887 22754 D OpenGLRenderer: Default swap behavior 0
02-12 17:05:02.359 18887 22754 D OpenGLRenderer: Swap behavior 0
02-12 17:05:04.259 16803 16803 W WindowManager: Attempted to remove non-existing token: android.os.Binder@73bede4
02-12 17:05:10.741 22761 22761 D AndroidRuntime: >>>>>> START com.android.internal.os.RuntimeInit uid 0 <<<<<<
02-12 17:05:10.756 22761 22761 D AndroidRuntime: CheckJNI is OFF
02-12 17:05:10.890 22761 22761 D ICU : No timezone override file found: /data/misc/zoneinfo/current/icu/icu_tzdata.dat
02-12 17:05:11.019 22761 22761 E memtrack: Couldn't load memtrack module (No such file or directory)
02-12 17:05:11.019 22761 22761 E android.os.Debug: failed to load memtrack module: -2
02-12 17:05:11.024 22761 22761 I Radio-JNI: register_android_hardware_Radio DONE
02-12 17:05:11.080 16562 16562 I main : type=1400 audit(0.0:613): avc: denied { read } for path="/dev/socket/zygote" scontext=u:r:zygote:s0 tcontext=u:r:init:s0 tclass=unix_stream_socket permissive=1
02-12 17:05:11.080 16562 16562 I main : type=1400 audit(0.0:614): avc: denied { getattr } for path="socket:[201098]" dev=sockfs ino=201098 scontext=u:r:zygote:s0 tcontext=u:r:init:s0 tclass=unix_stream_socket permissive=1
02-12 17:05:11.081 22761 22761 D AndroidRuntime: Calling main entry com.android.commands.am.Am
02-12 17:05:11.100 16562 16562 I main : type=1400 audit(0.0:615): avc: denied { write } for path="/dev/socket/zygote" scontext=u:r:zygote:s0 tcontext=u:r:init:s0 tclass=unix_stream_socket permissive=1
02-12 17:05:11.118 16803 16855 I ActivityManager: Start proc 22770:android.process.media/u0a10 for broadcast com.android.providers.media/.MediaScannerReceiver
02-12 17:05:11.189 22770 22770 W System : ClassLoader referenced unknown path: /system/priv-app/MediaProvider/lib/arm
02-12 17:05:11.293 22770 22783 D libEGL : loaded /vendor/lib/egl/libEGL_tegra.so
02-12 17:05:11.306 22770 22783 D libEGL : loaded /vendor/lib/egl/libGLESv1_CM_tegra.so
02-12 17:05:11.310 22770 22770 W System : ClassLoader referenced unknown path: /system/priv-app/DownloadProvider/lib/arm
02-12 17:05:11.312 22770 22770 D ApplicationLoaders: ignored Vulkan layer search path /system/priv-app/DownloadProvider/lib/arm:/system/priv-app/DownloadProvider/DownloadProvider.apk!/lib/armeabi-v7a:/system/lib:/vendor/lib for namespace 0xa8751090
02-12 17:05:11.479 22770 22783 D libEGL : loaded /vendor/lib/egl/libGLESv2_tegra.so
02-12 17:05:11.560 22770 22770 D MediaScannerReceiver: action: android.intent.action.MEDIA_SCANNER_SCAN_FILE path: /
02-12 17:05:11.562 16803 16852 I ActivityManager: Killing 19204:com.android.packageinstaller/u0a17 (adj 906): empty #17
02-12 17:05:11.564 22761 22761 D AndroidRuntime: Shutting down VM
02-12 17:05:11.579 16803 17333 D GraphicsStats: Buffer count: 7
02-12 17:05:11.580 16803 17283 D ActivityManager: cleanUpApplicationRecord -- 19204
02-12 17:05:11.603 22757 22757 F libc : stack corruption detected
02-12 17:05:11.603 22757 22757 F libc : Fatal signal 6 (SIGABRT), code -6 in tid 22757 (screencap)
02-12 17:05:11.604 127 127 W : debuggerd: handling request: pid=22757 uid=0 gid=0 tid=22757
02-12 17:05:11.662 22787 22787 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
02-12 17:05:11.663 22787 22787 F DEBUG : Build fingerprint: 'samsung/GT-P7500/GT-P7500:4.0.4/IMM76D/XXLQ8:user/release-keys'
02-12 17:05:11.663 22787 22787 F DEBUG : Revision: '14'
02-12 17:05:11.663 22787 22787 F DEBUG : ABI: 'arm'
02-12 17:05:11.664 22787 22787 F DEBUG : pid: 22757, tid: 22757, name: screencap >>> screencap <<<
02-12 17:05:11.664 22787 22787 F DEBUG : signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
02-12 17:05:11.683 22787 22787 F DEBUG : Abort message: 'stack corruption detected'
02-12 17:05:11.683 22787 22787 F DEBUG : r0 00000000 r1 000058e5 r2 00000006 r3 00000008
02-12 17:05:11.683 22787 22787 F DEBUG : r4 a9bb957c r5 00000006 r6 a9bb9524 r7 0000010c
02-12 17:05:11.683 22787 22787 F DEBUG : r8 beb7ba33 r9 00000001 sl 00000500 fp 00000005
02-12 17:05:11.683 22787 22787 F DEBUG : ip 00000016 sp beb7b760 lr a8f2b477 pc a8f2dccc cpsr 000f0010
02-12 17:05:11.705 22787 22787 F DEBUG :
02-12 17:05:11.705 22787 22787 F DEBUG : backtrace:
02-12 17:05:11.705 22787 22787 F DEBUG : #00 pc 0004cccc /system/lib/libc.so (tgkill+12)
02-12 17:05:11.705 22787 22787 F DEBUG : #01 pc 0004a473 /system/lib/libc.so (pthread_kill+34)
02-12 17:05:11.705 22787 22787 F DEBUG : #02 pc 0001c649 /system/lib/libc.so (raise+10)
02-12 17:05:11.705 22787 22787 F DEBUG : #03 pc 00018169 /system/lib/libc.so (__libc_android_abort+34)
02-12 17:05:11.705 22787 22787 F DEBUG : #04 pc 00016910 /system/lib/libc.so (abort+4)
02-12 17:05:11.705 22787 22787 F DEBUG : #05 pc 0001a627 /system/lib/libc.so (__libc_fatal+22)
02-12 17:05:11.705 22787 22787 F DEBUG : #06 pc 0004b183 /system/lib/libc.so (__stack_chk_fail+6)
02-12 17:05:11.705 22787 22787 F DEBUG : #07 pc 00001765 /system/bin/screencap
02-12 17:05:11.705 22787 22787 F DEBUG : #08 pc 00016061 /system/lib/libc.so (__libc_init+48)
02-12 17:05:11.705 22787 22787 F DEBUG : #09 pc 00001344 /system/bin/screencap
02-12 17:05:11.767 16803 16921 W NativeCrashListener: Couldn't find ProcessRecord for pid 22757
02-12 17:05:11.767 22787 22787 E : AM data write failed: Broken pipe
02-12 17:05:11.769 127 127 W : debuggerd: resuming target 22757
02-12 17:05:11.771 16803 16859 I BootReceiver: Copying /data/tombstones/tombstone_05 to DropBox (SYSTEM_TOMBSTONE)