Je viens de migrer d'Eclipse vers le studio. J'ai suivi un blog pour exporter un projet d'Eclipse vers un studio. L'application fonctionne bien dans Lollipop et jette l'erreur suivante dans les appareils pré Lollipop.
Obtenir cette erreur uniquement en studio. pas dans Eclipse.
FATAL EXCEPTION: main
Java.lang.NoClassDefFoundError: Android.support.v7.appcompat.R$layout
at Android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.Java:324)
at Android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.Java:246)
at Android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.Java:106)
at com.hsp.inventory.SplashActivity.onCreate(SplashActivity.Java:53)
at Android.app.Activity.performCreate(Activity.Java:5122)
at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1081)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2270)
//
......
//
Mon dossier
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
mavenCentral()
maven {
url "http://dl.bintray.com/journeyapps/maven"
}
}
dependencies {
classpath 'com.Android.tools.build:gradle:1.3.0'
}
}
allprojects {
repositories {
jcenter()
}
}
apply plugin: 'com.Android.application'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.Android.gms:play-services:7.5.0'
compile 'com.Android.support:design:22.2.0'
compile 'com.Android.support:appcompat-v7:22.2.0'
compile 'com.Android.support:cardview-v7:22.2.0'
compile 'com.Android.support:recyclerview-v7:22.2.0'
compile 'com.google.code.gson:gson:2.3'
// compile "com.Android.support:support-v4:18.0.+"
compile project(':sliderLibrary')
compile project(':camera')
compile project(':volley')
// Zxing library compile
compile 'com.journeyapps:zxing-Android-embedded:2.3.0@aar'
compile 'com.journeyapps:zxing-Android-legacy:2.3.0@aar'
compile 'com.journeyapps:zxing-Android-integration:2.3.0@aar'
compile 'com.google.zxing:core:3.2.0'
}
Android {
compileSdkVersion 22
buildToolsVersion '22.0.1'
defaultConfig {
applicationId "com.hsp.inventory"
minSdkVersion 14
targetSdkVersion 22
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
Java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets', 'src/main/assets', 'src/main/assets/fonts']
}
instrumentTest.setRoot('tests')
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
}
S'il vous plaît laissez-moi savoir si vous voulez jeter un oeil à mon manifeste et act_splash.xml. Je vais mettre à jour ici.
Une idée?
J'ai fait face au même problème et je l'ai corrigé ... C'est un problème avec la limite Dex. La limite de dex étant atteinte, deux fichiers dex sont créés. Lollipop sait lire, pré-Lollipop n’a aucune idée si vous ne le spécifiez pas dans la classe Application
.
Veuillez vous assurer que ce qui suit est en place:
dans build.gradle
dependencies {
compile 'com.Android.support:multidex:1.0.0'
}
defaultConfig {
multiDexEnabled true
}
IMPORTANT pour soutenir la pré-Lollipop:
Dans Manifest, sous la balise d'application,
<application
...
Android:name="Android.support.multidex.MultiDexApplication">
...
</application>
Ou, si vous avez utilisé votre propre classe Application
, Modifiez votre Application
pour remplacer attachBaseContext
en commençant par
import Android.support.multidex.MultiDexApplication;
import Android.support.multidex.MultiDex;
public class MyApplication extends MultiDexApplication {
// ......
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
Référence: https://developer.Android.com/tools/building/multidex.html#mdex-gradle
Votre logcat retourne
Java.lang.NoClassDefFoundError: Android.support.v7.appcompat
Mettez donc à jour votre référentiel de support (version 23) Et ** Pour l'API 23: **
compile 'com.Android.support:appcompat-v7:23.0.0'
Dans la documentation Android pour v7 appcompat Se trouve une note:
Remarque: cette bibliothèque dépend de la bibliothèque de support v4. Si vous utilisez Ant ou Eclipse, veillez à inclure la v4 Support Library dans le composant du classpath de cette bibliothèque.
Je pense que c’est votre problème puisque vous avez commenté la ligne dans votre note:
// compile "com.Android.support:support-v4:18.0.+"
Ajoutez à nouveau la ligne et essayez de compiler le projet.
De plus, je ne vois pas de ligne com.Android.support:appcompat-v7:21.0.0
dans votre note
Peut-être une longue photo, mais assurez-vous que vos images sont sous/res/drawable et non /res/drawable-v24Voir cette réponse: Ligne de fichier XML binaire # 0: Erreur lors du gonflage de la classe ImageView
Comme je peux le voir, le fichier Gradle que vous avez posté ici est un fichier Gradle de niveau supérieur, qui contient des éléments qui ne devraient pas être présents. Remplacez le contenu de votre fichier de niveau supérieur comme ci-dessous:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
mavenCentral()
maven {
url "http://dl.bintray.com/journeyapps/maven"
}
}
dependencies {
classpath 'com.Android.tools.build:gradle:1.3.0'
}
}
allprojects {
repositories {
jcenter()
}
}