关于 android 文件管理、环境 Android 概念和 android 库插件
About the android file management, Environment Android notion and android library plugin
要在 Eclipse 下使用 Java 在 Android 中创建文件,我必须使用:
File docsFolder = new File(Environment.getExternalStorageDirectory() + "/toto.txt");
所以,我必须导入 import android.os.Environment
。
案例 1:
在 Eclipse 项目 - Gradle - 全部刷新后,我收到此错误:
error: package android.os does not exist
import android.os.Environment;
^
C:\Users\pascal\workspaceNeon\JFX_withGluon_10.8n\src\main\java\com\gluonapplication\PopUp.java:2694: error: cannot find symbol
GluonApplication.traceSimple("Path: " + Environment.getExternalStorageDirectory());
^
symbol: variable Environment
案例 2:
结果:我在我的 build.gradle 文件中添加了“应用插件:'android-library'”(见下文)。
在这种情况下,在 Gradle "Refresh all" 上,我得到:
"FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring root project 'JFX_withGluon_10.8n'.
> **android.compileSdkVersion is missing!**"
看来我的build.gradle文件没问题。我刚刚补充说:
"apply plugin: 'android-library'".
Java 构建路径库包括 android-25.jar。
src/android/res/AndroidManifest.xml:
"<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="25"/>
注意:以前,在Java源中,在Android系统中没有这个文件管理,我生成.apk没有问题。我还没有处理 gradle.
非常感谢您的帮助。
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.3.2'
}
}
apply plugin: 'org.javafxports.jfxmobile'
apply plugin: 'android-library'
repositories {
jcenter()
maven {
url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
}
}
mainClassName = 'com.gluonapplication.GluonApplication'
dependencies {
compile 'com.gluonhq:charm:4.3.0'
compile files('libs/android-support-v4.jar')
}
jfxmobile {
downConfig {
version '3.2.0'
plugins 'accelerometer', 'compass', 'device', 'orientation', 'storage', 'vibration', 'display', 'magnetometer', 'lifecycle', 'statusbar', 'position'
}
android {
applicationPackage = 'com.gluonapplication'
manifest = 'src/android/AndroidManifest.xml'
androidSdk = 'C:/Users/pascal/AppData/Local/Android/sdk'
resDirectory = 'src/android/res'
compileSdkVersion = '25'
buildToolsVersion = '25.0.1'
}
ios {
infoPList = file('src/ios/Default-Info.plist')
forceLinkClasses = [
'com.gluonhq.**.*',
'javax.annotations.**.*',
'javax.inject.**.*',
'javax.json.**.*',
'org.glassfish.json.**.*'
]
}
}
要摆脱所有这些并发症,我认为您应该尝试使用 Android Studio。
您在 downConfig
块下的构建文件中包含了多个 'plugins'。这些插件是 Charm Down libraries,提供不可知的 API,这意味着您将它们添加到主 Java 包中,并且有一个隐藏的 platform-specific 实现将被使用一旦将应用程序部署到任何可能的平台(桌面、android 或 iOS)。
如果您想访问给定的文件夹,可以使用 Storage
插件。
检查 API here。
您可以获得私人文件夹(捆绑在您的应用程序中)或 public 文件夹。
对于与您的应用相关的数据,我将使用私人文件夹:
File localRoot = Services.get(StorageService.class)
.flatMap(s -> s.getPrivateStorage())
.orElseThrow(() -> new RuntimeException("Error retrieving private storage"));
现在您可以在那里创建文件了:
File docsFolder = new File(localRoot + "/toto.txt");
对于public,首先你需要检查它是否可用(媒体已安装并且你有写入权限):
boolean storageAvailable = Services.get(StorageService.class)
.map(service -> service.isExternalStorageWritable())
.orElse(false);
然后你必须select你想要得到哪个文件夹,即Documents
:
File publicRoot = Services.get(StorageService.class)
.flatMap(s -> s.getPublicStorage("Documents"))
.orElseThrow(() -> new RuntimeException("Error retrieving public storage"));
现在您可以在那里创建文件了:
File docsFolder = new File(publicRoot + "/toto.txt");
最后,如果您检查项目的结构,您会发现每个平台都有一个通用的主包:您只能在其中放置 Java 代码。然后你有一个Android包,所以如果你需要它你可以添加android API,但只能在这个包中。
Charm Down 插件正是您如何在主程序包上使用通用 API 创建服务的示例(即参见 StorageService
here), and its different implementations (i.e. see AndroidStorageService
here)。
要在 Eclipse 下使用 Java 在 Android 中创建文件,我必须使用:
File docsFolder = new File(Environment.getExternalStorageDirectory() + "/toto.txt");
所以,我必须导入 import android.os.Environment
。
案例 1: 在 Eclipse 项目 - Gradle - 全部刷新后,我收到此错误:
error: package android.os does not exist
import android.os.Environment;
^
C:\Users\pascal\workspaceNeon\JFX_withGluon_10.8n\src\main\java\com\gluonapplication\PopUp.java:2694: error: cannot find symbol
GluonApplication.traceSimple("Path: " + Environment.getExternalStorageDirectory());
^
symbol: variable Environment
案例 2:
结果:我在我的 build.gradle 文件中添加了“应用插件:'android-library'”(见下文)。
在这种情况下,在 Gradle "Refresh all" 上,我得到:
"FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring root project 'JFX_withGluon_10.8n'.
> **android.compileSdkVersion is missing!**"
看来我的build.gradle文件没问题。我刚刚补充说: "apply plugin: 'android-library'".
Java 构建路径库包括 android-25.jar。
src/android/res/AndroidManifest.xml:
"<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="25"/>
注意:以前,在Java源中,在Android系统中没有这个文件管理,我生成.apk没有问题。我还没有处理 gradle.
非常感谢您的帮助。
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.3.2'
}
}
apply plugin: 'org.javafxports.jfxmobile'
apply plugin: 'android-library'
repositories {
jcenter()
maven {
url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
}
}
mainClassName = 'com.gluonapplication.GluonApplication'
dependencies {
compile 'com.gluonhq:charm:4.3.0'
compile files('libs/android-support-v4.jar')
}
jfxmobile {
downConfig {
version '3.2.0'
plugins 'accelerometer', 'compass', 'device', 'orientation', 'storage', 'vibration', 'display', 'magnetometer', 'lifecycle', 'statusbar', 'position'
}
android {
applicationPackage = 'com.gluonapplication'
manifest = 'src/android/AndroidManifest.xml'
androidSdk = 'C:/Users/pascal/AppData/Local/Android/sdk'
resDirectory = 'src/android/res'
compileSdkVersion = '25'
buildToolsVersion = '25.0.1'
}
ios {
infoPList = file('src/ios/Default-Info.plist')
forceLinkClasses = [
'com.gluonhq.**.*',
'javax.annotations.**.*',
'javax.inject.**.*',
'javax.json.**.*',
'org.glassfish.json.**.*'
]
}
}
要摆脱所有这些并发症,我认为您应该尝试使用 Android Studio。
您在 downConfig
块下的构建文件中包含了多个 'plugins'。这些插件是 Charm Down libraries,提供不可知的 API,这意味着您将它们添加到主 Java 包中,并且有一个隐藏的 platform-specific 实现将被使用一旦将应用程序部署到任何可能的平台(桌面、android 或 iOS)。
如果您想访问给定的文件夹,可以使用 Storage
插件。
检查 API here。
您可以获得私人文件夹(捆绑在您的应用程序中)或 public 文件夹。
对于与您的应用相关的数据,我将使用私人文件夹:
File localRoot = Services.get(StorageService.class)
.flatMap(s -> s.getPrivateStorage())
.orElseThrow(() -> new RuntimeException("Error retrieving private storage"));
现在您可以在那里创建文件了:
File docsFolder = new File(localRoot + "/toto.txt");
对于public,首先你需要检查它是否可用(媒体已安装并且你有写入权限):
boolean storageAvailable = Services.get(StorageService.class)
.map(service -> service.isExternalStorageWritable())
.orElse(false);
然后你必须select你想要得到哪个文件夹,即Documents
:
File publicRoot = Services.get(StorageService.class)
.flatMap(s -> s.getPublicStorage("Documents"))
.orElseThrow(() -> new RuntimeException("Error retrieving public storage"));
现在您可以在那里创建文件了:
File docsFolder = new File(publicRoot + "/toto.txt");
最后,如果您检查项目的结构,您会发现每个平台都有一个通用的主包:您只能在其中放置 Java 代码。然后你有一个Android包,所以如果你需要它你可以添加android API,但只能在这个包中。
Charm Down 插件正是您如何在主程序包上使用通用 API 创建服务的示例(即参见 StorageService
here), and its different implementations (i.e. see AndroidStorageService
here)。