我已将我的项目更新为SDK版本24和Java 8,并遇到了一个奇怪的编码问题。
由于一些奇怪的原因,Android会将我的硬编码UTF-8字符串视为Windows-1251,因此文本会出现乱码。
像这样:
这是我改变的:
compileSdkVersion 24
buildToolsVersion "24.0.2"
compileOptions {
encoding = 'utf-8'
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
我尝试过的事情:
如果我恢复到Java 7,一切都还可以。
有什么想法吗?
答案 0 :(得分:6)
这是Jack编译器中的一个错误,请看一下这个post。
Jack一直在使用默认的VM编码,在windows上是windows-1252。因此,您的文本使用UTF-8
进行编码,并由Jack编译器使用windows-1252
进行解码,这就是为什么它们会出现乱码。
到目前为止,Gradle Plugin
并不支持API来设置解码格式,所以我们需要等待......
答案 1 :(得分:2)
我在Windows中遇到了同样的问题(但不是Mac OSX)。这一行解决了我的问题(把它放在项目的gradle.properties
中):
org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
请注意,此部分更改编码:
-Dfile.encoding=UTF-8