2013-06-17 16 views
19

Tôi đang xây dựng một dự án thư viện nhỏ cùng với một dự án mẫu để minh họa cho việc sử dụng. Tôi không thể quản lý để chạy mẫu trong Android Studio. Tôi đã tạo dự án từ đầu. Tôi đã trải nghiệm với Eclipse nhưng đây là lần thử đầu tiên của tôi tại Android Studio & Gradle.Android Studio và Gradle - xây dựng không thành công

Lỗi đưa ra:

Gradle: Thực hiện thất bại cho nhiệm vụ ': demo: dexDebug'.

Chạy C: \ DevTools \ Android \ android-studio \ sdk \ công cụ xây dựng \ android-4.2.2 \ dx.bat không thành công. Xem ra

Tôi có cấu trúc thư mục sau:

- demo 
    - build 
    - libs 
    - android-support-v4.jar 
    - src 
    - main 
     - java 
     - res 
    - build.gradle 
- library 
    - build 
    - libs 
    - android-support-v4.jar 
    - src 
    - main 
     - java 
     - res 
    - build.gradle 
- build.gradle 
- settings.gradle 

Build.gradle tại gốc của dự án:

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

Settings.gradle tại gốc của dự án:

include ':library', ':demo' 

Build.gradle cho mô-đun thư viện:

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

dependencies { 
    compile files('libs/android-support-v4.jar') 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 7 
     targetSdkVersion 16 
    } 
} 

Build.gradle cho các module mẫu:

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

dependencies { 
    compile project(':library') 
    compile files('libs/android-support-v4.jar') 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 7 
     targetSdkVersion 16 
    } 
} 

Trả lời

24

xác định compile files('libs/android-support-v4.jar') có nghĩa là mỗi thư viện bao gồm hỗ trợ v4 Những gì bạn muốn làm là chỉ cần chỉ định rằng tất cả các thư viện phụ thuộc vào nó:..

dependencies { 
    compile 'com.android.support:support-v4:13.0.0' 
} 

này sẽ cho phép gradle để phát hiện tất cả phụ thuộc và bao gồm này chỉ một lần

Lưu ý: Trước tiên, bạn phải sử dụng Trình quản lý SDK và tải xuống và cài đặt hai kho lưu trữ Maven: "Kho lưu trữ hỗ trợ Android" và "Google Repository".

+2

đã hoạt động đối với tôi - mất nhiều thời gian hơn mức cần thiết mặc dù tôi đã bỏ qua Google Repository! –

+0

Bạn có phải nhập lại dự án trong Android Studio để nó có hiệu lực không? – dannyroa

+0

nếu chúng ta sẽ sử dụng thư viện khác thì sao? Ví dụ, nếu chúng ta sử dụng myLibrary, những gì để gõ vào phụ thuộc? – alicanbatur

1

tôi thấy vấn đề:

Tôi đã gỡ bỏ dòng từ tệp mẫu gradle.

compile files('libs/android-support-v4.jar') 

Tuy nhiên, tôi không có ý tưởng tại sao điều này không làm việc (nếu tôi có 2 hoặc 3 thư viện bên ngoài rằng tất cả phụ thuộc vào thư viện hỗ trợ, làm sao chúng ta phải làm, mà không cần chạm file gradle của họ?

+0

Nhưng điều này cũng sẽ xảy ra nếu bạn có thư viện hỗ trợ bao gồm cả trong lib của bạn và trong dự án chính của bạn, gradle hoặc không gradle bạn phải chỉ có nó trong 1 nơi. –

+0

Trong Eclipse, tôi không bao giờ có bất kỳ vấn đề nào khi các tệp jar giống nhau cho mỗi dự án (thư viện). –

0

Bạn nên điều hướng đến thư mục libs của mình trong IDE, nhấp chuột phải vào bình và chọn để thêm thư viện vào dự án, vẫn cần thiết lập sự phụ thuộc mặc dù bình dường như ở đó. Ngoài ra, hãy xem kịch bản được xây dựng gradle của bạn để đảm bảo phụ thuộc xuất hiện ở đó. Nếu vẫn không làm việc chỉ cần chạy một gradle sạch về dự án. Tài liệu Intellij sẽ cung cấp cho bạn thêm chi tiết về những gì sạch sẽ. xem:

stackoverflow gradle build