2014-02-16 130 views
1

我被要求使用NDK將一些C++代碼集成到Android項目中。我有一些測試C++代碼啓動併成功運行。現在我試圖將測試代碼換成想要訪問SQLite數據庫文件的真正C++。原來的C++執行:Android - NDK - 從C++訪問的數據庫的位置

fopen64 (databasefilename, "r") 

其中databasefilename是文件本身不帶路徑的只是名字。

所以現在我的問題是,我應該把數據庫放在我的項目中? assetsres?一旦放置在那裏,爲了使fopen64正常工作,我需要在databasefilename之前放置什麼路徑(如果有的話)?

回答

1

您可以將種子文件放入assetsres/raw或其他地方。沒有內置機制將這個種子提取到可寫位置。有關更多詳細信息,請參閱討論「How to unpack some files from .apk to /data/data/<package> folder while installing the .apk?」。

您可以使用NDK AAsset_read()從本機代碼訪問資產(請參閱「How To Get File In Assets From Android NDK」)。

一個可行的替代方案是使用一個expansion file(見 「How to get file data from Android expansion file in native code」)和StorageManager。

你可以選擇很多可寫的位置之一:SD卡,或私人的應用程序文件夾,等等(見討論「Android NDK Write File和「Creating temporary files in Android with NDK」)。