210 votes

Pourquoi "System.out.println" ne fonctionne-t-il pas sous Android ?

Je veux imprimer quelque chose dans la console, afin de pouvoir la déboguer. Mais pour une raison quelconque, rien ne s'imprime dans mon application Android.

Comment déboguer alors ?

public class HelloWebview extends Activity {
    WebView webview;    
    private static final String LOG_TAG = "WebViewDemo";
    private class HelloWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        webview = (WebView) findViewById(R.id.webview);
        webview.setWebViewClient(new HelloWebViewClient());
        webview.getSettings().setJavaScriptEnabled(true);
        webview.setWebChromeClient(new MyWebChromeClient());
        webview.loadUrl("http://example.com/");    
        System.out.println("I am here");
    }

5 votes

Bien que vous ayez obtenu la réponse ci-dessous, j'aimerais ajouter que la sortie des instructions SOP est également dirigée vers LogCat : seulement, le nom de la balise serait System.out.

1 votes

Avant la version 0.9, System.out était perdu, je pense. Après il a été passé à la sortie logcat : code.google.com/p/Android/issues/detail?id=92 . (Si vous utilisez une bibliothèque existante ou autre qui utilise System.out, à tort ou à raison, elle apparaîtra dans logcat avec les versions ultérieures d'Android).

0 votes

Nous pouvons voir les System.out.printlns dans le logcat.

0voto

user13947194 Points 41

Je n'ai pas d'IDE sophistiqué pour utiliser LogCat car j'utilise un IDE mobile.

J'ai dû utiliser d'autres méthodes et j'ai les classes et les utilités pour que vous puissiez les utiliser si nécessaire.

  1. classe jav.Android.Msg. Possède une collection de méthodes statiques. A : méthodes pour imprimer les TOASTS Android. B : méthodes pour faire apparaître une boîte de dialogue. Chaque méthode nécessite un Context valide. Vous pouvez définir le contexte par défaut.

  2. Un moyen plus ambitieux, une console Android. Vous instanciez un handle vers la console dans votre application, ce qui lance la console (si elle est installée), et vous pouvez écrire dans la console. J'ai récemment mis à jour la console pour implémenter la lecture de données depuis la console. La console ne retourne pas tant que l'entrée n'a pas été reçue, comme une console normale. A : Téléchargez et installez Android Console (je vous l'offre) B : Un fichier java est livré avec (jav.Android.console.IConsole). Placez-le dans le répertoire approprié. Il contient les méthodes pour faire fonctionner la console Android. C : Appeler le constructeur qui complète l'initialisation. D : lire<*> et écrire la console. Il y a encore du travail à faire. En effet, comme OnServiceConnected n'est pas appelé immédiatement, vous ne pouvez pas utiliser IConsole dans la même fonction que celle où vous l'avez instanciée.

  3. Avant de créer Android Console, j'ai créé Console Dialog, qui était un dialogue fonctionnant dans la même application pour ressembler à une console. Avantage : il n'est pas nécessaire d'attendre OnServiceConnected pour l'utiliser. Inconvénient : lorsque l'application se plante, on n'obtient pas le message qui a fait planter l'application.

Puisque la Console Android est une application séparée dans un processus séparé, si votre application se plante, vous verrez certainement l'erreur. De plus, IConsole met en place un gestionnaire d'exception non capturé dans votre application au cas où vous ne seriez pas passionné par la gestion des exceptions. Il imprime les traces de pile et les messages d'exception dans la console Android. Enfin, si Android Console tombe en panne, elle vous envoie ses traces de pile et ses exceptions et vous pouvez choisir une application pour les lire. En fait, AndroidConsole n'est pas obligé de se planter.

Editer les extras J'ai remarqué que mon APK Builder n'a pas de LogCat, alors qu'AIDE en a un. J'ai alors réalisé qu'il y avait un avantage à utiliser ma console Android de toute façon.

  1. La console Android est conçue pour n'occuper qu'une partie de l'écran, de sorte que vous pouvez voir à la fois votre application et les données émises par votre application vers la console. Ceci n'est pas possible avec AIDE. Si je veux toucher l'écran et voir les coordonnées, la console Android rend cela facile.

  2. La console Android est conçue pour s'afficher lorsque vous y écrivez.

  3. La console Android se cache lorsque vous appuyez en arrière.

-3voto

jaiserpe Points 54

Un TextView pourrait faire office de console.

Il suffit d'utiliser sa méthode "append".

Pour écrire sur une nouvelle ligne, il suffit d'ajouter " \n ".

-6voto

Ronak Desai Points 1

J'ai récemment remarqué le même problème dans Android Studio 3.3. J'ai fermé les autres projets Android Studio et Logcat a commencé à fonctionner. La réponse acceptée ci-dessus n'est pas logique du tout.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X