Ich habe ein Projekt erstellt, die Ressourcendateien in die Projektbibliothek kopiert und sie der Projektstruktur im vorgeschriebenen Stil hinzugefügt Theme.AppCompat
. Ohne Fehler kompiliert, aber wenn Sie den Abstieg starten Ausnahme:
08-03 00:50:00.406: ERROR/AndroidRuntime(4055): FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: android.support.v7.appcompat.R$styleable
at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:98)
at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:58)
at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98)
at com.example.SampleMetrRost.CentralActivity.onCreate(CentralActivity.java:12)
at android.app.Activity.performCreate(Activity.java:4636)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1051)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1924)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1985)
at android.app.ActivityThread.access$600(ActivityThread.java:127)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1151)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4476)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:816)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:583)
at dalvik.system.NativeStart.main(Native Method)
Hilf mir bitte. Habe heute den ganzen Tag verbracht.
android
intellij-idea
gradle
android-support-library
Alex Malkov
quelle
quelle
Antworten:
Ohne Gradle ( Klicken Sie hier für die Gradle-Lösung )
Erstellen Sie ein Support-Bibliotheksprojekt .
Importieren Sie Ihr Bibliotheksprojekt aus dem Eclipse-Projekt in Intellij (dieser Schritt gilt nur, wenn Sie Ihre Bibliothek in Eclipse erstellt haben).
Klicken Sie mit der rechten Maustaste auf das Modul und wählen Sie Moduleinstellungen öffnen.
Richten Sie die Bibliotheken der v7-JAR-Datei ein
Setup-Bibliotheksmodul von v7
Richten Sie die Abhängigkeit des App-Moduls vom v7-Bibliotheksmodul ein
quelle
Verwenden von Gradle
Wenn Sie Gradle verwenden, können Sie es als
compile
Abhängigkeit hinzufügen .Anleitung
Stellen Sie sicher, dass Sie das
Android Support Repository
SDK-Paket installiert haben. Android Studio erkennt dieses Repository automatisch während des Erstellungsprozesses (nicht sicher über einfaches IntelliJ).Fügen Sie die Abhängigkeit zu hinzu
{project}/build.gradle
dependencies { compile 'com.android.support:appcompat-v7:+' }
Klicken Sie auf die
Sync Project with Gradle Files
Schaltfläche.BEARBEITEN : Diese Anweisungen finden Sie anscheinend in der Dokumentation unter
Adding libraries with resources -> Using Android Studio
.quelle
com.android.support:support-v4:+
in Ihrem Bibliotheksprojekt. Dies weist es an, die Version zu verwenden, die das Projekt verwendet.Mit Maven
Zunächst sollten Sie Android-Bibliotheken mit Maven Android SDK Deployer in Ihrem lokalen Maven-Repository installieren
Dann können Sie Ihrem Pom folgende Abhängigkeit hinzufügen:
<dependency> <groupId>android.support</groupId> <artifactId>compatibility-v7-appcompat</artifactId> <version>${compatibility.version}</version> <type>apklib</type> </dependency> <dependency> <groupId>android.support</groupId> <artifactId>compatibility-v7-appcompat</artifactId> <version>${compatibility.version}</version> <type>jar</type> </dependency>
quelle
Das ist meine Lösung:
Kopieren Sie $ ANDROID_SDK / extras / android / support / v7 / appcompat und fügen Sie es in Ihr Projekt ROOT ein
Öffnen Sie "Projektstruktur" auf Intellij, klicken Sie auf "Module" unter "Projekteinstellungen" und dann auf "Appcompat" -> "Android". Stellen Sie sicher, dass das Kontrollkästchen "Bibliotheksmodul" aktiviert ist.
Klicken Sie unter "appcompat" auf "YOUR-PROJECT_NAME", entfernen Sie "android-support-v4" und "android-support-v7-compatible". Stellen Sie das Kontrollkästchen sicher, bevor "appcompat" aktiviert ist. Klicken Sie auf "OK", um den Dialog "Projektstruktur" zu schließen.
Zurück zum Hauptfenster klicken Sie oben links im Projektbereich auf "appcompat" -> "libs". Klicken Sie mit der rechten Maustaste auf "android-support-v4", wählen Sie das Menü "Als Bibliothek hinzufügen" und ändern Sie "Zum Modul hinzufügen" in "Ihr Projekt". Gleiches gilt für "android-support-v7-compatible".
Danach sollte Intellij in der Lage sein, die Android-Support-XXXX-Module korrekt zu finden.
Viel Glück!
quelle
Eine andere, noch einfache Lösung besteht darin, diese Zeile in die Datei build.gradle einzufügen
dependencies { //import of gridlayout compile 'com.android.support:gridlayout-v7:19.0.0' compile 'com.android.support:appcompat-v7:+' }
quelle
Eine andere Lösung für Maven (und zumindest für mich eine bessere Lösung) ist die Verwendung des Maven-Repositorys, das im lokalen Android SDK enthalten ist. Fügen Sie dazu einfach ein neues Repository in Ihr POM ein, das auf das lokale Android SDK zeigt:
<repository> <id>android-support</id> <url>file://${env.ANDROID_HOME}/extras/android/m2repository</url> </repository>
Nach dem Hinzufügen dieses Repositorys können Sie die Standard-Google-Abhängigkeit wie folgt hinzufügen:
<dependency> <groupId>com.android.support</groupId> <artifactId>support-v13</artifactId> <version>${support-v13.version}</version> </dependency> <dependency> <groupId>com.android.support</groupId> <artifactId>appcompat-v7</artifactId> <version>${appcompat-v7.version}</version> <type>aar</type> </dependency>
quelle
Als Bibliotheksprojekt
Sie sollten die Ressourcen in einem Bibliotheksprojekt gemäß http://developer.android.com/tools/support-library/setup.html hinzufügen
Anschließend fügen Sie die
android-support-v7-appcompat
Bibliothek in Ihren Arbeitsbereich ein und fügen sie als Referenz zu Ihrem App-Projekt hinzu.Das Definieren aller Ressourcen in Ihrem App-Projekt funktioniert ebenfalls (es müssen jedoch viele Definitionen hinzugefügt werden, und Sie haben einige davon übersehen), und dies ist nicht der empfohlene Ansatz.
quelle
android.support.v7.appcompat
Paket befindet. Andernfalls werden Ressourcen von android-support-v7-appcompat.jarDies ist meine Lösung, sie ist der vorherigen sehr ähnlich:
<dependency> <groupId>com.google.android</groupId> <artifactId>support-v7</artifactId> <scope>system</scope> <systemPath>${android.home}/support/v7/appcompat/libs/android-support-v7-appcompat.jar</systemPath> <version>19.0.1</version> </dependency>
Dabei ist {android.home} das Stammverzeichnis des Android SDK und verwendet systemPath anstelle des Repositorys .
quelle
Als Aktualisierung der Antwort von Austyn Mahoney ist die Konfiguration "Kompilieren" veraltet und wurde durch "Implementierung" und "API" ersetzt.
Es wird Ende 2018 entfernt. Weitere Informationen finden Sie hier .
quelle