Sto scrivendo un SDK e vorrei che gli sviluppatori fossero in grado di creare un activity-alias
il cui targetActivity
è impostato su un'attività all'interno del mio SDK. Lo sto facendo perché mi piacerebbe che fossero in grado di personalizzare il filtro intent su un'attività specifica nell'SDK. Se nel manifesto del sdk c'è ActivityX, mi piacerebbe che fossero in grado di scrivere un activity-alias
come questo in di loro app manifesta:android: consentire la creazione di un alias di attività il cui targetActivity è in un aar/sdk
<activity-alias
android:name="abc"
android:targetActivity="ActivityX">
<intent-filter>
... user's custom intent filter
</intent-filter>
</activity-alias>
Il problema che sto imbattersi è che la targetActivity
ha la restriction che: "... deve corrispondere l'attributo name di un elemento attività che precede l'alias nel manifesto"
Questo è un problema perché non importa dove metto l'attività nel manifesto della sdk o dove metto l'alias in manifesta un esempio di applicazione, l'alias viene sempre prima l'attività nel manifesto fusione finale causando un errore INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
.
Un'idea è di inserire un alias senza un filtro di intent subito dopo che ActivityX è stato dichiarato nel manifest sdk e sperare che i due alias siano merged together e rimanere nella posizione dell'alias sdk. Ma non riesco a capire come farlo. Una ragione che potrebbe non funzionare è che due alias potrebbero non essere in grado di entrare in conflitto.
Avete pensieri su come risolvere questo tramite una soluzione di unione o qualche altra tecnica?
Le librerie Android sono molto limitate in casi d'angolo come questo. Posso capire perché vuoi farlo. Non ne ho idea ma ti suggerirei di postare in b.android.com come richiesta di funzionalità al team di strumenti –