- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我问这个问题是因为我是 Java 和 Android 的新手,我搜索了几个小时试图解决这个问题。答案来自相关答案的组合,所以我想我会记录我所学到的东西,供其他可能遇到困难的人使用。见答案。
我使用的是 Android Studio 2.1.2,我的 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)
最佳答案
注意:这个答案虽然在技术上是正确的,但现在已经过时了
Java 8+ API 脱糖支持现在可通过 Android Gradle Plugin 4.0.0+ 获得
(另见 Basil Bourque's answer below)
开发上ThreeTenABP Library正在收尾。请考虑在 future 几个月内改用 Android Gradle 插件 4.0、java.time.* 及其核心库脱糖功能。
要在任何版本的 Android 平台上启用对这些语言 API 的支持,请更新 Android plugin to 4.0.0 (or higher)并在模块的 build.gradle 文件中包含以下内容:
android {
defaultConfig {
// Required when setting minSdkVersion to 20 or lower
multiDexEnabled true
}
compileOptions {
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
// Sets Java compatibility to Java 8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.5'
}
java.time
包,因为这是在 Java 中处理时间和日期的新标准方法。它是
JSR 310 的实现,这是基于
Joda-Time 的时间处理新标准提案。图书馆。
java.time
在
Java 8 中引入.安卓高达
Marshmallow在 Java 7 上运行(“Android N”是第一个引入 Java 8 语言功能的版本)。因此,除非您只针对
Android N Nougat及以上,您不能依赖 Java 8 语言功能(我实际上不确定这是 100% 正确的,但我是这样理解的)。所以
java.time
出来了。
java.time
Java 7 的功能。这适用于大多数用例,但是,如
ThreeTenABP readme 所示,它在 Android 上存在性能问题。
composer
与 Packagist 和 Ruby 的
gem
与 rubygems.org。换句话说,Maven Central Repository 之于 Maven(和 Gradle)就像 Packagist 之于 Composer ——版本化包的权威和安全来源。
compile 'this-or-that.jar'
”或类似的话,请知道
compile
是该 build.gradle 文件中的一个指示编译时依赖项的指令。
Here's关于依赖管理的官方 Gradle 页面。
threetenbp
的包,不是
threetenabp
.如果你去
github repo for ThreeTenABP ,你会看到臭名昭著的
compile 'this-or-that'
自述文件的下载部分下的行。
com.jakewharton.threetenabp
的 Maven Repo 行。 repo ,而不是
org.threeten
repo 。这就是为什么我认为 ThreeTenABP 包不在 Maven 仓库中的原因。
[project folder]/app/build.gradle
在 Android 项目中获得现代时间处理功能。文件有
implementation 'com.jakewharton.threetenabp:threetenabp:1.2.1'
行在其
dependencies
部分:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "me.ahuman.myapp"
minSdkVersion 11
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
testImplementation 'junit:junit:4.12'
implementation 'com.android.support:appcompat-v7:23.4.0'
implementation 'com.android.support:design:23.4.0'
implementation 'com.jakewharton.threetenabp:threetenabp:1.2.1'
}
还将其添加到 Application 类中:
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
AndroidThreeTen.init(this);
//...
}
}
关于android - 如何在 Android 项目中使用 ThreeTenABP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38922754/
我正在尝试使用 Jake Wharton 的 ThreeTenABP 库 - https://github.com/JakeWharton/ThreeTenABP - 用于我的 Android 项目中
我正在尝试将 ISO 8601 时间转换为人类可读且符合 Android 设备本地时区的时间。 String date = "2016-09-24T06:24:01Z"; LocalDate test
所以我尝试使用 ThreeTenABP 加载一年中的所有周图书馆,但我不知道从哪里开始,因为没有文档。至少我找不到。请帮帮我。 最佳答案 ThreeTenABP只是对 ThreeTen-Backpor
我无法让 ThreeTenABP 工作。这是我所做的: 在app build.gradle中导入依赖 implementation 'com.jakewharton.threetenabp:three
我问这个问题是因为我是 Java 和 Android 的新手,我搜索了几个小时试图解决这个问题。答案来自相关答案的组合,所以我想我会记录我所学到的东西,供其他可能遇到困难的人使用。见答案。 我使用的是
我正在使用我刚刚发现的这个库,据说它比 Android 的 Joda 时间更轻,我说管它呢,让我们使用它吧。但是现在我正在努力在网上找到任何关于如何使用它的好例子,除了这两种方法之外: // Zone
注意:这在 JDK 世界中已经得到了很好的回答 here ,但接受的答案不适用于 Android port of JSR-310它没有 Date 的扩展 API。 那么,将 java.util.Dat
使用 ThreeTen Android Backport库,将 ZonedDateTime 或 OffsetDateTime 转换为老式 java.util.Date 实例的最简单方法是什么? 如果我
最近,为了移植https://github.com/JakeWharton/ThreeTenABP,我们启用了Java8去糖。到 java.time build.gradle defaultConfi
我需要将dateTime String转换为millis,并且为此使用了ThreeTenABP,但是OffSetDateTime.parse无法解析ex的dateTime String。 "2020-
我是一名优秀的程序员,十分优秀!