2013-06-02 85 views
0

我在Android Studio中創建了一個簡單的項目來試用它。我會接受那一刻,我必須有代碼我的build.gradle文件來匹配我的IDE配置,但是因爲我對IntelliJ和Gradle都很陌生,所以我很掙扎。Android-Studio/Gradle庫部署問題

該項目是使用默認的空白活動創建的。我創建了一個簡單的,非常諾迪,視圖類如下:

package com.example.view; 

import android.content.Context; 
import android.util.AttributeSet; 
import android.view.View; 

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

/** 
* Created by steve on 02/06/13. 
*/ 
public class GraphView extends View { 

    /** The system logger. */ 
    protected transient final Logger log; 

    public GraphView(Context context) { 
     super(context); 

     // Instantiate the system logger. 
     log = LoggerFactory.getLogger(getClass()); 
    } 

    public GraphView(Context context, AttributeSet attrs) { 
     super(context, attrs); 

     // Instantiate the system logger. 
     log = LoggerFactory.getLogger(getClass()); 
    } 

    public GraphView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 

     // Instantiate the system logger. 
     log = LoggerFactory.getLogger(getClass()); 
    } 
} 

爲了得到它來編譯/我加入的logback JAR庫相同的庫目錄中的Android的支持-V4在IDE中解析。 jar文件位於。項目結構的快速修改和所有似乎正常工作。在IDE的編輯器中,我可以看到LoggerLoggerFactory類中的方法。

爲了諾迪的應用程序部署到我的Nexus 4我修改的build.gradle文件還引用庫:

buildscript { 
    repositories { 
     maven { url 'http://repo1.maven.org/maven2' } 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.4' 
    } 
} 
apply plugin: 'android' 

dependencies { 
    compile files('libs/android-support-v4.jar') 
    compile files('libs/logback-android-1.0.10.2.jar') 
    compile files('libs/slt4j-api-1.7.5.jar') 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 7 
     targetSdkVersion 16 
    } 
} 

它建立的很好,只是它部署在手機上,但是當默認活動開始我得到一個運行時錯誤:

Caused by: java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory 
     at com.example.view.GraphView.<init>(GraphView.java:29) 
     ... 25 more 

我錯過了什麼?

非常感謝提前。

史蒂夫

+0

我看到以下內容:編譯文件('libs/slt4j-api-1.7.5.jar') 不應該是libs/slf4j嗎? – TiGer

回答

2

找到了答案here

添加庫後,需要在構建之前在項目根目錄下運行./gradlew clean

0

UPDATE

您可能仍然有某種錯字在那裏。

我提取了android SDK,並試圖編譯一個簡單的Hello World項目與您的構建文件,它的工作原理。這意味着你可能有一個錯字,缺少jar文件或類似的東西。

請確保jars文件也存在正確的名稱!

下面是的build.gradle(編譯文件只能使用一次,但是這不應該的問題,我通常不使用文件系統沒有遠程倉庫):

buildscript { 
     repositories { 
       mavenCentral() 
     } 
     dependencies { 
       classpath 'com.android.tools.build:gradle:0.4' 
     } 
} 

apply plugin: 'android' 

dependencies { 
    compile files('libs/android-support-v4.jar', 'libs/logback-android-1.0.10.2.jar', 'libs/slf4j-api-1.7.5.jar') 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 7 
     targetSdkVersion 16 
    } 
} 

莫非它是slf4j-api-1.7.5.jar而不是slt4j-api-1.7.5.jar

我認爲你的依賴部分有一個錯字。

+0

我會認爲這是問題所在。但是,這是JAR文件的名稱有拼寫錯誤。我糾正了這個問題,問題依然存在。如果我從'build'註釋掉這些庫。gradle'文件,那麼代碼不會用Gradle編譯,所以我得出結論,由於某些原因,Gradle構建不會在編譯時僅將這些JAR文件拖入包時間。 – Dobbo

+0

感謝您關注此事。你有沒有試過運行hello world app?我看到的問題是它在RUNTIME失敗!我已經看到了兩個項目,爲圖書館使用了不同的位置,所以我確信沒有錯別字。 – Dobbo

+0

在這種情況下,我不知道。我沒有任何Android設備...祝你好運。 – rimero