我正在做的事情:
>
使用数据库浏览器
创建数据库并将其保存到资产/data/db/data.db
然后,当应用程序启动时,我将其复制到Lime.System.System.ApplicationStorageDirectory
<android target-sdk-version="26" install-location="preferExternal" if="android" />
<android permission="android.permission.WRITE_EXTERNAL_STORAGE"/>
<android permission="android.permission.WRITE_INTERNAL_STORAGE"/>
<haxelib name="openfl" />
<haxelib name="hxcpp" />
<assets path="assets/data/db" rename="db" />
package;
import haxe.io.Bytes;
import lime.Assets;
import openfl.system.System;
import sys.FileSystem;
import sys.db.Connection;
import sys.db.Sqlite;
import sys.io.File;
#if android
// Make SQLite work on android by statically compiling the library
import hxcpp.StaticSqlite;
#end
/**
* ...
* @author Sim
*/
class DBManager
{
private var CLONE:String = "db/asset_database.db";
private var NEW:String = "new_db.db";
private var _conn:Connection = null;
public function new()
{
}
public function openDatabase():Void
{
trace("CREATING FILE");
trace("targetPath: " +lime.system.System.applicationStorageDirectory);
//trace("targetPath: " +lime.system.System.applicationDirectory); //Crashing the app
trace("targetPath: " +lime.system.System.documentsDirectory);
trace("targetPath: " +lime.system.System.desktopDirectory);
var targetPath: String = lime.system.System.applicationStorageDirectory+ NEW;
trace("targetPath " + targetPath);
trace("FileSystem.exists(targetPath) " + FileSystem.exists(targetPath));
//Debugging
/*var bytes:Bytes = Assets.getBytes(CLONE);
trace("bytes are here "+bytes);
var content:String = bytes.toString();
trace("content "+content);
File.saveContent(targetPath, content);
trace("Saved");*/
//uncomment when done with errors
/*if (FileSystem.exists(targetPath) == false)
{
var bytes:Bytes = Assets.getBytes(CLONE);
var content:String = bytes.toString();
File.saveContent(targetPath, content);
}*/
var bytes:Bytes = Assets.getBytes(CLONE);
var content:String = bytes.toString();
File.saveContent(targetPath, content);
trace("Saved");
try
{
_conn = Sqlite.open(targetPath+NEW);
}
catch (e:Dynamic)
{
trace("Connection failed with error: "+e);
}
if (_conn != null)
{
trace("Connected to database " +_conn.dbName );
//not getting any database name trying to query
// and KaBoom app gone :D XD
var result = _conn.request("SELECT * FROM TEST");
trace("Query Result "+result.results());
//if i comment then it will go and close the connection too
//without breaking anything O_O
_conn.close();
}
}
}
我打了个盹,在梦中找到了答案
问题就在这里
_conn = Sqlite.open(targetPath+NEW);
修复:
_conn = Sqlite.open(targetPath);
var targetPath: String = lime.system.System.applicationStorageDirectory+ NEW;
Haxe是一门新兴的开源编程语言,开发者称:“相比其他语言(Java的平台是 JVM,C#的平台是.Net,ActionScript的平台是Flash Player等等),Haxe才是真正的多平台语言。不管是开发原生iOS、Android应用,还是网页;不论是应用于服务器还是个人桌面,Haxe都 可以胜任。” Haxe分别为Windows、Mac OSX以及Linux安装程序进行打包,当然如果安装
sbt-haxe 是 Sbt 插件,用来编译 Java 或者 Scala 项目中的 Haxe 源。 用法 第一步:在你的Sbt项目中安装sbt-haxe 在 project/plugins.sbt 中加入以下代码: addSbtPlugin("com.qifun" % "sbt-haxe" % "1.0.0") 然后在build.sbt中增加haxeSettings: haxeSettings 第
Haxe的Continuation库。允许你以同步语法编写异步代码。
我一直在浏览Haxe/OpenFL/Flixel的网站,但很难理解每一个网站都是为了什么。 Haxe是一种可以部署到多个平台的语言。OpenFL与Flash有关。Flixel是一个帮助你制作游戏的库。 谁能纠正我/说得更清楚些吗。
Protocol Buffers 协议的Haxe实现
我想用Haxe导入一个图像,我的图像很大,但它是8位,它的重量是89KB。问题发生在我导入的时候,因为内存的大小增长了35MB。我想它是在为一个32位的图像保留内存。知道如何导入一个8位的图像,而不消耗那么多的内存吗?