2015-02-20 3 views
14

Ho bisogno di eseguire ionic platform add android/iOs alcune volte per ottenere il risultato desiderato. Talvolta i plug-in vengono aggiunti dopo la prima esecuzione, ma in genere devo cancellare i plug-in e le directory della piattaforma ed eseguire nuovamente l'aggiunta del ciclo della piattaforma alcune volte finché tutti i plug-in non vengono aggiunti alla cartella Android.I plug-in non vengono sempre aggiunti dopo che Cordova aggiunge la piattaforma Android e iOs

Qualcun altro ha riscontrato lo stesso problema e se sì - qual è la risoluzione? eventuali ...

grazie in anticipo

+0

Sto ancora avendo lo stesso problema ... qualche idea? – batanasov

+0

su cui stai lavorando? questo sembra un problema di permesso di scrittura. – grytrn

+0

È osx. Se si trattasse di un problema di permessi di scrittura, non sarei in grado di farlo a tutti – batanasov

risposta

2

La soluzione che ho finito per usare è quello di disinstallare e reinstallare tutti i plugin dopo l'aggiunta della piattaforma. Dal momento che ho avuto problemi con questo problema nelle passate app di Cordova, sto cercando di rendere le build il più coerenti possibili, quindi non sto commettendo la directory delle piattaforme e cancellandola dopo aver creato l'apk. Ho fatto questo con uno script:

ionic platform add android 

ionic plugin remove org.apache.cordova.device 
ionic plugin remove org.apache.cordova.console 
ionic plugin remove com.ionic.keyboard 

ionic plugin add org.apache.cordova.device 
ionic plugin add org.apache.cordova.console 
ionic plugin add com.ionic.keyboard 

platforms/android/cordova/build --release 

rm -rf platforms 

Questo ha sempre funzionato per me, ma dal momento preferirei non devono preoccuparsi di mantenere questa corrente, ho spostato questi comandi nel: after_platform_add/010_install_plugins. js, con le seguenti aggiunte:

packageJSON.cordovaPlugins = packageJSON.cordovaPlugins || []; 

packageJSON.cordovaPlugins.forEach(function(plugin) { 
    exec('cordova plugin remove ' + plugin, function(error, stdout, stderr) { 
    sys.puts(stdout); 
    }); 
}); 

packageJSON.cordovaPlugins.forEach(function(plugin) { 
    exec('cordova plugin add ' + plugin, function(error, stdout, stderr) { 
    sys.puts(stdout); 
    }); 
}); 

Ciò presuppone l'esistenza di qualcosa lungo queste linee nel package.json nell'oggetto radice JSON:

"cordovaPlugins": [ 
    "org.apache.cordova.console", 
    "org.apache.cordova.device", 
    "com.ionic.keyboard" 
] 

Quale shou ld si verifica automaticamente se after_plugin_add/010_register_plugin.js funziona correttamente.

Detto questo, mi sento come se fosse un po 'hacky e che Ionic dovrebbe gestire tutto questo correttamente, quindi spero di trovare un po' di tempo per esaminare questo problema da quel lato e trovare il problema di fondo di questo problema.

+0

Non è 'cordova prepare [piattaforma]' tutto ciò che è veramente necessario? Questo copia i file dalla cartella del plugin di progetto alla piattaforma di destinazione. – laughingpine

+0

'cordova build' è una scorciatoia per:' cordova prepare', 'cordova compile', quindi dovrebbe fare tutto il necessario. Il problema è che è un po 'incerto se funziona effettivamente. Ho davvero bisogno di qualcosa che sia veramente riproducibile (facciamo una distribuzione continua ai nostri clienti). Questo metodo sembra fare il trucco. – jbeck

+0

Questo non ha risolto il problema per me. Il problema persiste ancora. – batanasov

0

Penso di aver trovato una soluzione a questo problema. Invece di usare ionic per aggiungere la piattaforma sto usando sudo cordova platform add .... Funziona sempre.

+4

Non si deve usare '' '' sudo'''' per questo comando. – com2ghz

24

Ho riscontrato alcuni problemi simili. Prova resettare il progetto ionica:

ionic state reset 

Questo rimuove la cartella platforms/ e plugins/ e li ripristina dalle informazioni memorizzate nel vostro package.json. Ci sono alcuni altri utili comandi documentati su ionic-cli project.

+0

Questo ha fatto un sogno per me! –

+0

Perfetto, adoro questo comando. – jlafay