Я играю с функцией Android, shortcut и у меня есть следующий XML:Использование переменных в функции ярлыков Android xml?
<shortcuts
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<shortcut
android:shortcutId="some_id"
android:enabled="true"
android:icon="@drawable/ic_icon"
android:shortcutShortLabel="@string/short_label"
android:shortcutLongLabel="@string/long_label"
tools:targetApi="n_mr1">
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="my.package"
android:targetClass="my.package.MainActivity" />
</shortcut>
</shortcuts>
Имея это так, она работает без проблем.
Могу ли я использовать переменные в файле XML ярлыки, как я могу сделать, например, в AndroidManifest.xml
:
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE"/>
Так что я хотел бы иметь такое же поведение с ярлыками, но почему-то не работает:
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="${applicationId}"
android:targetClass="my.package.MainActivity" />
У вас есть идеи, как использовать переменные здесь?
Поэтому я хотел бы сделать это в том, что у нас есть несколько сред с различными именами пакетов: my.package.test
, my.package.debug
, my.package.hotfix
и т.д ...
Использование струнных ресурсов было хорошей идеей, однако это тоже не сработает. Единственное решение состоит в том, что на данный момент есть несколько файлов ресурсов для каждого типа сборки, но, по крайней мере, это работает. Я хотел избежать этого, но, похоже, сейчас я не могу. – ktamas
@ktamas: В принципе, возможно создать плагин Gradle, который будет выполнять манифесты замены стиля слияния, которые приводят к ресурсам. Это может занять нечто вроде 'res-template/xml/shortcut.xml' и генерировать правильные XML-ресурсы в' build/generated/'на основе вариантов сборки и предоставленных заполнителей. Я не знаю, что кто-то построил это, и было бы излишним, если бы вы бросили один из них только для этой ситуации. – CommonsWare
Использование строкового ресурса не работает, он будет печатать адрес, а не значение для этого адреса. – for3st