关于文章 android

android cordova linux

cordova入门到放弃?

cordova入门到放弃?

安装androidsdk

设置JAVA_HOME环境变量,指定为JDK安装路径 设置ANDROID_HOME环境变量,指定为Android SDK安装路径 同时也建议你添加Android SDK的tools和platform-tools目录到你的PATH

~/.bash_profile

export ANDROID_HOME=/Development/android-sdk/
export PATH=${PATH}:/Development/android-sdk/platform-tools:/Development/android-sdk/tools
//运行$ source ~/.bash_profile

安装cordova

sudo npm install -g cordova

创建app项目

cordova create hello com.example.hello HelloWorld

添加平台

 cordova platform add android --save

编译app

cordova build

部署虚拟机内的app(adb先链接虚拟机或者手机)

 cordova emulate android
 cordova run android

添加插件

cordova plugin search camera

换图标 config.xml

用尖括号包裹
    icon src="res/ios/icon.png" platform="ios" width="57" height="57" density="mdpi" 

储存数据(js向)

### LocalStorage

```javascript ar storage = window.localStorage; var value = storage.getItem(key); // 传递键的名字获取对应的值。 storage.setItem(key, value) // 传递键的名字和对应的值去添加或者更新这个键值对。 storage.removeItem(key) // 传递键的名字去从LocalStorage里删除这个键值对。

```

### WebSQL

```javascript var db = window.openDatabase(name, version, displayName, estimatedSize);

``` * name (string): 数据库的唯一名称,会被存在磁盘当中。 * version (string): 数据库的版本。 * displayName (string): 数据库的让人容易懂的名字,会被系统用来向用户描述这个数据库。 * estimatedSize (number): 数据库的预期最大容量,字节为单位。当数据库容量增长的时候,可能会提示用户获取授权。如果你设置了一个合理的容量,以后的提示就会比较少。

### IndexedDB

    var db;
    var databaseName = 'myDB';
    var databaseVersion = 1;
    var openRequest = window.indexedDB.open(databaseName, databaseVersion);
    openRequest.onerror = function (event) {
    console.log(openRequest.errorCode);
    };
    openRequest.onsuccess = function (event) {
    // 数据库已经打开并初始化 - 我们进行的不错,可以继续了.
    db = openRequest.result;
    displayData();
    };
    openRequest.onupgradeneeded = function (event) {
    // 一个新的数据库,或者一个新的版本号被传递给open方法调用。
    var db = event.target.result;
    db.onerror = function () {
        console.log(db.errorCode);
    };

    // 创建一个存储对象。key是用来标识这个存储对象。
    //keyPath参数定义了key存储的地方。如果keyPath指定了,那么这个存储对象只能包含JavaScript对象,
    //而且每个对象必须有一个属性名字和keyPath相同(除非autoIncrement选项是true)。
    var store = db.createObjectStore('customers', { keyPath: 'customerId' });

    // 定义我们想要使用的索引。我们创建的存储对象不需要包含这些属性,它们只会出现在指定的索引中。 
    //
    // 使用方式: store.createIndex(indexName, keyPath[, parameters]);
    //
    // All these values could have duplicates, so set unique to false
    store.createIndex('firstName', 'firstName', { unique: false });
    store.createIndex('lastName', 'lastName', { unique: false });
    store.createIndex('street', 'street', { unique: false });
    store.createIndex('city', 'city', { unique: false });
    store.createIndex('zipCode', 'zipCode', { unique: false });
    store.createIndex('country', 'country', { unique: false });

    // 一旦store创建成功,就可以存储数据了。
    store.transaction.oncomplete = function (event) {
        // transaction方法获取到存储对象名字和索引的数组(或者一个单字符串去得到一个单独的存储对象),它们都在事务的作用域里。
        // 事务是只读的,除非指定了readwrite选项。
        //它返回了一个对象,这个对象提供了objectStore方法去访问transaction作用域里的对象。
        var customerStore = db.transaction('customers', 'readwrite').objectStore('customers');
        customers.forEach(function (customer) {
            customerStore.add(customer);
        });
    };
};

function displayData() {
}

Cordova-sqlite-storage

//安装
cordova plugin add cordova-sqlite-storage --save


//实例化
var db = null;

document.addEventListener('deviceready', function() {
  db = window.sqlitePlugin.openDatabase({name: 'demo.db', location: 'default'});
});

//使用标准事务 API 填充数据库:

  db.transaction(function(tx) {
    tx.executeSql('CREATE TABLE IF NOT EXISTS DemoTable (name, score)');
    tx.executeSql('INSERT INTO DemoTable VALUES (?,?)', ['Alice', 101]);
    tx.executeSql('INSERT INTO DemoTable VALUES (?,?)', ['Betty', 202]);
  }, function(error) {
    console.log('Transaction ERROR: ' + error.message);
  }, function() {
    console.log('Populated database OK');
  });

  //使用标准事务 API 检查数据:
db.transaction(function(tx) {
    tx.executeSql('SELECT count(*) AS mycount FROM DemoTable', [], function(tx, rs) {
      console.log('Record count (expected to be 2): ' + rs.rows.item(0).mycount);
    }, function(tx, error) {
      console.log('SELECT error: ' + error.message);
    });
  });

  //使用 SQL 批处理 API 填充数据库:

   db.sqlBatch([
    'CREATE TABLE IF NOT EXISTS DemoTable (name, score)',
    [ 'INSERT INTO DemoTable VALUES (?,?)', ['Alice', 101] ],
    [ 'INSERT INTO DemoTable VALUES (?,?)', ['Betty', 202] ],
  ], function() {
    console.log('Populated database OK');
  }, function(error) {
    console.log('SQL batch ERROR: ' + error.message);
  });

其他api文档