在网上搜索,目前尚不清楚Java 8是否支持Android开发.
在我下载/设置Java 8之前,有人可以在任何"官方"文档中指出我说Java 8是否支持Android开发.
我正在添加这个问题,因为我是Java和Android的新手,我搜索了几个小时试图解决这个问题.答案来自相关答案的组合,所以我想我会记录我为其他可能正在努力的人学到的东西.见答案.
对于一些背景知识,我的经验主要是PHP的Web开发和一点Ruby.我唯一的操作系统是Linux(Ubuntu Studio),我(不情愿地)在Android Studio 2.1.2中开发我的第一个Android应用程序.我的Java设置如下:
>java -version
> openjdk version "1.8.0_91"
> OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~15.10.1-b14)
> OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
Run Code Online (Sandbox Code Playgroud) datetime android android-gradle-plugin threetenbp threetenabp
首先:我找到了很多解决方案,但没有一个能够解决我的问题。
问题:我想将yyyy-MM-dd格式的字符串日期转换为实际日期,我可以使用我创建的以下方法来完成此操作,但问题是它仅与 API 级别 26 及更高版本兼容,而我的最低支持级别为 19。
//string to date convert
@RequiresApi(Build.VERSION_CODES.O)
fun convertStringDate(dateString: String): LocalDate {
val format = DateTimeFormatter.ISO_DATE
val tmpDate = LocalDate.parse("2019-12-10", format)
var parsedDate: LocalDate = tmpDate
try {
parsedDate = LocalDate.parse(dateString, format)
} catch (e: Exception) {
e.printStackTrace()
}
return parsedDate
}
Run Code Online (Sandbox Code Playgroud)
问题:如何将 yyyy-MM-dd 格式的字符串转换为实际日期,以便与 API 级别 19 及更高版本兼容?
找到答案:在模块级 build.gradle 文件中添加 desugring 作为
implementation coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.5")
Run Code Online (Sandbox Code Playgroud)
并且还启用
coreLibraryDesugaringEnabled true
Run Code Online (Sandbox Code Playgroud)
在同一文件的编译器选项中
当我在我的 android 手机上部署我的 android 应用程序时,我面临 ClassNotFoundException。
我尝试在具有 Android 6.0.1 和 Android 7.1.1 的 Android 手机上
而当我在模拟器(Nexus 5X API 26)上部署相同的应用程序并运行 Android 8.0 时,我没有遇到任何问题。该应用程序加载顺利。
Build.gradle (app) 文件有
android {
compileSdkVersion 28
defaultConfig {
applicationId "de.pfiva.mobile.voiceassistant"
minSdkVersion 23
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经包含了来自本地 Maven 的依赖项。此依赖项基本上具有纯 Java 类 (POJO)。在一些类中有 java.time.LocalDateTime 类型的字段
我该如何解决这个问题。寻找建议。
谢谢。
例外 :
E/AndroidRuntime: FATAL EXCEPTION: main
Process: de.pfiva.mobile.voiceassistant, PID: 25245
java.lang.NoClassDefFoundError: Failed resolution of: …Run Code Online (Sandbox Code Playgroud) 你好,我对 Android 还是有点陌生,
目前我对本地日期(或我尝试过的任何其他日期格式)有一个大问题
LocalDate currentDate = LocalDate().now();
Run Code Online (Sandbox Code Playgroud)
此行产生以下错误:
Call requires API Level 26 (current min is 21)
Run Code Online (Sandbox Code Playgroud)
我完全理解这意味着什么,但我无法更改项目的 API 级别(因为我与我的老师签订了合同,我和一个合作伙伴将按照我们计划的方式完成我们的学校项目。 )
如何在 API 级别 21 中使用任何类型的日期?
摇篮:
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.example.fragment"
minSdkVersion 21
targetSdkVersion 29
versionCode 1
versionName "0.5"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
android {
compileOptions {
coreLibraryDesugaringEnabled true
}
}
}
dependencies {
implementation fileTree(dir: 'libs', …Run Code Online (Sandbox Code Playgroud) android ×5
java ×3
datetime ×2
api ×1
date ×1
java-8 ×1
java-time ×1
kotlin ×1
threetenabp ×1
threetenbp ×1