ionic项目打包好Xcode工程,模拟器运行各种沙盒缓存目录

用ionic开发好的app,build好iOS端可用的Xcode工程,然后用模拟器跑起来。研究一下js写的代码做本地持久化时,不同类型的文件都放在那里了。

cordova-plugin-sqliteStorage插件创建的数据库的在沙盒中文件位置,默认使用参数default。

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 }

/Users/userName/Library/Developer/CoreSimulator/Devices/udid/data/Containers/Data/Application/9609D07D-0618-4ADB-8A07-CC46D898EC09/Library/dabaseName.db

  1 angular.module(‘starter.eamDB‘, [])
  2   .factory("myDB", function ($q, $cordovaSQLite, $ionicPlatform) {
  3     var db;
  4     var is_debug = false;
  5     return {
  6       openDB: function (dbname, background, func) {
  7         if (window.cordova) {
  8           $ionicPlatform.ready(function () {
  9             var options = {name: dbname, location: ‘default‘};
 10             if (typeof background != ‘function‘) {
 11               db = $cordovaSQLite.openDB(options, background);
 12             } else {
 13               func = background;
 14               db = $cordovaSQLite.openDB(options);
 15             }
 16             if ($.isFunction(func)) {
 17               func();
 18             }
 19           });
 20           return db;
 21         } else {
 22           //使用本地存储。
 23           if (typeof background == ‘function‘) {
 24             func = background;
 25           }
 26           // console.log(window.openDatabase(dbname, "1.0", "", 1024 * 1024 * 100, func));
 27           return db = window.openDatabase(dbname, "", "", 1024 * 1024 * 100, func);
 28         }
 29       },
 30       deleteDB: function (dbName) {
 31         if (window.cordova && is_debug == false) {
 32           return $cordovaSQLite.deleteDB(dbName);
 33         } else {
 34
 35         }
 36       },
 37       execute: function (db, query, binding) {
 38         // console.log("query " + query);
 39
 40         if (window.cordova && is_debug == false) {
 41           return $cordovaSQLite.execute(db, query, binding);
 42         } else {
 43           var q = $q.defer();
 44           db.transaction(function (tx) {
 45             tx.executeSql(query, binding, function (tx, result) {
 46                 q.resolve(result);
 47               },
 48               function (transaction, error) {
 49                 console.log(JSON.stringify(error.message));
 50                 q.reject(error);
 51               });
 52           });
 53           return q.promise;
 54         }
 55       },
 56       executeBatchSqls: function (db, batchSqls) {
 57         var defer = $q.defer();
 58         var start = new Date;
 59         db.transaction(function (tx) {
 60           async.eachSeries(batchSqls, function (sql, callback) {
 61             var inStart = new Date;
 62             try {
 63               tx.executeSql(sql, null, function (tx, result) {
 64                 console.log("执行 " + sql + " 耗时: " + (new Date - inStart) + " ms");
 65                 callback(null, result);
 66               }, function (transaction, error) {
 67                 console.error("执行 " + sql + " 出错");
 68                 callback(error);
 69               });
 70             } catch (exception) {
 71               console.error("执行 " + sql + " 出现异常"+JSON.stringify(exception,undefined,2));
 72               callback(exception);
 73             }
 74           }, function (err) {
 75             console.log("执行批量sqls总共耗时:" + (new Date - start) + " ms");
 76             if (err) {
 77               console.error(err);
 78               defer.reject(err);
 79             } else {
 80               defer.resolve();
 81             }
 82           });
 83         });
 84         return defer.promise;
 85       },
 86       insertCollection: function (db, query, bindings) {
 87         if (window.cordova && is_debug == false) {
 88           return $cordovaSQLite.insertCollection(db, query, bindings);
 89         } else {
 90           var q = $q.defer();
 91           var coll = bindings.slice(0); // clone collection
 92           db.transaction(function (tx) {
 93             (function insertOne() {
 94               var record = coll.splice(0, 1)[0]; // get the first record of coll and reduce coll by one
 95               try {
 96                 tx.executeSql(query, record, function (tx, result) {
 97                   if (coll.length === 0) {
 98                     q.resolve(result);
 99                   } else {
100                     insertOne();
101                   }
102                 }, function (transaction, error) {
103                   q.reject(error);
104                   return;
105                 });
106               } catch (exception) {
107                 q.reject(exception);
108               }
109             })();
110           });
111           return q.promise;
112         }
113       },
114       nestedExecute: function (db, query1, query2, binding1, binding2) {
115         if (window.cordova && is_debug == false) {
116           return $cordovaSQLite.nestedExecute(db, query1, query2, binding1, binding2);
117         } else {
118           var q = $q.defer();
119           db.transaction(function (tx) {
120               tx.executeSql(query1, binding1, function (tx, result) {
121                 q.resolve(result);
122                 tx.executeSql(query2, binding2, function (tx, res) {
123                   q.resolve(res);
124                 });
125               });
126             },
127             function (transaction, error) {
128               q.reject(error);
129             });
130
131           return q.promise;
132         }
133       }
134     }
135   });

使用localstorage创建的一些本地缓存存储的记录的路径

/Users/userName/Library/Developer/CoreSimulator/Devices/udid/data/Containers/Data/Application/9609D07D-0618-4ADB-8A07-CC46D898EC09/Library/Caches/appIdentifier/nsurlcache/...

