2014-06-27 11 views
5

Yinelenen alıcılar ile manifest birleşme sorunu yaşıyorum ama içerik farklı. Farklı API seviyeleri için aşağıdaki alıcıları kullanıyorum, birleşme tarihine kadar hiçbir sorun yaşamadım. Birleşme nedeniyle birleşme başarısız olursa, başka bir alıcı oluşturmak ve bu şemaya devam etmek istemiyorum. Bu durumlar için birleşmeyi devre dışı bırakmanın veya alıcıları bir arada birleştirme, ancak farklı amaçlarla harekete geçme seçeneği ile bir yolu var mı?Android manifest birleşme aynı adı taşıyan ancak farklı içerikli alıcılar için başarısız oluyor

<receiver 
    android:name=".receivers.UpdateReceiver" 
    android:enabled="@bool/is_api_below_12"> 
    <intent-filter> 
     <action android:name="android.intent.action.PACKAGE_REPLACED" /> 
     <data android:scheme="package" /> 
    </intent-filter> 
</receiver> 

<receiver 
    android:name=".receivers.UpdateReceiver" 
    android:enabled="@bool/is_api_12_and_above"> 
    <intent-filter> 
     <action android:name="android.intent.action.MY_PACKAGE_REPLACED" /> 
    </intent-filter> 
</receiver> 
+0

Hiç denemediniz, ancak 1 alıcı etiketinde 2 adet amaç filtresi olması yasal olmalı. –

+0

@GabeSechan 'Etkin' özniteliğine ihtiyacım var, eğer niyet filtresinde olsaydık harika olurdu. –

+0

Kesinlikle konuşmamanız - her zaman alıcının ilk satırına niyetin işlenip işlenmeyeceğine karar vermeniz ve eğer çıkmama durumundan çıkmanızdır. Etkin, bunu yapmanın daha güzel bir yoludur. –

cevap

1

belki de build.gradle dosya yılında

android { 
    useOldManifestMerger true 
} 

ayarlayabilir ve bu Şunları bulabilirsiniz daha fazla ayrıntı here

+0

maalesef yer tutucuları kullandığımdan dolayı açık bir birleştirme ihtiyacım var. –

+4

[docs] 'dan (http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger): ** 1.0'da eski manifest'i çağırmak için yeteneği kaldırdık birleşme **. – cprcrack

+0

Yeni birleşmeyi nasıl kullanıyorsunuz? Bunu okumaya çalıştım: http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger, ama çok karmaşık ve kafa karıştırıcı ... –

1

görebilirsiniz Projemdeki iyi çalıştı nasıl aynı sorunu this answer numaralı telefondan düzeltmişsiniz. Temel olarak başka bir sınıf oluşturdum, ancak ortak bir eylemi yürütmek için başka bir dosya oluşturmamak için statik bir iç sınıf yaptım.

İlgili konular