Ho problemi con le annotazioni di supporto @StringDef. Funzionano perfettamente bene quando la libreria in cui si trovano è parte del progetto (non un file .aar), ma quando compilo la libreria come file .aar e cerco di usarli in un altro progetto, le annotazioni non vengono applicate.Annotazioni supporto Android @StringDef non funziona quando esportato in un file .aar
http://tools.android.com/tech-docs/support-annotations
Sotto la sezione "Utilizzo delle annotazioni nelle vostre librerie" si dice
Se annotare le proprie librerie con queste annotazioni, e utilizzare Gradle per costruire un artefatto AAR, al momento della compilazione il plug-in Android Gradle estrarrà le informazioni di annotazione e le invierà all'interno del tuo file AAR per l'utilizzo da parte dei clienti della tua libreria. Puoi dare un'occhiata al file annotations.zip all'interno dell'AAR dove vengono registrate le informazioni; questo sta usando il formato XML delle annotazioni esterne di IntelliJ. Questo è necessario perché i file .class non possono contenere abbastanza informazioni sulle annotazioni per gestire le informazioni di @IntDef sopra; si noti che è necessario registrare un riferimento alla costante stessa, non al suo valore. Il plug-in Android Gradle eseguirà l'attività di annotazione estratto come parte della build se (e solo se) il progetto dipende dalla libreria di supporto delle annotazioni. (Si noti che solo le annotazioni fonte di ritenzione sono collocati nel file .aar;. Le ritenzioni livello di classe sono tenuti in classes.jar)
ho aperto il file .aar e dentro c'è l'annotations.zip file, e se lo estraggo, c'è un file XML che ha tutte le annotazioni corrette.
sto usando il @Retention(RetentionPolicy.SOURCE)
come si dice che ho bisogno di
L'applicazione che sto cercando di utilizzare questi in file come .aar ha una dipendenza la libreria di supporto compile 'com.android.support:support-annotations:23.1.1
Cosa am Mi manca per far funzionare questi lavori?
Modifica: ho ricontrollato che il progetto che utilizza questi file come .aar ha anche il processore di annotazioni attivato.
Che cosa intendi con "le annotazioni non vengono applicate"? –
Quando uso un metodo che ha un'annotazione su di esso, e non uso il valore annotato, dovrebbe contrassegnarlo in rosso e impedirmi di compilare. PER ESEMPIO. "Ciao" contro SomeClass.HELLO_CONSTANT.Funziona quando la libreria viene compilata direttamente nel progetto, ma non quando viene utilizzata come file .ar. – Ben987654
Immagine di esempio di come dovrebbe apparire se è stato utilizzato il valore errato - https: // 0d9321c1-a-db1c6dfe-s-sites. googlegroups.com/a/android.com/tools/tech-docs/support-annotations/image06.png?attachauth=ANoY7cqTSb17QuPBLDWr4tzSd8PWqymMcqHTUdoW1VD-jKQ6m8DAG3jhcVWkDniYH72V9mV2ZNZUfnH2KXgUOZumtywXOq9v_BK42ub6taGLV2UZ4b4QhTN7pflf130U4DVEu-L5VSH7kUXtWb5RFRIBCT5vc9nmYNsbKWVB5tKqFqj7TiYIPvkyDWpLFmu1eUjFgkjVrt1grDcsR5RdXe4IeV9AMuVT9nFp6nxSaVDcQ0kWRy2fizQ%3D&attredirects=0 – Ben987654