2015-07-30 8 views
26

Cordova uygulamasının 2.2.0 sürümü var. Şimdi yükseltmek istiyorum, yükseltme bölümü yaptım, yükseltme yaptıktan sonra, uygulama görüntüleri görüntülenmiyor, boş ekran geldi. hatta açılış ekranı da gelmedi. İşte benim kodumCordova PhoneGap 2.2.0'dan güncelleme 5.1.1

Şimdi bir seviyeye ulaştım. Uygulamayı simüle ettim, yaklaşık SQLitePlugin sorunudur. Ne zaman açık veritabanı db.cordova tanımlamıyorsa tanım

Nasıl veritabanı yükleme - veritabanını db klasöründen android yükleme konumuna kopyalayın. Bu iyi çalıştı. i could not prepare statement(1 no such table) error code 5 tablo avaibale

Lütfen herhangi bir öneri veya fikir bu hata mesajını aldım bu yöntemi çağrıldığında

var DB    = new Object(); 
DB.isDBSupported = false; 
DB.isDBCreated  = false; 
DB.vocabDB   = null; 
DB.tables   = ['userResponses', 'wordGroups', 'words', 'wordMapping', 'checkExists', 'patch_version'] 
DB.createdTables = 0; 
DB.setupCallback = null; 
DB.curQP   = null; 
DB.accountStatus = false; 
DB.sfx    = true; 
DB.showWarnings  = true; 
DB.firstLaunch  = false; 

DB.initDB = function(callback) { 
    this.setupCallback = callback || function(){/*console.log("null function called")*/}; 
    this.openDB(); 
    var db = this; 
    if(!isPhoneGap()) { 
     _.delay(this.checkDB.bind(this), 500); 
    } 
} 

DB.checkDB = function() { 
    var db = this; 
    this.vocabDB.transaction(
     function (t) { 
      t.executeSql('DROP TABLE checkExists', [], db.setupDBResultHandler.bind(db), db.setupDBErrorHandler.bind(db, ">>delete exists")) 
     } 
    ) 
} 

DB.openDB = function() { 

    try { 
     if (!window.openDatabase) { 
      alert('Cannot open database!'); 
     } else { 
      var shortName = 'sns2'; 
      var version = '1.0'; 
      var displayName = 'sns2'; 
      var maxSize = (isAndroid()) ? 5242880 : 1000000; 

      if(!isPhoneGap()) { 
       this.vocabDB = window.openDatabase(shortName, version, displayName, maxSize, this.DBCreated); 
      } else if(isAndroid()) { 
       utils.log("ANDROID DATABASE .. "); 
       this.vocabDB = window.sqlitePlugin.openDatabase(shortName, version, displayName, maxSize, this.DBCreated); 
      } else if(isIOS()) { 
       utils.log("iOS DATABASE .. "); 
       this.vocabDB = window.sqlitePlugin.openDatabase(shortName, version, displayName, maxSize, this.DBCreated); 
      } 
      this.DBSupported = true; 
      if(isPhoneGap()) { 
       this.setupCallback(); 
      } 

     } 
    } catch(e) { 
     alert("Unable to open db." + e.message); 
     return; 
    } 
} 

Service.js

function getGroupCategory(handler) { 
    console.log("selecting wordGroups"); 
    DB.vocabDB 
    .transaction(function(t) { 
       t 
       .executeSql('SELECT * FROM categories', [], function(transaction, resultSet) { 
          handler(transaction, resultSet); 
          }, DB.transactionErrorHandler 
          .bind(DB, "Error while selecting wordGroups")); 
       }) 
} 

:

Bu benim veritabanıdır.

+2

2.2.0'dan 5.1.1'e yükseltmek için yapmanız gereken tüm değişikliklerin farkında mısınız? Bazıları: http://docs.phonegap.com/en/3.4.0/guide_platforms_android_upgrading.md.html Projeyi ve telefon hafızasını yükseltip güncellediniz mi? – Piwwoli

+1

Birisi iOS'takiyle aynı hatayı alıyordu: https://issues.apache.org/jira/browse/CB-1546 şu şekilde önerildi: 'db.transaction() çağrınızı şu şekilde değiştirmelisiniz: db.transaction (function, [], win, fail) to: db.transaction (işlev, başarısız, kazan) ' – Piwwoli

+0

Bu hatayı aldım' 'Uncaught TypeError: 'Database' üzerinde 'transaction' çalıştırılamıyor: parametre 2 olarak sağlanan geri arama bir işlev değildir. ", kaynak: file: /// android_asset/www/com/jsonParser.js' – Piraba

cevap

3

5.1.1 ile temizlemeye başlamanızı öneririm. Böylelikle, her şeyi yükselterek kolayca ortaya çıkabilecek problemleri önleyebilir ve problemlerin kökünü aramaya devam edebilirsiniz.

Bu daha fazla iş gibi görünebilir, ancak en azından benim kişisel deneyimimin PhoneGap ile öğrettiği şey, yükseltme işleminden daha az güçlük çekecektir.