Verwenden von $ {applicationId} im Bibliotheksmanifest

Ich arbeite an einem SDK, das einen internen ContentProvider benutzt, ich möchte dieses SDK in einigen Projekten verwenden und es in der Bibliothek manifest erklären, also habe ich das versucht:

<provider android:name=".core.MyContentProvider" android:authorities="${applicationId}" android:exported="false"/> 

Was passiert, ist die $ {applicationId} wird durch den Paketnamen der Bibliothek ersetzt und nicht die Top-Apk-bezogene Anwendung …

  • So stoppen Sie das Telefon vom USB-Programm programmgesteuert
  • Fehler beim Erstellen von Android App (siehe ActionBarSherlock & ViewPagerTabs) mit Ant
  • Wie bekomme ich alle Ansichten in einer Aktivität?
  • Umsetzung einer while-Schleife in Android
  • Positionieren von Google Maps v2 Zoom in Kontrollen in Android
  • Emuliere Mifare-Karte mit Android 4.4
  • Gibt es eine Möglichkeit, um sicherzustellen, dass die Start- Anwendung würde in den Android platziert werden: Behörden Wert?

  • Führender Punkt in Android: Name wirklich erforderlich?
  • So zeigen Sie einen Dialog aus einem Dienst an
  • Wie man Klänge zu genauen Zeiträumen über verschiedene Geräte in Android spielt
  • Inspektion von android sqlite und IntelliJ
  • Programmgesteuertes Erstellen einer GridLayout aus der Supportbibliothek
  • Wie kann man diesen faltenden Effekt in Android erreichen?
  • One Solution collect form web for “Verwenden von $ {applicationId} im Bibliotheksmanifest”

    War in das gleiche Problem mit mehreren verschiedenen Varianten und eindeutigen IDs laufen, und am Ende gehen mit dem Ersetzen eines Platzhalters Schlüssel, wenn Gradle baut die App, Art von wie so:

     android.applicationVariants.all { variant -> variant.outputs.each { output -> output.processManifest.doLast{ replaceInManifest(output, 'P_AUTHORITY', variant.applicationId) } } } def replaceInManifest(output, fromString, toString) { def manifestOutFile = output.processManifest.manifestOutputFile def updatedContent = manifestOutFile.getText('UTF-8').replaceAll(fromString, toString) manifestOutFile.write(updatedContent, 'UTF-8') } 

    Und dann im Manifest:

     <provider android:name=".core.MyContentProvider" android:authorities="P_AUTHORITY" android:exported="false"/> 

    Das ist schon ein paar Mal praktisch

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.