2012-05-04 15 views
45

Birden çok oluşturma hedefi olan (karınca kullanarak) bir Android projem var. Test amaçları için, bu hedef hedeflerin hepsinin farklı paket isimleri vardır (bu yüzden paket ismim sürüm oluşturma için com.mycompany.myapp ve test oluşturma için com.mycompany.myapp.test).Xml ad alanı bildirimi: otomatik değiştirilen paket adı

Bu, düzen dosyalarındaki özel xml ad alanları söz konusu olduğunda, çoğu durumda iyi sonuç verir. Yani bu:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:custom="http://schemas.android.com/apk/res/com.mycompany.myapp" /> 

paket adı com.mycompany.myapp.test ile değiştirilir en kısa sürede çalışmayı durdurur.
Bu nedenle, prebuilt sırasında com.mycompany.myapp değerini her defasında değiştirmem gerekiyor. Bütün bu dosyalar VCS olmalı ve her zaman çakışmaması gerektiğini beri bir kişi yapılandırmasını geçer ve onları onlar gibi görünecektir belirli yapılandırma klasörüne içine düzen dosya taşımak zorunda kaldı, birleştirir: Şimdi bu

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:custom="http://schemas.android.com/apk/res/@[email protected]" /> 

dosyalar vcs'de saklanır ve @ CONFIG.PACKAGENAME @, önceden oluşturulduğunda değiştirilir ve daha sonra dosya ./config/file.xml dosyasından ./res/layout/file.xml dosyasına kopyalanır.

Bu son derece uyumsuz ve gerçekten iyi ölçeklenmiyor (Build betiğinde 50 dosyanın her birini belirtmeyi düşünemiyorum).

Bu yüzden sorum şu: ad alanı bildiriminde geçerli paket adını otomatik olarak kullanmanın bir yolu var mı? Ya da en azından modife düzen dosyaları (ya da dosyaları oluşturmak?) Böylece paket adını her değiştirdiğimde com.mycompany.myapp değiştirmem gerekmeyecek.

cevap

115

Bunun için bir postfix olduğunu ortaya çıkar: res-auto.

Yani tüm yapmanız gereken

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:custom="http://schemas.android.com/apk/res-auto" /> 

Bu otomatik olarak geçerli paket adını kullanır yazmaya.

+1

Başvuru: http://developer.android.com/tools/sdk/eclipse-adt.html (bölüm ADT 17.0.0). – Pang

+0

"Kitaplıklardaki özel özniteliklerle özel görünümler için destek eklendi. Özel öznitelikler kullanan düzenler, uygulama paketi adını içeren URI yerine ad alanı URI http://schemas.android.com/apk/res-auto kullanmalıdır. uygulama zamanında belirli bir uygulama ile değiştirilir. " – flup

+2

Projem özel görünümleri olan bir kitaplık kullanıyor olsa bile çalışır mı? –