- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将使用 sqlite 编写示例代码,它必须适用于 Android 和 IOS(和桌面)
这是我的build.gradle
buildscript {
repositories {
jcenter()
mavenCentral()
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
}
dependencies { classpath 'org.javafxports:jfxmobile-plugin:1.0.6' }
}
apply plugin: 'org.javafxports.jfxmobile'
repositories {
jcenter()
mavenCentral()
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
maven { url 'https://oss.sonatype.org/content/repositories/releases' }
}
ext.CHARM_DOWN_VERSION = "1.0.0"
dependencies {
compile 'mysql:mysql-connector-java:3.1.12'
//compile 'org.xerial:sqlite-jdbc:3.9.0-SNAPSHOT'
compile 'org.sqldroid:sqldroid:1.0.3'
compile "com.gluonhq:charm-down-common:$CHARM_DOWN_VERSION"
desktopRuntime "com.gluonhq:charm-down-desktop:$CHARM_DOWN_VERSION"
//desktopRuntime 'org.xerial:sqlite-jdbc:3.9.0-SNAPSHOT'
androidRuntime "com.gluonhq:charm-down-android:$CHARM_DOWN_VERSION"
androidRuntime 'org.sqldroid:sqldroid:1.0.3'
iosRuntime "com.gluonhq:charm-down-ios:$CHARM_DOWN_VERSION"
}
mainClassName = 'com.version17.Version17'
jfxmobile {
android {
manifest = 'src/android/AndroidManifest.xml'
packagingOptions {
exclude 'META-INF/INDEX.LIST'
}
}
ios {
infoPList = file('src/ios/Default-Info.plist')
forceLinkClasses = ['com.version17.**.*', 'com.mysql.**.*', 'SQLite.**.*', 'com.gluonhq.**.*']
}
}
sqliteHelper.java
public static void testSqli() throws SQLException, ClassNotFoundException{
Class.forName("SQLite.JDBCDriver");
String dbName = "mtt8.db";
File dir = null;
try {
dir = PlatformFactory.getPlatform().getPrivateStorage();
} catch (IOException e) {
e.printStackTrace();
}
File db = new File (dir, dbName);
String dbUrl = "jdbc:sqlite:" + db.getAbsolutePath();
Connection conn = DriverManager.getConnection(dbUrl);
//create table
Statement st=null;
st = conn.createStatement();
st.executeUpdate("DROP TABLE IF EXISTS village;");
st.executeUpdate("CREATE table village (id int, name varchar(20))");
//insert row
for (int i=0; i<50; i++){
st.executeUpdate("INSERT INTO village VALUES (" +i+ ", 'Erkan Kaplan')");
}
//select
String query = "SELECT id, name from village";
ResultSet rs = null;
rs = st.executeQuery(query);
while(rs.next()) {
int id = 0;
id = rs.getInt(1);
String name = null;
name = rs.getString(2);
System.out.println("id:"+ id+ ", name: "+ name);
st.executeUpdate("DELETE from village");
rs.close();
}
}
这适用于 Ipad 设备和台式机,但不适用于 Android 设备(如三星平板电脑)。
有人能告诉我为什么上面的代码不能在三星平板电脑上运行吗?或者这取决于我必须在我的代码中添加?
谢谢埃尔坎·卡普兰
最佳答案
您可以为每个平台加载您需要的驱动程序,并使用 Gluon Charm-Down了解平台并加载它。
使用 Gluon plugin在您的 IDE 上,在 build.gradle
文件中,很容易根据平台添加不同的依赖项。
编辑
也添加了桌面。
对于桌面,我们可以使用 org.sqlite.JDBC
,对于 Android,我们可以使用 org.sqldroid.SQLDroidDriver
。对于 iOS,不需要依赖关系,因为 SQLite.JDBCDriver
它已经包含在 Robovm 中。
repositories {
jcenter()
maven {
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
}
ext.CHARM_DOWN_VERSION = "1.0.0"
dependencies{
compile "com.gluonhq:charm-down-common:$CHARM_DOWN_VERSION"
desktopRuntime "com.gluonhq:charm-down-desktop:$CHARM_DOWN_VERSION"
desktopRuntime 'org.xerial:sqlite-jdbc:3.9.0-SNAPSHOT'
androidRuntime "com.gluonhq:charm-down-android:$CHARM_DOWN_VERSION"
androidRuntime 'org.sqldroid:sqldroid:1.0.3'
iosRuntime "com.gluonhq:charm-down-ios:$CHARM_DOWN_VERSION"
}
但我们需要将它添加到forceLinkClasses
选项中:
jfxmobile {
android {
manifest = 'src/android/AndroidManifest.xml'
}
ios {
forceLinkClasses = [ 'your.package.**.*', 'SQLite.**.*']
infoPList = file('src/ios/Default-Info.plist')
}
}
现在,在您的代码中,您可以根据应用程序运行的平台加载一个或另一个驱动程序,并创建连接,提供本地路径,如讨论的 here :
private void testSqli() throws SQLException, ClassNotFoundException {
if (JavaFXPlatform.isAndroid()) {
Class.forName("org.sqldroid.SQLDroidDriver");
} else if (JavaFXPlatform.isIOS()) {
Class.forName("SQLite.JDBCDriver");
} else if (JavaFXPlatform.isDesktop()) {
Class.forName("org.sqlite.JDBC");
}
File dir;
String dbUrl = "jdbc:sqlite:";
try {
dir = PlatformFactory.getPlatform().getPrivateStorage();
String dbName = "yourDatabase.db";
File db = new File (dir, dbName);
dbUrl = dbUrl + db.getAbsolutePath();
Connection conn = DriverManager.getConnection(dbUrl);
...
} catch (IOException ex) { }
}
现在您应该能够在桌面、Android 和 iOS 上运行它。我已经使用 NetBeans 和 IntelliJ 对其中三个进行了测试,但前者比后者更好地管理平台依赖性。
关于Android 设备上的 Javafxports 和 SQLite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33655851/
我目前正在努力解决可能非常简单的问题:如何将一个 JavaFXPorts 特定项目用作另一个同类项目中的依赖项? 对于纯粹分离的项目,我不知道如何将它们组合起来(不得不承认,我对 Gradle 的了解
我的项目具有语言相关文本的属性文件,这些文本在 ISO-8859-1 中编码(默认从内容类型派生)。它们是使用ResourceBundle读取的。当我在 Android 上运行该应用程序时,我看到不可
请查看图像以获取代码引用: 如果运行上面的代码,TextArea 显示File Exists: false。 请注意:此代码有效:ImageView image = new ImageView(new
您好,我正在尝试开始使用 javafxports 为 Android 构建应用程序,我有 android sdk 和 gradle(尝试使用 2.3 和 2.2)从获取站点的起始页构建简单的应用程序,
我目前正在使用 GluonHQ 和 JavaFXPorts 使用 JavaFX 开发移动应用程序。我的其中一个屏幕包含一个 ListView ,您可以从下面的屏幕截图中看到,该屏幕截图是从我的 iPh
示例代码如下: package com.javafxportslistviewdemo; import com.gluonhq.charm.down.Platform; import com.gluo
我有一个基于 JavaFX 的界面,我正在尝试使用 JavaFXPorts 在多个平台上构建该界面。大多数代码是与平台无关的,但我有一些调用特定于平台的代码的实用程序,例如Android 与桌面上的文
我已经开始尝试获取有关此问题的一些信息(请参阅 here ),但这一次,我创建了一个示例应用程序来展示我的问题(希望以比上次更好的方式)。 在我开始之前,这里是应用程序存储库的链接: https://
我想用 JavaFXPorts 构建一个 JavaFX Android 应用程序和 Kotlin 代码。是否可以在 JavaFXPorts 项目中使用 Kotlin?这是我的示例 Gradle(版
我正在尝试使用 javafxports 从 javaFX 项目构建 Android 应用程序。目前,我在移动设备上安装并启动它时遇到问题,它抛出 ConfigurationException。 这是使
我在将 Javafx 应用程序构建到 Android 时遇到以下异常。 error: Error: No resource found that matches the given name (at
我将使用 sqlite 编写示例代码,它必须适用于 Android 和 IOS(和桌面) 这是我的build.gradle buildscript { repositories {
有没有办法访问 UIViewController,舞台正在运行?据我所知,在 RoboVM 和 Android 上有类似的东西,我们有 FXActivity 来完成这样的任务...... 感谢和问候,
我在使用 JavaFxPorts 在 Android 上保存文件时遇到问题。 我找到了那个链接 here ,但这对我不起作用。 它没有找到接口(interface),我无法使用它。 我的目标是使用 J
我使用 javafxports 和 gradle 在 netbeans 中编写了一个 javafx andoid 应用程序。我将依赖项添加到 gradel,但现在我不知道如何将 jars 添加到我的项
我在开发要移植到 Android 的 Javafx 应用程序时使用了 Netbeans 的 Gluon 插件,我想在 Android 的 Assets 文件夹中添加一些文件,但我找不到它?在哪里放置
我正在尝试使用 JavaFXPorts 和 RoboVM-cocoatouch 但我无法使用 RoboVM 中的原生内容,例如 UIButton。 我的 build.gradle 文件中有以下依赖项:
我想创建一个使用 MySqlDB 连接的应用程序/桌面应用程序。我在 Netbeans 中使用了 Gluon 插件。当我想编译桌面应用程序时,一切正常。但是当我想编译 Android 应用程序时 ->
在 Android 手机上启动我的应用程序时出现以下错误 FATAL EXCEPTION: main Process: ie.murphysoftware.games.magnatron, PID:
我正在尝试使用 javafxports 编写一个简单的 sqlite 代码。 build.gradle: buildscript { repositories { jc
我是一名优秀的程序员,十分优秀!