Android Studio 2.0 使用 gradle-experimental 插件破坏了 ndk 构建
Android Studio 2.0 breaks ndk build with gradle-experimental plugin
将 Android Studio 更新到 2.0 版(稳定版)后,我项目的 Gradle 同步中断。
错误弹出窗口:
Android Gradle Plugin Update Required
The project is using an incompatible version of the Android Gradle plugin.
To configure the project, the IDE will update the Android Gradle Plugin to version 2.0.0.
You can learn more about this version of the plugin from this [release notes][1].
-> Update -> Cancel and update manually
Gradle 同步问题(在消息视图中):
Error:The project is using an incompatible version of the Android Gradle plugin.
Please update your project to use version 2.0.0.
-> Search in build.gradle files
我正在为 ndk 构建使用 gradle-experimental 插件 (classpath 'com.android.tools.build:gradle-experimental:0.6.0-alpha5'
),因为它已被推荐,例如here,因此我的 build.gradle 看起来像这样(使用 com.android.model.application
插件),我不能简单地 'update' 到 classpath 'com.android.tools.build:gradle:2.0.0'
:
apply plugin: 'com.android.model.application'
def superpowered_path = file('.').absolutePath + "/src/main/jni/Superpowered"
model {
repositories {
libs(PrebuiltLibraries) {
superpowered {
headers.srcDir "${superpowered_path}"
binaries.withType(StaticLibraryBinary) {
staticLibraryFile = file("${superpowered_path}/lib/${targetPlatform.getName()}/libSuperpoweredAndroid.a")
}
}
}
}
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "APPID"
minSdkVersion.apiLevel 15
targetSdkVersion.apiLevel 23
versionCode 1
versionName "1.0"
archivesBaseName = "APPNAME-$versionCode-$versionName"
renderscriptTargetApi 20
renderscriptSupportModeEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles.add(file('proguard-rules.pro'))
signingConfig = $("android.signingConfigs.releaseSigning")
}
debug {
applicationIdSuffix ".debug"
versionNameSuffix "-DEBUG"
signingConfig = $("android.signingConfigs.debugSigning")
}
}
sources {
main {
jni {
dependencies {
library "superpowered" linkage "static"
}
}
}
}
/*
* native build settings
*/
ndk {
moduleName = "NDKMODULE-jni"
cppFlags.add("-std=c++11")
ldLibs.addAll(["android", "log", "OpenSLES"])
abiFilters.addAll(["armeabi-v7a", "x86", "arm64-v8a"])
}
}
android.signingConfigs {
create("releaseSigning") {
keyAlias 'release'
keyPassword 'PASSWORD'
storeFile file('KEYSTORE.jks')
storePassword 'PASSWORD'
storeType "jks"
}
create("debugSigning") {
keyAlias 'debug'
keyPassword 'PASSWORD'
storeFile file('KEYSTORE.jks')
storePassword 'PASSWORD'
storeType "jks"
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar', '*.a'])
testCompile 'junit:junit:4.12'
// Android support libs
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:design:23.2.1'
compile 'com.android.support:support-v4:23.2.1'
compile 'com.android.support:recyclerview-v7:23.2.1'
// Android Async Http
// Apache 2.0 http://loopj.com/android-async-http/
compile 'com.loopj.android:android-async-http:1.4.9'
// OkHttp http://square.github.io/okhttp/
// Apache v2
compile 'com.squareup.okhttp3:okhttp:3.2.0'
// Picasso http://square.github.io/picasso/
// Apache v2
compile 'com.squareup.picasso:picasso:2.5.2'
// Retrofit http://square.github.io/retrofit/
// Apache v2
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
}
我能找到的关于 Android Studio 2.0 的所有问题都是关于 canary/beta 版本的,似乎有与这个问题不同的问题。
在更新之前,Gradle 同步按预期工作。 (我一直在使用最后一个稳定版本,我认为是 1.5.1?)。
我希望获得有关如何将 ndk 与 Android Studio 2.0 一起使用的一些想法。
使用 gradle-experimental:0.7.0-alpha1 为我修复了 Gradle 同步:
classpath 'com.android.tools.build:gradle-experimental:0.7.0-alpha1'
使用以下类路径解决了我的问题。
classpath 'com.android.tools.build:gradle-experimental:0.7.0'
将 Android Studio 更新到 2.0 版(稳定版)后,我项目的 Gradle 同步中断。
错误弹出窗口:
Android Gradle Plugin Update Required
The project is using an incompatible version of the Android Gradle plugin.
To configure the project, the IDE will update the Android Gradle Plugin to version 2.0.0.
You can learn more about this version of the plugin from this [release notes][1].
-> Update -> Cancel and update manually
Gradle 同步问题(在消息视图中):
Error:The project is using an incompatible version of the Android Gradle plugin.
Please update your project to use version 2.0.0.
-> Search in build.gradle files
我正在为 ndk 构建使用 gradle-experimental 插件 (classpath 'com.android.tools.build:gradle-experimental:0.6.0-alpha5'
),因为它已被推荐,例如here,因此我的 build.gradle 看起来像这样(使用 com.android.model.application
插件),我不能简单地 'update' 到 classpath 'com.android.tools.build:gradle:2.0.0'
:
apply plugin: 'com.android.model.application'
def superpowered_path = file('.').absolutePath + "/src/main/jni/Superpowered"
model {
repositories {
libs(PrebuiltLibraries) {
superpowered {
headers.srcDir "${superpowered_path}"
binaries.withType(StaticLibraryBinary) {
staticLibraryFile = file("${superpowered_path}/lib/${targetPlatform.getName()}/libSuperpoweredAndroid.a")
}
}
}
}
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "APPID"
minSdkVersion.apiLevel 15
targetSdkVersion.apiLevel 23
versionCode 1
versionName "1.0"
archivesBaseName = "APPNAME-$versionCode-$versionName"
renderscriptTargetApi 20
renderscriptSupportModeEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles.add(file('proguard-rules.pro'))
signingConfig = $("android.signingConfigs.releaseSigning")
}
debug {
applicationIdSuffix ".debug"
versionNameSuffix "-DEBUG"
signingConfig = $("android.signingConfigs.debugSigning")
}
}
sources {
main {
jni {
dependencies {
library "superpowered" linkage "static"
}
}
}
}
/*
* native build settings
*/
ndk {
moduleName = "NDKMODULE-jni"
cppFlags.add("-std=c++11")
ldLibs.addAll(["android", "log", "OpenSLES"])
abiFilters.addAll(["armeabi-v7a", "x86", "arm64-v8a"])
}
}
android.signingConfigs {
create("releaseSigning") {
keyAlias 'release'
keyPassword 'PASSWORD'
storeFile file('KEYSTORE.jks')
storePassword 'PASSWORD'
storeType "jks"
}
create("debugSigning") {
keyAlias 'debug'
keyPassword 'PASSWORD'
storeFile file('KEYSTORE.jks')
storePassword 'PASSWORD'
storeType "jks"
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar', '*.a'])
testCompile 'junit:junit:4.12'
// Android support libs
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:design:23.2.1'
compile 'com.android.support:support-v4:23.2.1'
compile 'com.android.support:recyclerview-v7:23.2.1'
// Android Async Http
// Apache 2.0 http://loopj.com/android-async-http/
compile 'com.loopj.android:android-async-http:1.4.9'
// OkHttp http://square.github.io/okhttp/
// Apache v2
compile 'com.squareup.okhttp3:okhttp:3.2.0'
// Picasso http://square.github.io/picasso/
// Apache v2
compile 'com.squareup.picasso:picasso:2.5.2'
// Retrofit http://square.github.io/retrofit/
// Apache v2
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
}
我能找到的关于 Android Studio 2.0 的所有问题都是关于 canary/beta 版本的,似乎有与这个问题不同的问题。 在更新之前,Gradle 同步按预期工作。 (我一直在使用最后一个稳定版本,我认为是 1.5.1?)。
我希望获得有关如何将 ndk 与 Android Studio 2.0 一起使用的一些想法。
使用 gradle-experimental:0.7.0-alpha1 为我修复了 Gradle 同步:
classpath 'com.android.tools.build:gradle-experimental:0.7.0-alpha1'
使用以下类路径解决了我的问题。
classpath 'com.android.tools.build:gradle-experimental:0.7.0'