terça-feira, 15 de março de 2016

Device communication timed out. Try unplugging & replugging the device

Olá :D

Não estava conseguindo rodar meu projeto ionic no celular (ionic run android)

Dava esse erro da imagem (Device communication timed out. Try unplugging & replugging the device)

Tentei desplugar e plugar o celular.. reiniciei o notebook, reiniciei o celular... nada funcionou!
Teve uma época q quando dava esse erro, eu tentava mais umas 3 vezes q voltava a funcionar... agora posso tentar 1000 mil vezes q sempre dá erro...

Pelo fato de eu estar no Windows, acredito q possa ser algo do adb, alguma coisa de driver talvez....



Achei duas soluções para o problema:

Usei o Ionic View: É muito legal e fácil de usar. Você faz upload da sua app para o Ionic Apps, e no seu celular com a app do IonicView você consegue acessar todas as suas apps (Você pode testar num iphone sem ter um Mac).

Mas com o Ionic View você ainda tem as mesmas limitações do Ionic Serve... Você não consegue testar todos os plugins do Cordova por exemplo.

Então consegui rodar a minha app diretamente no celular através dos seguintes comandos:

ionic build android
adb.exe install -r platforms/android/build/outputs/apk/android-debug.apk

Se não encontrar o adb.exe coloque no seu PATH: <ANDROID_SDK>\platform-tools

Fontes:
https://www.facebook.com/groups/1558333777738228/permalink/1693011350937136/
https://www.thepolyglotdeveloper.com/2014/09/manage-files-in-android-and-ios-using-ionicframework/


É isso aí, vaaaleu!!!
Adriano Schmidt

5 comentários:

  1. Solução para não dar mais o erro de timed out:
    Abra o arquivo \platforms\android\cordova\node_modules\q\q.js

    Procure pelo trecho abaixo e modifique apenas a linha abaixo do comentário:
    Promise.prototype.timeout = function (ms, error) {
    var deferred = defer();
    var timeoutId = setTimeout(function () {
    if (!error || "string" === typeof error) {
    error = new Error(error || "Timed out after " + ms + " ms");
    error.code = "ETIMEDOUT";
    }
    deferred.reject(error);
    /*}, ms); Esta linha era assim, troque pelo conteúdo abaixo*/
    }, 40000);

    this.then(function (value) {
    clearTimeout(timeoutId);
    deferred.resolve(value);
    }, function (exception) {
    clearTimeout(timeoutId);
    deferred.reject(exception);
    }, deferred.notify);

    return deferred.promise;
    };

    ResponderExcluir