EP 23: SQLite DB in Android and iOS for TopStore App

Hello, 各位 iT邦帮忙 的粉丝们大家好~~~

本篇是 Re: 从零开始用 Xamarin 技术来复刻过去开发的一个 App: TopStore 系列文的 EP23。

上一篇谈到使用 SQLite 套件在 TopStore App 来做资料储存,接下来继续测试运作在双平台(iOS、Android) SQLite DB 建立状况。

不过在本篇会额外利用到一个 "DB Browser for SQLite" 的工具来协助确认,请各位到下列网址下载适合的平台安装档来使用喔。
https://sqlitebrowser.org/

DB Browser for SQLite

那就开始罗~~~


首先,先来看看 Android 平台。

把 TopStoreApp 部署到一台 Android 6.0 版本的模拟器执行。
Android 6.0 模拟器

透过 "Android Device Monitor" 来监看该模拟器的执行,并且透过其中的 File Explorer 来确认 SQLite DB 档是否出现。
SQLite DB 档是否出现 1

SQLite DB 档是否出现 2

若有出现的话,可以透过 "Android Device Monitor" 的 "Pull a file from the device"(在 Android Device Monitor 右上角有两个很小的按钮的其中一个),把该 SQLite DB 档拉出来到电脑上。
SQLite DB 档拉出来到电脑

在 Windows 系统上把 SQLite DB 档案拉出来後的样子。
SQLite DB 档

透过前言所说的 "DB Browser for SQLite" 来开启该 SQLite DB 档看看。
DB Browser for SQLite

打开後可以看到上一篇 EP22 撰写的程序所建立 Person 类别规划的 Table 资料格式(Data Schema)。
Person 类别规划的 Table 资料格式

这边稍微解释一下,在 Android 7.0 後的 OS 版本因 Android 作业系统的资料安全规范改变,若要看到其装置内部档案请改用其他技巧处理,如: Root...等,在此不便多谈。

但目前为止 Android 档案系统规划从 6.0 之後都没有大改,所以只要用 Android 6.0 的模拟器确认过一次,理论上後续到目前 Android 11.0 的档案系统的处理方式都一样。

再来,继续来看看 iOS 平台。

把 TopStoreApp 部署到一台 iOS 的模拟器执行。
iOS 模拟器

接下来在 macOS 当中透过 Finder 浏览到该模拟器部属 TopStore App 的资料夹。
SQLite DB 档是否出现 1
SQLite DB 档是否出现 2

这边稍微解释一下,其 macOS 用 Finder 浏览的路径为 "/Users/<macOS User Account>/Library/Developer/CoreSimulator/Devices/<Simuloatr uuid>/data/Containers/Data/Applications/<App uuid>/Library/"。

其中有两个 uuid 为 macOS 系统安装 Xcode 时自动产生,可能因更新或重新安装 Xcode 而改变,所以可以在 DbService 的建构式串接好 DB 的档案路径时,将其 SQLite DB 档案的档案路径位置,透过 Debug.WriteLine...等方法,在 Visual Studio 的 "输出" 窗格中以显示该档案路径位置。

因为是 iOS 的模拟器,所以直接可以透过 macOS 的 Finder 将该档案复制(macOS 系统当中称作 "拷贝")出来。
复制该 SQLite DB 档案

在 macOS 系统上把 SQLite DB 档案拉出来後的样子。
SQLite DB 档

透过前言所说的 "DB Browser for SQLite" 来开启该 SQLite DB 档看看。
DB Browser for SQLite

打开後可以看到上一篇 EP22 撰写的程序所建立 Person 类别规划的 Table 资料格式(Data Schema)。
Person 类别规划的 Table 资料格式

当然,这是 iOS 模拟器才能这样作,如果是用实体 iOS 装置就无法透过这样的方式测试了,若要透过外部程序看到其实体 iOS 装置的档案系统内部状态,请改用其他技巧处理,如: JB...等,在此不便多谈。

由於其 iOS 档案系统的部分,在模拟器或实体机器的作法是一致的,所以只要用模拟器确认过一次,理论上後续 App 部署到实体机器使用时也不会有太大的问题。

以上就是本 EP23 的介绍罗~~~

下篇 EP24 见唷!

搭啦嘎~~~


<<:  Day 19 - C strings 字串,我好想吃串烧

>>:  Day20 - ImageView(二)

Day9 - 期货contract及读取报价方式

今天要讲的是期货合约的相关函数。 首先是Contracts函数,就像之前文章里有使用到的一样,透过C...

[火锅吃到饱-15] 两餐韩国年糕火锅吃到饱-中友店 #299吃到饱

(这是两餐的官网连结) 很好奇299元的吃到饱会是怎样的菜色,所以就来了。 点餐时服务生说起司跟肉片...

Day29练习java-多执行序

昨天是用继承Thread来执行多执行序,今天介绍另外一种方法,实作Runnable介面一样可以执行多...

Day 15 - LocalStorage and Event Delegation

题外话 不知不觉铁人赛也到一半了呢! 开学後,能写文章的时间就渐渐变少(期初各种专题、报告就纷纷露头...

【分享】CSS-底线画起来!底线动起来+尾声

当年求学的时候有个老师很喜欢说 "老师说这个很重要的意思就是......这个很~ 重 ~ ...