2015-04-27 28 views
6

Bir android uygulaması oluşturmak için grabeyi kullanıyorum. Birden fazla dosya ve klasörü varlıklar klasörüne kopyalıyorum. Şimdi problemin içine girdim, bazı dosyaların çok uzun bir dosya adı olabilir, çünkü klasörleri var (aapt 100 karakterden uzun dosya isimlerini idare edemez). Dizini kullanarak kopyalama sırasında dizini yeniden adlandırın.

Dolayısıyla böyle kopyalama işlemi sırasında dosyaları yeniden adlandırma ediyorum:

copy { 
    from('A') 
    into('B') 
    rename ('too-long-filename', 'shorter-filename') 
    rename ('too-long-directoryname', 'shorter-directoryname') 
    } 

Ancak bu dosyalar için çalışıyor ancak dizinler için başarısız olur. Gradle kullanarak kopyalama sırasında yeniden adlandırmak için özel bir komut var mı?

hata diyor ki:

Hata Kodu: Çıktı: /home/curiosity/AndroidStudioProjects/App/build/..way çok uzun dizin isimleri ../: Hata: Geçersiz dizin adı, yapamaz eklemek.

+1

bir hata alıyorum? – RaGe

+0

Evet, bunu eklemeyi unuttunuz. Hata her zaman: "Dizin eklenemiyor. Geçersiz dizin adı." Bunu anlıyorum çünkü android paketleme aracı 100 karakterden uzun isimlere izin vermiyor. Yeniden adlandırma, dosya için yardımcı olur, ancak dizin için bir etkisi yoktur. Hata, satır ile ya da satırınki ile aynıdır: yeniden adlandır ('çok uzun-yönetmenli', 'kısa-yöneten_adı') – curiosity

+1

Sorunda hata iletisi. –

cevap

0

FileTree ziyaretini deneyebilirsiniz, ancak dizinleri kaydetmeniz gerekir, geçiş yaparken bunları değiştiremezsiniz. Sadece adını kısaltmak istiyorsanız, muhtemelen harika alt dize notasyonu longname kullanabilirsiniz [0 ..- 10] gibi

şey:

def dirs = [] 
fileTree("./longdirectoryname").visit { FileVisitDetails details -> 
    if (!details.isDirectory()) { 
     // rename 
    } else { 
     dirs.add(details.file) 
    } 
} 

dirs.each { // rename directories here } 
+0

Teşekkürler, bu benim yaşayabileceğim bir çözüm :) Yine de, bazı referansları uyarlamanın yanı sıra bazı ön işleme ve kısa uzun dosya isimleri ekleme eğilimindeyim. – curiosity