2014-10-23 23 views
28

Nhóm của tôi đang phát triển một thư viện Android, được sử dụng trong một số ứng dụng mẫu, cũng do chúng tôi phát triển. Thư viện được tạo dưới dạng tệp AAR. Dưới đây là build.gradle nóTạo thư viện Android AAR bao gồm javadoc và các nguồn

apply plugin: 'com.android.library' 
apply from: 'deploy.gradle' 

android { 
    compileSdkVersion 20 
    buildToolsVersion '20.0.0' 
    packagingOptions { 
     exclude 'LICENSE.txt' 
     exclude 'LICENSE' 
     exclude 'NOTICE' 
    } 
    defaultConfig { 
     // Excluded for brevity 
    } 
    buildTypes { 
     release { 
      runProguard false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    lintOptions { 
     abortOnError false 
     // if true, check all issues, including those that are off by default 
     checkAllWarnings true 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:support-v13:20.0.+' 
    compile 'com.google.android.gms:play-services:5.+' 
    compile 'com.squareup.retrofit:retrofit:1.6.1' 
} 

đây là phụ thuộc một phần của build.gradle của ứng dụng

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile ('com.mycompany.myapp:[email protected]') { 
     transitive = true 
     downloadJavadoc = true 
     downloadSources = true 
    } 
} 

tôi có thể sử dụng tất cả các lớp lib, nhưng tôi không thể nhìn thấy Javadocs lẫn nguồn . Làm thế nào tôi có thể gói AAR của tôi để nó bao gồm các nguồn và Javadocs?

+0

'downloadJavadoc' và' downloadSources' không được hỗ trợ trong câu lệnh 'biên dịch'; không chắc nó đến từ đâu. Xem thêm http://stackoverflow.com/questions/17426628/how-to-make-android-studio-download-dependencies-sources-and-javadoc, mặc dù câu hỏi của bạn có vẻ nhiều hơn về cách đóng gói chúng trong AAR chứ không phải như thế nào để tham khảo chúng khi chúng được đưa vào? –

+0

Đúng là Scott, tôi muốn các nguồn và javadoc được đóng gói bên trong AAR. Các thư viện khác mà chúng tôi đang sử dụng (như Retrofit) đi kèm với các nguồn và javadoc, nhưng các thư viện đó được đóng gói như các JAR thay vì các AAR. – jmm

Trả lời

9

Có vẻ như không thể thực hiện được ngay bây giờ. Tuy nhiên, thêm các tác vụ gradle này vào deploy.gradle, the -javadoc.jar và -sources.jar được tạo.

task androidJavadocs(type: Javadoc) { 
    source = android.sourceSets.main.java.srcDirs 
} 

task androidJavadocsJar(type: Jar) { 
    classifier = 'javadoc' 
    baseName = artifact_id 
    from androidJavadocs.destinationDir 
} 

task androidSourcesJar(type: Jar) { 
    classifier = 'sources' 
    baseName = artifact_id 
    from android.sourceSets.main.java.srcDirs 
} 

artifacts { 
// archives packageReleaseJar 
    archives androidSourcesJar 
    archives androidJavadocsJar 
} 

Sau đó, nguồn và javadoc cần được nhập thủ công. Theo số this threadthis open issue, chúng không thể được nhập tự động.

+0

Bạn vẫn đang sử dụng phương pháp này? Ngoài ra, artifact_id là gì? –

+0

Tôi không còn sử dụng nó, xin lỗi – jmm

+0

khi tôi xóa dòng 'baseName = artifact_id' nó hoạt động. –

Các vấn đề liên quan