Tôi đang làm việc trên một dự án bao gồm hai dự án thư viện Android. Khi tôi tải các thư viện này lên repo Maven của tôi (Nexus), pom được tạo ra không bao gồm phần tử <type>aar</type>
trong phần phụ thuộc.Dự án thư viện Android phụ thuộc tạm thời lỏng AAR loại
Dưới đây là tôi cây phụ thuộc
* App1
\
* lib1
|\
| * lib2
* Other libs
Bạn có thể nhìn thấy trong sơ đồ này mà app
của tôi phụ thuộc vào lib1
, mà phụ thuộc vào lib2
. Cả hai thư viện đều là các dự án thư viện Android, do đó AARs.
Lib1/build.gradle
apply plugin: 'com.android.library'
apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle'
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion 20
versionCode 1
versionName "1.0"
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
provided project(':lib2')
compile 'com.squareup.picasso:picasso:2.3.3'
}
Lib2/build.gradle
apply plugin: 'com.android.library'
apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle'
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion 19
versionCode 1
versionName '1.0'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:19.+'
compile 'com.squareup.retrofit:retrofit:1.6.1'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
compile 'com.squareup.okhttp:okhttp:2.0.0'
}
Chú ý cách Lib1
bao gồm Lib2
như một sự phụ thuộc project()
.
Bây giờ, khi tôi triển khai điều này bằng cách sử dụng plugin tuyệt vời gradle-mvn-push của Chris Banes, mọi thứ hoạt động như mong đợi. Chỉ có một sự kỳ quặc mà tôi nhận thấy trong tệp pom.xml được tạo ra.
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>lib2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
...
</dependencies>
Lưu ý rằng plugin mavenDeployer đã bỏ yếu tố phụ thuộc khi nó tạo ra pom.
Trong dự án ứng dụng của tôi (đó là một dự án maven), tôi đã phụ thuộc này được liệt kê:
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>lib1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>aar</type>
</dependency>
...
</dependencies>
Khi cố gắng xây dựng này với Maven, tôi nhận được các lỗi sau.
Could not resolve dependencies for project com.example:app:apk:1.0.0-SNAPSHOT: The following artifacts could not be resolved: com.example:lib2:jar:0.0.1-SNAPSHOT
Lưu ý cách tìm phiên bản jar của thư viện. Tôi tin rằng, vì plugin mavenDeployer không được tạo ra <type>aar</type>
trong danh sách phụ thuộc của pom được tạo ra, maven là mặc định để tìm kiếm một cái bình.
Có ai biết cách xây dựng các dự án thư viện Android bao gồm các phụ thuộc tạm thời với Gradle không?
Cùng một vấn đề ở đây. – sarfata