The following classes could not be found: - android.support.constraint.ConstraintLayou - java

I just had to move my android application to androidx because of several problems. Now I have the problem, that the App is "greyed out" in the Desginer (See Screenshot):
Screenshot
In the designer there is a error message:
The following classes could not be found:
- android.support.constraint.ConstraintLayout (    Add constraint-layout library dependency to the project, Fix Build Path, Edit XML, Create Class)
I would assume there is a missing class for the constraint Layout, but that is not the case. That is my build.gradle file:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.android.gms:play-services-ads:19.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.android.support:design:28.0.0'
}
Do you have any idea?
I already tried everything on the internet, make app, rebuild, sync with gradle files, trying different versions of the constraint layout.

Looks like you are trying to use AndroidX libraries and Support libraries in same project. Migrate to AndroidX from menu, it will replace package names and dependencies.
Your project is adding widgets from Support libraries instead of AndroidX which is causing this issue.
If you still get errors, replace old package names from the ones in the list: https://developer.android.com/jetpack/androidx/migrate

Looks like you are trying to use android.support.constraint.ConstraintLayout while adding a dependency to androidx.constraintlayout:constraintlayout. Just use the latter in your XML.

try adding the material design dependency
implementation 'com.google.android.material:material:1.1.0'
your appcompat should also be:
implementation 'androidx.appcompat:appcompat:1.1.0'
you are using androidx constaint layout dependency but your other dependencies aren't compatible

Related

not able to build android project with butterknife dependency

I am not able to build android project due to error of butterknife dependency.
ERROR
Execution failed for task ':app:javaPreCompileDebug'.
Could not resolve all files for configuration ':app:debugAnnotationProcessorClasspath'.
Failed to transform butterknife-compiler-8.6.0.jar (com.jakewharton:butterknife-compiler:8.6.0) to match attributes
{artifactType=processed-jar, org.gradle.category=library,
org.gradle.libraryelements=jar, org.gradle.status=release,
org.gradle.usage=java-runtime}.
> Execution failed for JetifyTransform: /Users/jordan/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife-compiler/8.6.0/d3defb48a63aa0591117d0cec09f47a13fffda19/butterknife-compiler-8.6.0.jar.
> Failed to transform '/Users/jordan/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife-compiler/8.6.0/d3defb48a63aa0591117d0cec09f47a13fffda19/butterknife-compiler-8.6.0.jar'
using Jetifier. Reason: AmbiguousStringJetifierException, message: The
given artifact contains a string literal with a package reference
'android.support.v4.content' that cannot be safely rewritten.
Libraries using reflection such as annotation processors need to be
updated manually to add support for androidx.. (Run with --stacktrace
for more details.)
This is a known exception, and Jetifier won't be able to jetify this library.
Suggestions:
- If you believe this library doesn't need to be jetified (e.g., if it already supports AndroidX, or if it doesn't use support
libraries/AndroidX at all), add android.jetifier.blacklist =
{comma-separated list of regular expressions (or simply names) of the
libraries that you don't want to be jetified} to the gradle.properties
file.
- If you believe this library needs to be jetified (e.g., if it uses old support libraries and breaks your app if it isn't
jetified), contact the library's authors to update this library to
support AndroidX and use the supported version once it is released.
If you need further help, please leave a comment at
Dependency in Gradle Build File in App Level
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.2.0-beta02'
implementation 'com.melnykov:floatingactionbutton:1.3.0'
// implementation 'com.android.support:design:28.0.0'
// implementation 'com.android.support:support-v13:28.0.0'
implementation 'com.jpardogo.materialtabstrip:library:1.0.6'
implementation 'com.jakewharton:butterknife:8.6.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'
}
how should I resolve it ?
Please note that, as per official documentation the Butter Knife tool is now deprecated.
And they have recommended to switch to View Binding.
Hence, I request you to revisit your decision of using Butter Knife.
And in your gradle files, please ensure that below lines are added properly.
Add these changes and then click on File > Invalidate Cache and Restart in Android Studio.
android {
...
// Butterknife requires Java 8.
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Dependency
dependencies {
implementation 'com.jakewharton:butterknife:10.2.3'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'
}
If you are using Kotlin, replace annotationProcessor with kapt.
And to use Butter Knife in a library, please follow the steps provided in section Library Projects inside official documentation

How to fix "Missing classes" error in Android Studio? [duplicate]

This question already has answers here:
Android Studio keeps refusing to resolve com.android.support:appcompat-v7:29.0.1
(6 answers)
Closed 3 years ago.
When I am trying to make new activity in Android Studio
these errors happen, before this error I created few activities normally (without any errors):
The following classes could not be found:
- android.support.constraint.ConstraintLayout (    Add constraint-layout library dependency to the project, Fix Build Path, Edit XML, Create Class)
- android.support.design.widget.CoordinatorLayout (Fix Build Path, Edit XML, Create Class)
- android.support.v7.widget.Toolbar (Fix Build Path, Edit XML, Create Class)
Dependency library:
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.android.support:support-v4:29.+'
implementation 'com.android.support:design:29.+'
implementation 'com.android.support:appcompat-v7:29.+'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'com.squareup.retrofit2:retrofit:2.0.2'
implementation 'com.squareup.retrofit2:converter-gson:2.0.2'
implementation 'com.squareup.picasso:picasso:2.5.2'
implementation 'de.hdodenhof:circleimageview:3.0.0'
implementation 'com.mikhaellopez:circularimageview:3.2.0'
implementation 'com.google.android.gms:play-services-base:11.0.1'
implementation 'com.google.android.gms:play-services-basement:11.0.1'
implementation 'com.google.android.gms:play-services-safetynet:11.0.1'
implementation 'com.google.android.gms:play-services-tasks:11.0.1'
}
Looks like you are trying to use AndroidX libraries and Support libraries in same project. Migrate to AndroidX from menu, it will replace package names and dependencies.
Your project is adding widgets from Support libraries instead of AndroidX which is causing this issue.
If you still get errors, replace old package names from the ones in the list:
https://developer.android.com/jetpack/androidx/migrate
You've mixed up AndroidX dependency with AppCompat. Either migrate it to AndroidX from Refactor -> Migrate to AndroidX or use AppCompat.
As in your code, you have used both dependencies for Constraint Layout. The simplest solution for your problem is to remove the line
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

