问题描述
这是我的构建 gradle(应用程序)文件:
this is my build gradle (app) file:
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'checkstyle'
def versions = ['appcompat_v7' : '25.1.0',
'butterknife' : '8.4.0',
'leak_canary' : '1.5',
'card_view' : '25.1.0',
'design' : '25.1.0',
'photoview' : '1.2.4',
'play_services': '10.0.1']
task checkstyle(type: Checkstyle) {
configFile file("${project.rootDir}/checkstyle/checkstyle.xml")
configProperties.checkstyleSuppressionsPath = file("${project.rootDir}/config/quality/checkstyle/suppressions.xml").absolutePath
// Where is my suppressions file for checkstyle is...
source 'src'
include '**/*.java'
exclude '**/gen/**'
classpath = files()
}
android {
compileSdkVersion 25
buildToolsVersion '27.0.3'
flavorDimensions "versionCode"
useLibrary 'org.apache.http.legacy'
dexOptions {
// Skip pre-dexing when running on Travis CI or when disabled via -Dpre-dex=false.
preDexLibraries = preDexEnabled && !travisBuild
}
defaultConfig {
ndk {
abiFilters 'x86', 'armeabi-v7a'
}
minSdkVersion 15
targetSdkVersion 23
versionCode 1
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner "android.test.InstrumentationTestRunner"
}
signingConfigs {
release
}
buildTypes {
debug {
debuggable true
}
release {
//runProguard true
proguardFile file('android.pro')
proguardFile getDefaultProguardFile('proguard-android.txt')
signingConfig signingConfigs.release
}
}
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a'
universalApk true
}
}
// map for the version code
productFlavors {
playstore {
}
develop {
}
}
lintOptions {
//I'm too lazy to translate everything
abortOnError false
}
externalNativeBuild {
ndkBuild {
path 'src/main/jni/Android.mk'
}
}
}
def Properties props = new Properties()
def propFile = new File('signing.properties')
if (propFile.canRead()) {
props.load(new FileInputStream(propFile))
if (props != null && props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') &&
props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) {
android.signingConfigs.release.storeFile = file(props['STORE_FILE'])
android.signingConfigs.release.storePassword = props['STORE_PASSWORD']
android.signingConfigs.release.keyAlias = props['KEY_ALIAS']
android.signingConfigs.release.keyPassword = props['KEY_PASSWORD']
} else {
println 'signing.properties found but some entries are missing'
android.buildTypes.release.signingConfig = null
}
} else {
println 'signing.properties not found'
android.buildTypes.release.signingConfig = null
}
buildscript {
repositories {
jcenter()
mavenCentral()
}
}
dependencies {
compile project(":tess-two:tess-two")
compile project(":volley")
compile project(":real-time-ocr")
compile 'com.github.barteksc:pdfium-android:1.5.0'
compile fileTree(dir: 'src/main/libs', include: '*.jar')
debugCompile "com.squareup.leakcanary:leakcanary-android:${versions.leak_canary}"
releaseCompile "com.squareup.leakcanary:leakcanary-android-no-op:${versions.leak_canary}"
compile 'com.viewpagerindicator:library:2.4.1@aar'
compile "com.commit451:PhotoView:${versions.photoview}"
compile 'com.google.code.findbugs:jsr305:2.0.2'
compile "com.google.guava:guava:18.0"
compile 'de.greenrobot:eventbus:2.4.0'
compile 'com.nineoldandroids:library:2.4.0'
compile "com.android.support:design:${versions.design}"
compile "com.android.support:appcompat-v7:${versions.appcompat_v7}"
compile 'org.apache.commons:commons-compress:1.5'
compile "com.android.support:cardview-v7:${versions.card_view}"
compile 'com.google.code.gson:gson:2.8.2'
compile "com.jakewharton:butterknife:${versions.butterknife}"
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
compile 'com.google.android.gms:play-services-vision:9.4.0+'
compile group: 'com.facebook.android', name: 'facebook-android-sdk', version: '4.25.0'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.0'
androidTestCompile 'com.google.dexmaker:dexmaker:1.0'
androidTestCompile 'org.mockito:mockito-core:1.10.17'
androidTestCompile 'junit:junit:4.12'
testCompile 'junit:junit:4.12'
testCompile "org.mockito:mockito-all:1.10.19"
testCompile("org.robolectric:robolectric:3.0-rc2") {
exclude group: 'commons-logging', module: 'commons-logging'
}
compile('com.crashlytics.sdk.android:crashlytics:2+') {
transitive = true;
}
compile('com.crashlytics.sdk.android:crashlytics-ndk:1+@aar') {
transitive = true;
}
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.shawnlin:number-picker:2.4.4'
compile 'com.squareup.picasso:picasso:2.5.2'
}
crashlytics {
enableNdk true
androidNdkOut '/Users/renard/devel/textfairy/tess-two/tess-two/obj'
androidNdkLibsOut '/Users/renard/devel/textfairy/tess-two/tess-two/libs'
}
apply plugin: 'com.google.gms.google-services'
android studio 无法同步项目并给我这个错误:
android studio can't sync project and get me this error:
冲突的配置:当设置拆分 abi 过滤器时,ndk abiFilters 中的armeabi-v7a,x86"不能存在:x86,armeabi-v7a
配置编译"已过时并已替换为实现".将于2018年底移除
Configuration 'compile' is obsolete and has been replaced with 'implementation'. It will be removed at the end of 2018
配置debugCompile"已过时,已被debugImplementation"取代.将于2018年底移除
Configuration 'debugCompile' is obsolete and has been replaced with 'debugImplementation'. It will be removed at the end of 2018
配置androidTestApi"已过时并已替换为androidTestImplementation".将于2018年底移除
Configuration 'androidTestApi' is obsolete and has been replaced with 'androidTestImplementation'. It will be removed at the end of 2018
配置releaseCompile"已过时,已被releaseImplementation"替换.将于2018年底移除
Configuration 'releaseCompile' is obsolete and has been replaced with 'releaseImplementation'. It will be removed at the end of 2018
配置testCompile"已过时,已被testImplementation"取代.将于2018年底移除
Configuration 'testCompile' is obsolete and has been replaced with 'testImplementation'. It will be removed at the end of 2018
配置testApi"已过时,已被testImplementation"取代.将于2018年底移除
Configuration 'testApi' is obsolete and has been replaced with 'testImplementation'. It will be removed at the end of 2018
配置androidTestCompile"已过时并已替换为androidTestImplementation".将于2018年底移除
Configuration 'androidTestCompile' is obsolete and has been replaced with 'androidTestImplementation'. It will be removed at the end of 2018
选项android.enableAapt2"已弃用,不应再使用.使用 'android.enableAapt2=true' 删除此警告.将于 2018 年底移除.
The option 'android.enableAapt2' is deprecated and should not be used anymore. Use 'android.enableAapt2=true' to remove this warning. It will be removed at the end of 2018.
配置编译"已过时并已替换为实现".将于2018年底移除
Configuration 'compile' is obsolete and has been replaced with 'implementation'. It will be removed at the end of 2018
选项android.enableAapt2"已弃用,不应再使用.使用 'android.enableAapt2=true' 删除此警告.将于 2018 年底移除.
The option 'android.enableAapt2' is deprecated and should not be used anymore. Use 'android.enableAapt2=true' to remove this warning. It will be removed at the end of 2018.
配置testCompile"已过时,已被testImplementation"取代.将于2018年底移除
Configuration 'testCompile' is obsolete and has been replaced with 'testImplementation'. It will be removed at the end of 2018
配置testApi"已过时,已被testImplementation"取代.将于2018年底移除
Configuration 'testApi' is obsolete and has been replaced with 'testImplementation'. It will be removed at the end of 2018
选项android.enableAapt2"已弃用,不应再使用.使用 'android.enableAapt2=true' 删除此警告.将于 2018 年底移除.
The option 'android.enableAapt2' is deprecated and should not be used anymore. Use 'android.enableAapt2=true' to remove this warning. It will be removed at the end of 2018.
配置编译"已过时并已替换为实现".将于2018年底移除
Configuration 'compile' is obsolete and has been replaced with 'implementation'. It will be removed at the end of 2018
如果我删除这一行
defaultConfig {
ndk {
abiFilters 'x86', 'armeabi-v7a'
}
项目同步成功但是当构建给我这个错误
the project sync sucessfullybut when build give me this error
执行 aapt 失败
我已经尝试清理和重建项目,但仍然无法正常工作!我还发布了 build.gradle(项目)文件
I already try to clean and rebuild project but still not working!I also post the build.gradle (Project) file
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
mavenCentral()
jcenter()
google()
}
dependencies {
classpath 'io.fabric.tools:gradle:1+'
classpath 'com.google.gms:google-services:3.0.0'
classpath 'com.android.tools.build:gradle:3.1.0'
}
}
allprojects {
repositories {
maven { url 'https://maven.fabric.io/public' }
maven { url "http://dl.bintray.com/populov/maven" }
jcenter()
maven {
url "http://oss.sonatype.org/content/repositories/snapshots"
}
maven { url 'https://oss.jfrog.org/artifactory/oss-snapshot-local/' }
maven {
url "https://maven.google.com" // Google's Maven repository
}
}
}
ext {
travisBuild = System.getenv("TRAVIS") == "true"
// allows for -Dpre-dex=false to be set
preDexEnabled = "true".equals(System.getProperty("pre-dex", "true"))
}
我的 gradle-wrapper.properties 文件
my gradle-wrapper.properties file
#Tue Mar 27 14:42:14 CEST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
和我的 gradle.properties 文件
and my gradle.properties file
ndkDir=/Users/giuliopettenuzzo/Library/Android/sdk/ndk-bundle
org.gradle.jvmargs=-XX\:MaxPermSize\=512m
android.enableAapt2=false
推荐答案
ndk
.abiFilters
配置意味着只有选定的原生库处理器架构会被包含在最终APK.
ndk
.abiFilters
configuration means that only selected processor architectures of native libraries will be included in the final APK.
另一方面,splits
.abi
.enable true
告诉编译器为选定的架构生成分离的 APK.
On the other hand, splits
.abi
.enable true
tells the compiler to generate separated APKs for selected architectures.
看来这两个配置不能同时设置.所以你有两个选择:
It seams that this two configuration can't be set together. So you have two options:
禁用拆分 APK(您已经知道了).您将拥有一个 APK.
Disable splitting APK (you've figured it out already). Than you will have one APK.
删除 ndk
.abiFilters
设置.比您将拥有多个(可能要小得多)APK.此外,如果 universalApk true
,将生成具有所有架构的通用 APK(可能比选项 1 中的大得多).
Remove ndk
.abiFilters
setting. Than you will have multiple (probably much smaller) APKs. Moreover, with universalApk true
, an universal APK with all architectures will be generated (probably much larger than in option 1).
然后,将 compile
替换为新的关键字 implementation
.我认为,从错误消息中可以清楚地看出这一点.
Than, replace compile
with new keyword implementation
. I think, this is clear from error message.
这篇关于无法更新 android studio 3.1:配置冲突:同步项目期间的“armeabi-v7a,x86"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!