添加 Play 服务时 RxAndroid 中止或不构建
RxAndroid aborts or does not build when Play Services is added
我在获取 RxAndroid 和 Google Play Services 运行 时遇到一些问题,甚至在添加 [=17= 之后在 Android Studio 中构建项目] 播放服务。我使用了以下 2 个有用的网站作为参考:How to setup retrolambda and Functional Reactive Programming with RxJava in Android。现在也许我错过了一些东西,但我遇到了 java.exe (java 8) 的问题,要么在构建过程中因退出错误而中止,要么在 运行 时出现 java 8 的问题实际应用。从错误中我推断出我需要 retrolambda 并且在构建我的项目时仍然存在问题。
经过反复试验、研究等。以下是我发现对我有用的方法。请注意,行尾的一些注释掉的值是我之前尝试过的值。
项目build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
// jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3' //1.3.0
classpath 'me.tatarka:gradle-retrolambda:3.2.0' //2.5.0
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
// jcenter()
mavenCentral()
}
}
模块build.gradle
apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
android {
compileSdkVersion 22 //21
buildToolsVersion "21.1.2" //21.1.2
defaultConfig {
applicationId "com.your.app"
minSdkVersion 18
targetSdkVersion 22 //21
multiDexEnabled = true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
javaMaxHeapSize "2g"
preDexLibraries = true //false
incremental false
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1' //21.0.3 22.2.1
compile 'com.google.android.gms:play-services:7.8.0' //7.8.0
compile 'io.reactivex:rxandroid:0.24.0'
}
retrolambda {
jvmArgs '-noverify'
jdk System.getenv("JAVA8_HOME")
oldJdk System.getenv("JAVA7_HOME")
javaVersion JavaVersion.VERSION_1_7
defaultMethods false
incremental true
}
proguard-rules.pro
-dontwarn java.lang.invoke.*
此外,我添加了上面引用的路径环境值 JAVA7_HOME、JAVA8_HOME,它们指向每个 java 安装的相应目录。
我在获取 RxAndroid 和 Google Play Services 运行 时遇到一些问题,甚至在添加 [=17= 之后在 Android Studio 中构建项目] 播放服务。我使用了以下 2 个有用的网站作为参考:How to setup retrolambda and Functional Reactive Programming with RxJava in Android。现在也许我错过了一些东西,但我遇到了 java.exe (java 8) 的问题,要么在构建过程中因退出错误而中止,要么在 运行 时出现 java 8 的问题实际应用。从错误中我推断出我需要 retrolambda 并且在构建我的项目时仍然存在问题。
经过反复试验、研究等。以下是我发现对我有用的方法。请注意,行尾的一些注释掉的值是我之前尝试过的值。
项目build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
// jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3' //1.3.0
classpath 'me.tatarka:gradle-retrolambda:3.2.0' //2.5.0
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
// jcenter()
mavenCentral()
}
}
模块build.gradle
apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
android {
compileSdkVersion 22 //21
buildToolsVersion "21.1.2" //21.1.2
defaultConfig {
applicationId "com.your.app"
minSdkVersion 18
targetSdkVersion 22 //21
multiDexEnabled = true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
javaMaxHeapSize "2g"
preDexLibraries = true //false
incremental false
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1' //21.0.3 22.2.1
compile 'com.google.android.gms:play-services:7.8.0' //7.8.0
compile 'io.reactivex:rxandroid:0.24.0'
}
retrolambda {
jvmArgs '-noverify'
jdk System.getenv("JAVA8_HOME")
oldJdk System.getenv("JAVA7_HOME")
javaVersion JavaVersion.VERSION_1_7
defaultMethods false
incremental true
}
proguard-rules.pro
-dontwarn java.lang.invoke.*
此外,我添加了上面引用的路径环境值 JAVA7_HOME、JAVA8_HOME,它们指向每个 java 安装的相应目录。