Incompatible library version 28 and 26.1 in Build Gradle dependencies

I'm trying to make an app that uses google maps API.
But there seems to be an error in regards to libraries, that are incompatible.
It says
'Found versions 28.0.0 and 26.1.0 examples including
com.android.support:animated_vector_drawable:28.0.0 and
com.android.support:support-media-compact:26.1.0
Would this have an effect on calling R.id by any chance?
I've tried clean and rebuild, and invalid cache reset.
I tried to add the files as version 28.0.0 in dependency and received 2 errors:
Failed to resolve: com.android.support:support-media-compact:28.0.0
Failed to resolve: com.android
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:support-media-compact:28.0.0'
implementation 'com.android.support:animated_vector_drawable:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:design:28.0.0'
implementation 'com.google.android.gms:play-services-location:16.0.0'
implementation 'com.google.android.gms:play-services-maps:16.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
I would've thought that rewriting the versions would have fixed the problem but 'com.android.support:appcompat-v7:28.0.0' is still underlined in red.
Using the Gradle View plugin http://plugins.jetbrains.com/plugin/7150-gradle-view, I determined the issue is that play-services-location:16.0.0 has a dependency on com.android.support:support-media-compat:26.1.0. One technique I found to remove the warning is described here: https://docs.gradle.org/current/userguide/managing_transitive_dependencies.html
which led me to add this to my gradle file:
implementation("com.android.support:appcompat-v7:28.0.0") {
force = true
}
Here you can see the latest libraries update available : link to go . And if you face again an error, you have to post the Logcat.
Add all the dependencies (that is said to be conflicting with existing libraries) with same version no. of which it is conflicting with.

Can org.json.xml be imported into an Android Studio project?

I'm attempting to use org.json.XML to convert an XML file into JSON in my Android app. As the included org.json classes provided by Android do not include org.json.XML, I added it as a dependency in my build.gradle:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.volley:volley:1.1.1'
implementation group: 'org.json', name: 'json', version: '20180813'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso- core:3.0.2'
}
However, when I attempt to run my app it fails with the following error:
java.lang.NoSuchMethodError: No direct method <init>(Ljava/io/Reader;)V in class Lorg/json/JSONTokener; or its super classes (declaration of 'org.json.JSONTokener' appears in /system/framework/core-libart.jar)
at org.json.XMLTokener.<init>(XMLTokener.java:57)
at org.json.XML.toJSONObject(XML.java:516)
at org.json.XML.toJSONObject(XML.java:548)
at org.json.XML.toJSONObject(XML.java:472)
In addition build.gradle has the warning:
json defines classes that conflict with classes now provided by Android. Solutions includes finding newer versions or alternative libraries that do not have the same problem (for example, for httpclient use HttpUrlConnection or okhttp instead), or repackaging the library using something like jarjar.
This is the same issue as presented in this question, but the answer provided does not work as org.json.XML is not included by default with Android.
Given the above, is it possible to rewrite my build.gradle to either ignore the included org.json library or to only import org.json.XML? Or will I have to look at using another library such as https://github.com/smart-fun/XmlToJson instead?

Android Dependencies Error: Libraries must match the same version

As you can see, i think all the support libraries have same version then why this error?
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
implementation 'com.google.firebase:firebase-core:15.0.0'
implementation 'com.google.firebase:firebase-auth:15.0.0'
implementation 'com.android.support:recyclerview-v7:27.1.1'
}
I think there may be 2 reasons:
1) When you hover over the error it will probably tell you which library has the wrong version, and maybe it's not even present in your dependencies, but probably one of your libraries is internally using it, so you need to specify them separately with the same version.
2) Or it may be due to the fact that one of the libraries (it's probably firebase) is compiled against a different version of the support library and that's causing the conflict. So you need your support libraries to match the support library that firebase is compiled against. For example look at how Glide explains it here:
Support Library Version - Glide uses support library version 27.
If you need or would prefer to use a different version of the support library you should exclude "com.android.support" from your Glide dependency in your build.gradle file.
So to check, if you delete the firebase dependency it will probably build. If that's the case, then you need to check against which version your version of firebase is compiled and use that.

Categories