için paketlenmemiş kaynakları oluşturdu Fabrika sınıfları ve META-INF/services/factory.interface.class
kaynağını üreten özel ek açıklama işlemci kullanıyorum.Ek Açıklama İşlemciler, APK
Kitaplık projesinde ek açıklama işlemci kullanılır ve oluşturulan tüm dosyalar AAR'ye doğru şekilde paketlenir.
kütüphanenin ile uygulama projesinde açıklama işlemci kullanımı kütüphaneler META-INF/services/factory.interface.class
sadece sınıfları bir fark bir araştırmadan sonra APK/META-INF/services/factory.interface.class
mevcut bir bağımlılık olarak ilave robot-gradle-eklentisi-1.5.0 içinde MergeJavaResourcesTransform
(ve 2.0 olduğu 0,0-alpha3) tüm exploded-aar
s, jar
s birleştirilmesi için kaynaklar arar ve
intermediates/sourceFolderJavaResources
intermediates/classes
dan META-INF
(ek açıklama işlemcisinden kaynak dosyaları oluşturulur olsun nerede var) birleştirmek veya ek açıklama işlemci dosyası oluşturmak yapmak için herhangi bir yolu var mı içinde sourceFolderJavaResources
?
Sadece ben bugüne kadar bulunmuş uygulamanın buildscript
android.applicationVariants.all { variant ->
def variantName = variant.name
def variantNameCapitalized = variantName.capitalize()
def copyMetaInf = tasks.create "copyMetaInf$variantNameCapitalized", Copy
copyMetaInf.from project.fileTree(javaCompile.destinationDir)
copyMetaInf.include "META-INF/**"
copyMetaInf.into "build/intermediates/sourceFolderJavaResources/$variantName"
tasks.findByName("transformResourcesWithMergeJavaResFor$variantNameCapitalized").dependsOn copyMetaInf
}
yılında CopyTask
eklemektir Ama bir kütüphane kullanıcılarının bağımlılıkları eklemekten daha fazla bir şey yaparsınız derleyici zorlamak wat yok ettik Geçici çözüm.
Kütüphane META-INF doğru AAR için paketlenir, uygulamada MET-INF dosyaları ile bir sorun vardır. 'resources.srcDirs 'aracıları/sınıfları/debug/META-INF' işlevi eklenmiyor – skyman
@skyman Ekstra ayrıntılarla güncellendi. Sorun için bazı geçici çözümler var. Umarım yardımcı olur. – GregoryK
Yapı sistemi ile çalışmaz. META-INF, hem kütüphanede hem de uygulamada derlenerek, yani apter derlemesiyle başa çıkarken, paketlemeden önce – skyman