I am trying to retrieve the previous android project (maybe from eclipse) and there're tons of errors at first but I've got 4 errors eventually:
Caused by: com.android.builder.dexing.DexArchiveBuilderException: Failed to process C:\Users\WEBSOL3.gradle\caches...\jars\classes.jar
Caused by: com.android.builder.dexing.DexArchiveBuilderException: Error while dexing.
Caused by: com.android.builder.dexing.DexArchiveBuilderException: Error while dexing.
Caused by: com.android.tools.r8.utils.AbortException: Error: Type com.google.android.gms.common.internal.zzf is referenced as an interface from com.google.android.gms.internal.zzcms.
For your references, it is okay to syncing with the Gradle files but app running is not available(including making apk file in the test device). there's no build.gradle file on the project level and app level. There's only build.gradle file (Module: my app name) and other gradle files related to the lib.
I already have tried to fix it typing multiDexEnabled=true, version up all the dependencies, added mavenCentral and maven {url}, compileOptions{sourcecompatibilty, targetcompatibility}, etc like almost everything that I have found thru the google search.
Here's my build.gradle (Module: my app name) below.
buildscript {
repositories {
jcenter {
url "http://jcenter.bintray.com/"
}
mavenCentral()
maven { url "https://maven.google.com" }
google()
// google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.2'
classpath 'com.google.gms:google-services:4.2.0' // 4.2.0 available
}
}
allprojects {
// added by davelee
// tasks.withType(JavaCompile) { options.encoding = 'EUC-KR' }
tasks.withType(Javadoc) {
// options.addStringOption('Xdoclint:none', '-quiet')
options.addStringOption('encoding', 'EUC-KR')
options.addStringOption('encoding', 'UTF-8')
options.addStringOption('encoding', 'x-windows-949')
}
repositories {
maven { url "https://dl.bintray.com/buzzvil/buzzscreen/" }
maven { url "http://dl.appnext.com/" }
maven { url "https://maven.google.com" } // added by davelee
}
repositories {
jcenter {
url "http://jcenter.bintray.com/"
}
}
}
apply plugin: 'android'
dependencies {
implementation 'com.android.support:multidex:1.0.3'
implementation fileTree(include: '*.jar', dir: 'libs')
implementation project(path: ':PullToRefrechlibrary')
implementation 'it.sephiroth.android.library.horizontallistview:hlistview:1.2.2'
//noinspection UseOfBundledGooglePlayServices
implementation 'com.google.android.gms:play-services:12.0.0'
implementation 'com.google.code.gson:gson:2.8.4'
implementation files('libs/tnkad-sdk.jar')
implementation project(path: ':fineadkeyboardsdk')
implementation files('libs/gcm.jar')
implementation files('libs/CappSDK_201705250.jar')
implementation files('libs/org.apache.httpcomponents.httpclient_4.2.5.jar')
implementation files('libs/httpcore-4.4.4.jar')
implementation project(path: ':Stealthaddplatformbrowser_lib_sw_1.2.11')
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.google.guava:guava:25.0-android'
// davelee
// implementation ('com.google.android.ads.consent:consent-library:1.0.6') {
// exclude module: 'gson.FieldAttributes'
// }
configurations {
// all*.exclude group: 'com.google.gson.FieldAttributes'
// all*.exclude group: 'com.google.code.gson'
// all*.exclude group: 'com.squareup.okhttp3'
// all*.exclude group: 'com.squareup.okio'
// all*.exclude group: 'com.android.support',module:'support-v13'
}
}
android {
compileSdkVersion 28
buildToolsVersion '28.0.3'
defaultConfig {
applicationId "com.***.***"
minSdkVersion 21
targetSdkVersion 26
multiDexEnabled true
versionCode 66
versionName "1.45"
}
// added by davelee
// compileOptions.encoding = 'windows-1251'
compileOptions {
// encoding 'EUC-KR'
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
// instrumentTest.setRoot('tests')
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
// dexOptions{
// jumboMode true
// incremental true
// javaMaxHeapSize="4g"
// }
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
}
lintOptions {
disable 'MissingTranslation'
}
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
}
Hy! I am having following problem in my Android project
com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/net/compatibility/WebAddress.class
I Know this is because of conflict in dependencies. I looked into dependencies but not able to configure which dependencies causing this issue. I am pasting my gradle code bellow
Module 1 :
android {
//useLibrary 'org.apache.http.legacy'
compileSdkVersion Integer.parseInt(project.ANDROID_COMPILE_SDK_VERSION)
buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
defaultConfig {
versionCode Integer.parseInt(project.VERSION_CODE)
versionName project.VERSION_NAME
minSdkVersion Integer.parseInt(project.ANDROID_MIN_SDK)
targetSdkVersion Integer.parseInt(project.ANDROID_TARGET_SDK_VERSION)
}`sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src/main/java']
res.srcDirs = ['res']
}
test {
java.srcDirs = ['src/test/java']
}
}`compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7` }
packagingOptions {
exclude 'META-INF/ASL2.0'
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
exclude 'META-INF/services/javax.annotation.processing.Processor'
}`lintOptions {
abortOnError false
}
checkstyle {
ignoreFailures = true
}
buildToolsVersion '25.0.3'`}`dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile project(':webViewMarker')
compile 'com.android.support:appcompat-v7:25.0.1'
compile 'com.android.support:recyclerview-v7:25.0.1'
compile 'com.android.support:support-v4:25.0.1'
compile 'com.android.support:design:25.0.1'
compile 'com.daimajia.swipelayout:library:1.2.0#aar'
compile 'com.squareup:otto:1.3.8'`}`
Module 2
apply plugin: 'com.android.library'`ext {
bintrayRepo = 'maven'
bintrayName = 'folioreader'
publishedGroupId = 'com.folioreader'
libraryName = 'WebViewMarker'
artifact = 'webViewMarker'
libraryDescription = 'An epub reader for Android'
siteUrl = 'https://github.com/FolioReader/FolioReader-Android'
gitUrl = 'https://github.com/FolioReader/FolioReader-Android.git'
libraryVersion = '0.2.5'
developerId = 'mobisystech'
developerName = 'Folio Reader'
developerEmail = 'mahavir#codetoart.com'
licenseName = 'FreeBSD License'
licenseUrl = 'https://en.wikipedia.org/wiki/FreeBSD_Documentation_License#License'
allLicenses = ["FreeBSD"]`}`android {
compileSdkVersion 19
buildToolsVersion '25.0.3'
defaultConfig {
versionCode Integer.parseInt(project.VERSION_CODE)
versionName project.VERSION_NAME
minSdkVersion Integer.parseInt(project.ANDROID_MIN_SDK)
targetSdkVersion Integer.parseInt(project.ANDROID_TARGET_SDK_VERSION)
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}`
}
apply from: '../folioreader/bintray/installv1.gradle'
apply from: '../folioreader/bintray/bintrayv1.gradle'
Main Module
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}`}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
android {
compileSdkVersion 25
buildToolsVersion '25.0.3'
defaultConfig {
applicationId "com.ebook.stev_ebook"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/notice.txt'
exclude 'META-INF/ASL2.0'
}
}
repositories {
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':folioreader')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.android.support:design:22.2.1'
compile 'com.facebook.android:facebook-android-sdk:4.8.0'
compile 'com.google.code.gson:gson:2.2.4'
compile 'org.apache.httpcomponents:httpmime:4.5.2'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.stripe:stripe-android:+'
compile('com.twitter.sdk.android:twitter:1.3.2#aar') {
transitive = true;
}
compile 'com.android.support:multidex:1.0.0'
compile 'com.squareup.okhttp3:okhttp:3.6.0'
compile 'com.google.android.gms:play-services-plus:9.0.0'
compile 'com.google.android.gms:play-services-auth:9.0.0'
}
Please comment this
compile 'com.daimajia.swipelayout:library:1.2.0#aar'
Try Rebuilding again. Since it's a third party library , there is a chance that it might be causing the trouble
It means you are using different version of support and all android libraries for example you are using support library version 25.0.1 in one module and version 22.2.1 in another and of course you should add just one of these library to your dependencies when you add one library in one module you should not add it to build.gradle file of second.
Solution : remove duplicate libraries.
I have found many versions of this on StackOverflow, but none of the answers that I have found have helped and some have even made more errors. But after forking a project from GitHub and editing the the Gradle and SDK versions, I came across this error:
Error:(70, 0) Cannot convert the provided notation to a File or URI: [C:\Android Projects\Personal\VoidMessenger\build\intermediates\proguard-files\proguard-android.txt-2.2.0, C:\Android Projects\Personal\VoidMessenger\proguard.cfg].
The following types/formats are supported:
- A String or CharSequence path, for example 'src/main/java' or '/usr/include'.
- A String or CharSequence URI, for example 'file:/usr/include'.
- A File instance.
- A URI or URL instance.
This came after I imported the project from GitHub into Android Studio, and changing the SDK and build versions to 25 and the Gradle version to 2.2.0. Here is my build.gradle and my settings.gradle.
Build.Gradle:
apply plugin: 'com.android.application'
apply plugin: 'witness'
buildscript {
repositories {
maven {
url "https://repo1.maven.org/maven2"
}
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
classpath files('libs/gradle-witness.jar')
}
}
repositories {
maven {
url "https://repo1.maven.org/maven2/"
}
jcenter()
mavenLocal()
}
android {
compileSdkVersion 25
buildToolsVersion '25.0.0'
defaultConfig {
versionCode 1
versionName "0.1"
minSdkVersion 9
targetSdkVersion 25
try{
buildConfigField "String", "BUILD_GIT_COMMIT", "\"" + 'git rev-parse --short HEAD'.execute().text.trim() + "\""
}
catch(IOException e){
buildConfigField "String", "BUILD_GIT_COMMIT", '""'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
packagingOptions {
exclude 'LICENSE.txt'
exclude 'LICENSE'
exclude 'NOTICE'
exclude 'asm-license.txt'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
signingConfigs {
release
}
buildTypes {
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg'
testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg'
}
release {
minifyEnabled true
proguardFiles = buildTypes.debug.proguardFiles
testProguardFiles buildTypes.debug.testProguardFiles
signingConfig signingConfigs.release
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
androidTest {
java.srcDirs = ['test/androidTest/java']
}
test {
java.srcDirs = ['test/unitTest/java']
}
}
lintOptions {
abortOnError false
}
}
tasks.whenTaskAdded { task ->
if (task.name.equals("lint")) {
task.enabled = false
}
}
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
}
tasks.withType(JavaCompile){
options.warnings = false
}
dependencies {
compile 'se.emilsjolander:stickylistheaders:2.7.0'
compile 'com.jpardogo.materialtabstrip:library:1.0.9'
compile project (':libs:org.w3c.dom')
compile 'info.guardianproject.trustedintents:trustedintents:0.2'
compile 'org.apache.httpcomponents:httpclient-android:4.3.5'
compile 'com.github.chrisbanes.photoview:library:1.2.3'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.makeramen:roundedimageview:2.1.0'
compile 'com.pnikosis:materialish-progress:1.5'
compile 'de.greenrobot:eventbus:2.4.0'
compile 'pl.tajchert:waitingdots:0.1.0'
compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:recyclerview-v7:25.0.0'
compile 'com.android.support:design:25.0.0'
compile 'com.melnykov:floatingactionbutton:1.3.0'
compile 'com.google.zxing:android-integration:3.1.0'
compile project (':libs:com.android.support.support-v4-preferencefragment')
compile ('com.android.support:gridlayout-v7:22.2.0') {
exclude module: 'support-v4'
}
compile 'com.squareup.dagger:dagger:1.2.2'
compile ("com.doomonafireball.betterpickers:library:1.5.3") {
exclude group: 'com.android.support', module: 'support-v4'
}
compile 'com.madgag.spongycastle:prov:1.51.0.0'
provided 'com.squareup.dagger:dagger-compiler:1.2.2'
compile project (':libs:org.whispersystems.jobmanager')
compile project (':libs:org.whispersystems.libpastelog:library')
compile 'org.whispersystems:textsecure-android:1.8.3'
compile project (':libs:com.amulyakhare.textdrawable:library')
compile 'me.relex:circleindicator:1.0.0#aar'
testCompile 'junit:junit:4.12'
testCompile 'org.assertj:assertj-core:1.7.1'
testCompile 'org.mockito:mockito-core:1.9.5'
testCompile 'org.powermock:powermock-api-mockito:1.6.1'
testCompile 'org.powermock:powermock-module-junit4:1.6.1'
testCompile 'org.powermock:powermock-module-junit4-rule:1.6.1'
testCompile 'org.powermock:powermock-classloading-xstream:1.6.1'
androidTestCompile 'com.google.dexmaker:dexmaker:1.2'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2'
androidTestCompile ('org.assertj:assertj-core:1.7.1') {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
androidTestCompile ('com.squareup.assertj:assertj-android:1.0.0') {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
exclude group: 'com.android.support', module: 'support-annotations'
}
}
dependencyVerification {
verify = [
'pl.tajchert:waitingdots:2835d49e0787dbcb606c5a60021ced66578503b1e9fddcd7a5ef0cd5f095ba2c',
'com.android.support:appcompat-v7:4b5ccba8c4557ef04f99aa0a80f8aa7d50f05f926a709010a54afd5c878d3618',
'com.android.support:recyclerview-v7:b0f530a5b14334d56ce0de85527ffe93ac419bc928e2884287ce1dddfedfb505',
'com.android.support:design:58be3ca6a73789615f7ece0937d2f683b98b594bb90aa10565fa760fb10b07ee',
'com.android.support:support-v4:c62f0d025dafa86f423f48df9185b0d89496adbc5f6a9be5a7c394d84cf91423',
'com.android.support:support-annotations:104f353b53d5dd8d64b2f77eece4b37f6b961de9732eb6b706395e91033ec70a',
'com.android.support:gridlayout-v7:a9b770cffca2c7c5cd83cba4dd12503365de5e8d9c79c479165adf18ab3bc25b',
'com.doomonafireball.betterpickers:library:132ecd685c95a99e7377c4e27bfadbb2d7ed0bea995944060cd62d4369fdaf3d',
'com.madgag.spongycastle:prov:b8c3fec3a59aac1aa04ccf4dad7179351e54ef7672f53f508151b614c131398a',
'com.fasterxml.jackson.core:jackson-annotations:0ca408c24202a7626ec8b861e99d85eca5e38b73311dd6dd12e3e9deecc3fe94',
'com.fasterxml.jackson.core:jackson-core:cbf4604784b4de226262845447a1ad3bb38a6728cebe86562e2c5afada8be2c0',
'com.fasterxml.jackson.core:jackson-databind:835097bcdd11f5bc8a08378c70d4c8054dfa4b911691cc2752063c75534d198d',
'com.github.bumptech.glide:glide:76ef123957b5fbaebb05fcbe6606dd58c3bc3fcdadb257f99811d0ac9ea9b88b',
'com.github.chrisbanes.photoview:library:8b5344e206f125e7ba9d684008f36c4992d03853c57e5814125f88496126e3cc',
'com.google.protobuf:protobuf-java:e0c1c64575c005601725e7c6a02cebf9e1285e888f756b2a1d73ffa8d725cc74',
'com.google.zxing:android-integration:89e56aadf1164bd71e57949163c53abf90af368b51669c0d4a47a163335f95c4',
'com.googlecode.libphonenumber:libphonenumber:9625de9d2270e9a280ff4e6d9ef3106573fb4828773fd32c9b7614f4e17d2811',
'com.jpardogo.materialtabstrip:library:c6ef812fba4f74be7dc4a905faa4c2908cba261a94c13d4f96d5e67e4aad4aaa',
'com.makeramen:roundedimageview:1f5a1865796b308c6cdd114acc6e78408b110f0a62fc63553278fbeacd489cd1',
'com.pnikosis:materialish-progress:d71d80e00717a096784482aee21001a9d299fec3833e4ebd87739ed36cf77c54',
'de.greenrobot:eventbus:61d743a748156a372024d083de763b9e91ac2dcb3f6a1cbc74995c7ddab6e968',
'info.guardianproject.trustedintents:trustedintents:6221456d8821a8d974c2acf86306900237cf6afaaa94a4c9c44e161350f80f3e',
'com.melnykov:floatingactionbutton:15d58d4fac0f7a288d0e5301bbaf501a146f5b3f5921277811bf99bd3b397263',
'com.nineoldandroids:library:68025a14e3e7673d6ad2f95e4b46d78d7d068343aa99256b686fe59de1b3163a',
'com.squareup.dagger:dagger:789aca24537022e49f91fc6444078d9de8f1dd99e1bfb090f18491b186967883',
'com.squareup.okio:okio:5e1098bd3fdee4c3347f5ab815b40ba851e4ab1b348c5e49a5b0362f0ce6e978',
'javax.inject:javax.inject:91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff',
'org.apache.httpcomponents:httpclient-android:6f56466a9bd0d42934b90bfbfe9977a8b654c058bf44a12bdc2877c4e1f033f1',
'org.whispersystems:axolotl-android:40d3db5004a84749a73f68d2f0d01b2ae35a73c54df96d8c6c6723b96efb6fc0',
'org.whispersystems:axolotl-java:6daee739b89d8d7101de6d98f77132fee48495c6ea647d880e77def842f999ea',
'org.whispersystems:curve25519-android:3c29a4131a69b0d16baaa3d707678deb39602c3a3ffd75805ce7f9db252e5d0d',
'org.whispersystems:curve25519-java:9ccef8f5aba05d9942336f023c589d6278b4f9135bdc34a7bade1f4e7ad65fa3',
'org.whispersystems:textsecure-android:aec5fc59952d9f5482491091091687816f46be1144342a0244f48fd55d6ab393',
'org.whispersystems:textsecure-java:b407ca6d1430204dfabf38e27db22d5177409072a9668238bd1877de7676ad3f',
'se.emilsjolander:stickylistheaders:a08ca948aa6b220f09d82f16bbbac395f6b78897e9eeac6a9f0b0ba755928eeb',
'com.squareup.okhttp:okhttp:89b7f63e2e5b6c410266abc14f50fe52ea8d2d8a57260829e499b1cd9f0e61af',
]
Settings.Gradle:
include 'libs:com.amulyakhare.textdrawable:library',
'libs:com.android.support.support-v4-preferencefragment',
'libs:org.w3c.dom',
'libs:org.whispersystems.jobmanager',
'libs:org.whispersystems.libpastelog:library'
What could be going on? Also, before editing the gradle version, I got an error saying "Cannot find 'default'". But what could be causing the error stated in this post?
"Cannot find default" is related to some missing project module dependencies. This normally happens when you download from net and some modules codes are missing. these have to be added manually.
After i added the 'com.github.carlonzo.stikkyheader:core:0.0.2-SNAPSHOT' library in my gradle file Im getting the error on build:
com.android.dex.DexException: Multiple dex files define Landroid/support/annotation/AnimRes;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
at com.android.dx.command.dexer.Main.run(Main.java:230)
at com.android.dx.command.dexer.Main.main(Main.java:199)
at com.android.dx.command.Main.main(Main.java:103)
here is my gradle.build file:
buildscript {
repositories {
mavenCentral()
maven { url 'http://repo1.maven.org/maven2' }
maven { url 'http://download.crashlytics.com/maven' }
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
}
}
apply plugin: "eclipse"
apply plugin: 'com.android.application'
apply plugin: 'crashlytics'
repositories {
mavenCentral()
maven { url 'http://repo1.maven.org/maven2' }
maven { url 'http://download.crashlytics.com/maven' }
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}
android {
compileSdkVersion 21
buildToolsVersion "19.1.0"
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(":libraries:google-play-services-lib")
compile project(":libraries:pager-indicator-lib")
compile project(":libraries:apphance-library-1.9.11")
compile project(":libraries:dialog-manager-lib")
compile 'com.crashlytics.android:crashlytics:1.+'
}
defaultConfig {
minSdkVersion 14
targetSdkVersion 21
testInstrumentationRunner "android.test.InstrumentationTestRunner"
}
signingConfigs {
release {
storeFile file(RELEASE_KEYSTORE_FILE)
storePassword System.getenv("PASSWORD_KEYSTORE")
keyAlias System.getenv("ALIAS_KEYSTORE_JB")
keyPassword System.getenv("PASSWORD_KEYSTORE")
}
debug {
storeFile file(DEBUG_KEYSTORE_FILE_LOCAL)
}
beta {
storeFile file(DEBUG_KEYSTORE_FILE_LOCAL)
}
}
buildTypes {
debug {
debuggable true
signingConfig android.signingConfigs.debug
applicationIdSuffix ".debug"
}
release {
signingConfig signingConfigs.release
}
beta {
debuggable true
signingConfig android.signingConfigs.debug
applicationIdSuffix ".beta"
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
release {
res.srcDirs = ['res_release']
}
beta {
res.srcDirs = ['res_beta']
}
instrumentTest.setRoot('test')
instrumentTest {
java.srcDirs = ['test']
}
}
lintOptions {
abortOnError false
}
}
task wrapper(type: Wrapper) {
gradleVersion = '1.11'
}
dependencies {
// compile 'com.android.support:support-annotations:20.0.0'
compile 'com.mixpanel.android:mixpanel-android:4.5.2'
compile 'com.android.support:multidex:1.0.0'
compile ('com.facebook.android:facebook-android-sdk:3.22.0')
{
exclude module: 'support-v4'
}
compile ('com.github.carlonzo.stikkyheader:core:0.0.2-SNAPSHOT')
{
exclude module: 'support-v4'
}
}
Any ideas on how to fix it ? Thanks
This happens because every dependency has its own dependency to the support library (or support.annotation in your case).
My suggestion is to replace the exclude module: 'support-v4' with a exclude group: 'com.android.support' . I would suggest you to exclude the group com.android.support to every dependency you added and declare your own dependency to the support library
I'm trying to set up Junit tests to test my Java code in an android project. I can't seem to get it working with the Gradle build.
I have set up one test as an example for now. My project is legacy which I ported to use Gradle, so I've defined the source sets and the structure rather than move the files into the new directory format.
When I run the build or just UnitTest the output is Build Successful, but it hasn't actually run my test unit test. Android studio does not seem to recognise the file as java either and does not show errors/ code completion on my ExampleTest.java file.
Project
-> Module
-> assets
-> build
-> gen
-> libs
-> res
-> src
-> tests
My gradle build file:
buildscript {
repositories {
mavenCentral()
maven { url 'http://repo1.maven.org/maven2' }
maven { url 'http://download.crashlytics.com/maven' }
}
dependencies {
classpath 'com.android.tools.build:gradle:+'
classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
}
}
apply plugin: 'android'
apply plugin: 'crashlytics'
repositories {
mavenCentral()
}
android {
compileSdkVersion 20
buildToolsVersion '20.0.0'
defaultConfig {
minSdkVersion 10
targetSdkVersion 20
versionCode 47
versionName '2.1'
}
buildTypes {
release {
runProguard true
zipAlign true
proguardFile getDefaultProguardFile('proguard-android-optimize.txt')
proguardFile 'proguard-project.txt'
}
debug {
runProguard false
}
}
productFlavors {
defaultFlavor {
proguardFile 'proguard-project.txt'
}
}
signingConfigs {
debug {
storeFile file('../debug.keystore')
}
release {
storeFile file("XX")
storePassword "XX"
keyAlias "XX"
keyPassword "XX"
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
unitTest {
java.srcDir file('tests')
resources.srcDir file('test/resources')
}
}
}
sourceSets {
unitTest {
java.srcDir file('test')
resources.srcDir file('test/resources')
}
}
dependencies {
compile 'com.viewpagerindicator:library:2.4.1#aar'
compile 'com.crashlytics.android:crashlytics:1.+'
unitTestCompile 'junit:junit:4.1+'
unitTestCompile files("$buildDir/intermediates/classes/debug")
}
configurations {
unitTestCompile.extendsFrom runtime
unitTestRuntime.extendsFrom unitTestCompile
}
task unitTest(type:Test, dependsOn: assemble) {
description = "run unit tests"
testClassesDir = project.sourceSets.unitTest.output.classesDir
classpath = project.sourceSets.unitTest.runtimeClasspath
}
// bind to check
build.dependsOn unitTest
Do the following to your gradle script. This will allow you to run your tests within the JVM, which means not having to run the emulator or run the tests on a device.
At the top:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.robolectric:robolectric-gradle-plugin:0.12.+'
}
}
New plugin:
apply plugin: 'robolectric'
And near the bottom:
robolectric {
//configure the set of classes for JUnit tests
include '**/*Test.class'
//configure whether failing tests should fail the build
ignoreFailures false
}
And add the following dependencies:
androidTestCompile ('junit:junit:4.11')
androidTestCompile ('org.robolectric:robolectric:2.3') {
exclude module: 'classworlds'
exclude module: 'maven-artifact'
exclude module: 'maven-artifact-manager'
exclude module: 'maven-error-diagnostics'
exclude module: 'maven-model'
exclude module: 'maven-plugin-registry'
exclude module: 'maven-profile'
exclude module: 'maven-project'
exclude module: 'maven-settings'
exclude module: 'nekohtml'
exclude module: 'plexus-container-default'
exclude module: 'plexus-interpolation'
exclude module: 'plexus-utils'
exclude module: 'wagon-file'
exclude module: 'wagon-http-lightweight'
exclude module: 'wagon-http-shared'
exclude module: 'wagon-provider-api'
exclude group: 'com.android.support', module: 'support-v4'
}
Then start writing your tests in your tests folder. As you can see I set up a filter so only classes that start with Test.class are included in the test suite. Be sure to put the following annotations on any of these test classes: (be sure to change the url for the manifest file as it would be different for you from what is written)
#RunWith(RobolectricTestRunner.class)
#Config(manifest = "./src/main/AndroidManifest.xml", emulateSdk = 18)
class FirstTest {
// tests go here
}
Finally, run the tests with ./gradlew test