/Users/userName/Library/Developer/CoreSimulator/Devices/udid/data/Containers/Data/Application/9609D07D-0618-4ADB-8A07-CC46D898EC09/Library/Caches/...localstroage

诸如此类文件:

file__0.localstorage

file__0.localstorage-shm

file__0.localstorage-wal

从图库中选择的图片的路径

/Users/userName/Library/Developer/CoreSimulator/Devices/udid/data/Containers/Data/Application/9609D07D-0618-4ADB-8A07-CC46D898EC09/tem/

时间: 2024-10-10 08:42:42

ionic项目打包好Xcode工程,模拟器运行各种沙盒缓存目录的相关文章

01- - -1.获得项目中info.plist文件的内容 2.沙盒的数据存储及读取 3.控制器view的高度和状态栏statusBar的关系 4.[UIScreen mainScreen].applicationFrame的取值 5.按钮的状态 6.错误调试技巧 7.按钮的各种状态设置

1.获得项目中info.plist文件的内容 1> [NSBundle mainBundle].infoDictionary 2> 版本号在info.plist中的key:kCFBundleVersionKey 2.沙盒的数据存储及读取 1> 数据存储: [[NSUserDefaults standardUserDefaults] setObject:version forKey:versionKey]; 存储数据时记得同步一下 [[NSUserDefaults standardUser

iOS模拟器的应用沙盒在MAC中的位置

每个iOS应用都有自己专属的应用沙盒.分别为 应用程序包 Documents/ Library/Caches/ Library/Preferences/ tmp/ 当运行模拟时,在MAC下找到对应路径的规则随XCode的版本会有不同,在XCode6下的路径为 应用程序包 ~Library/Developer/CoreSimulator/Devices/<模拟器设备id>/data/Containers/Bundle/Application/<应用id> 其中模拟器设备id可以在XC

Ionic项目打包Android版本实战

最近在带团队做一个前端用Ionic+angularjs 的web app项目,由于自身不是做前端的,所以不太了解ionic,正好前端人员也是半吊子,所以只有自力更生学着自己打android包,在网上不断搜索打包方案,不断测试不断掉坑又不断解决再掉坑再解决后,终于在一天半时间android打包成功.接下来我把这些经验记录下来,希望能给大家提供参考和帮助. 配置Ionic下面android打包 1.安装Node.js下载安装:http://nodejs.org/ 安装完成之后打开PowerShell

Xcode iphone模拟器运行不流畅

xcode该需要多高的配置......把这个取消就好了

Xcode查看真机app沙盒内容

1. 打开Xcode 2. 连接iPhone或者iPad 3. 打开菜单Window-> Devices 4. 在DEVICES选择连接的真机 5. 在右侧的Installed Apps选择你要查看的app 6. 点击下面的齿轮按钮,选择Download Container,保存到桌面,生成XXX.xcappdata文件 7. 在桌面找到该文件,右键以包(package)的形式打开文件,可以查看对应的Library/ Documents/ tmp/

xcode查找当前程序的沙盒

随意在程序中添加一个断点,当程序命中断点的时候,控制台中会出现一个"lldb" 此时在"lldb"后面添加上  po NSHomeDirectory()  回车,控制台会出输出沙盒的位置.复制下来通过finder---前往----前往文件夹---粘贴   回车就ok了,当了当前程序的沙盒. documents :文档目录,保存程序生成的数据,会自动备份到icloud中.如果保存了下载数据,程序提交直接被拒绝. tmp:临时文件,系统会自动清理,重启程序必定清理. l

Ionic项目中使用极光推送-android

对于Ionic项目中使用消息推送服务,Ionic官方提供了ngCordova项目,这个里面的提供了用angularjs封装好的消息推送服务(官方文档),使用的是GitHub上的 PushPlugin 插件,也有相关的实现实例:GitHub地址 ,但是使用的是Google的GCM消息推送服务,一些网络原因,国内GCM可能不怎么好用(自己也没有试可不可以). 于是选择国内的消息推送服务,主要有:百度云推送,腾讯信鸽,极光推送,yunba 等等,其中只有极光推送官方提供了phonegap/cordov

利用IOS模拟器将数据存储在本地沙盒中以及从沙盒中读取详细步骤

使用IO模拟器,应用沙盒的根路径为:/Users/apple/Library/Application Support/iPhone Simulator/6.0/Applications(6.0为模拟器的版本) 1.获取应用沙盒目录 <1>利用沙盒根目录拼接"Documents"字符串 NSString * home = NSHomeDirectory(); NSString * documents = [home stringByAppendingPathComponent

使用ionic将HTML5项目打包成安卓和IOS应用

最近因为项目需要,在研究2天ionic打包应用,现将整个过程记录下来. ionic是一款HTML5手机应用开发框架,可以说是AngularJS移动端解决方案,基于PhoneGap的编译平台,可以实现编译成各个平台的应用程序.一次开发,处处运行. 1.安装ionic 首先需要安装Node.js,安装成功后,在命令行中输入下面指令,安装ionic和cordova npm install -g cordova ionic 可以通过查看版本号来测试是否安装成功,如果显示版本号即安装成功. windows