2011-11-01 18 views
20

Benim için gayet iyi bir şekilde çalışan bir Android kütüphane projem var, ancak şimdi onu harici bir JAR'a dönüştürmekle ilgileniyorum.Android Kitaplığı Projesi bir Harici JAR'a Nasıl Dönüştürülür?

Bunu nasıl yaparım?

Herhangi bir Android kitaplığı projesi harici bir JAR'a dönüştürülebilir mi? Yoksa, kısıtlamalar veya sınırlamalar nelerdir? Harici bir JAR bu veremezsiniz

cevap

29

Herhangi bir Android kitaplığı projesi bir dış JAR'a dönüştürülebilir mi? Şu anda

değil. Değilse

, kısıtlama yada nelerdir? Kitaplık tamamen Java kodu ise sadece düzenli Java ile olduğu gibi

, hiçbir kaynaklarla, sen .class dosyaların dışarı bir JAR oluşturabilir.

senin kütüphane kaynaklarını kullanır, yine de yukarıdaki gibi bir JAR oluşturabilir. Ancak, yansıma veya getIdentifier() aracılığıyla R değerleri (örneğin R.layout.main) aramak gerekir, ve kaynaklar JAR paketlenmiş olmayacak fakat ayrı dağıtılacak gerekir.

Gelecekte, inşa etmek araçları kütüphane projelerinin dışında dağıtılabilir JAR dosyaları, kaynakları ile tam oluşturarak desteklemelidir. Mevcut yapı araçları JAR'lar yaratır, ancak dağıtılmak üzere tasarlanmamışlardır, ancak şu anda dahili yapım eserlerdir.

+2

Teşekkürler. .class dosyalarından bir JAR oluşturmanın [jar cf jar-file input-files] kadar basit bir şekilde doğru olduğunu anlıyorum (http://download.oracle.com/javase/tutorial/deployment/jar/build.html)? Ayrıca, getIdentifier() ile erişilen kaynakların ayrı olarak nasıl dağıtıldığı hakkında biraz daha ayrıntılı bilgi verebilir misiniz? – uTubeFan

+1

@uTubeFan: ".class dosyalarından bir JAR oluşturmanın jar cf jar dosyası giriş dosyaları kadar basit olduğunu doğru bir şekilde anlayabiliyorum?" - muhtemelen. Ant '' görevini kendim kullanıyorum. "Ayrıca, getIdentifier() yoluyla erişilen kaynakların ayrı olarak nasıl dağıtıldığı hakkında biraz daha ayrıntılı bilgi verebilir misiniz?" - JAR dosyasında değillerse ve JAR'ın yeniden dağıtıcısı dosyalara ihtiyaç duyarsa, reuser bu dosyaları bir şekilde almalıdır.JAR ve 'res /' ağacını içeren bir ZIP arşivini öneririm. – CommonsWare

+0

Merhaba @uTubeFan Bir projeyi ** MyTranslator ** düşünün, bir metin dosyası ** xyztranslator.jar ** ithal ettiğim için, bazı metinleri çeviriyorum. Şimdi ** MyTranslator ** projesini **. MyTranslator ** projesindeki tüm sınıfları ve ** xyztranslator.jar ** 'daki tüm sınıfları kullanabileceğim bir **. Sadece benim soru ** Nasıl zaten bir kavanoz uygulama ithal edilmiş bir .jar dosyasına bir android uygulama ihraç edebilirsiniz ** –

2

http://developer.android.com/guide/developing/projects/index.html#LibraryProjects iddiaları. Özgül alıntı: Eğer gerçek bir kitaplık için yapacağı gibi

Benzer şekilde, bir kendi kendine yeten JAR dosyasına kütüphane projesini ihraç edilemez. Bunun yerine, bağımlı uygulamasında kitaplığa başvuruda bulunarak ve bu uygulamayı yapılandırarak kütüphaneyi dolaylı olarak derlemelisiniz.

+0

Teşekkürler. Aynı sayfada, "Her kitaplık projesini kendi JAR dosyasına dönüştüren yeni kitaplık projesi özelliğini kullanmak için SDK Tools r14 veya daha yeni bir sürüme ihtiyacınız var." Bu, eğer SDK r14'ü (veya daha yeni) kullanırsam, alıntıladığınız oryantasyonun artık mevcut olmadığı anlamına mı geliyor? – uTubeFan

+2

Dürüst olmak gerekirse, emin değilim. Bu yazı, aşağıdan aşağıya alıntı yaptığım kısımla çelişiyor gibi görünse de, sadece kötü ifadeler olabilir. – Sinjo

+0

r14, kavanozları dışa aktarabilmek için kütüphane projesini nasıl ele aldıklarını reddediyorlar, ancak oluşturulan kaynakları korurken bunu nasıl yapacağını hala anlayamıyorum. – schwiz

İlgili konular