Android: пользовательские атрибуты приложения, доступные менеджеру пакетов? - PullRequest
0 голосов
/ 14 февраля 2012

Для работы я поддерживаю внутренний «рынок», где новые версии приложений могут быть загружены и загружены. У меня также есть лаунчер, который может выбирать из множества наших приложений и запускать их (некоторые из них по-разному относятся к одному и тому же приложению). В настоящее время я могу заполнить этот список именем пакета и кодом версии, но я также хотел бы добавить в ветку SVN.

Я думал о наличии сценария, который бы добавлял информацию о ветвях в виде XML либо в манифест в качестве пользовательского атрибута, либо в виде отдельного файла XML. В идеале это может быть доступно публично PackageManager. Это возможно?

Или я могу программно изменить имя APK? Тогда я мог бы использовать «$ name - $ branch» в качестве нового имени.

1 Ответ

2 голосов
/ 14 февраля 2012

Я думал о том, чтобы иметь скрипт, который бы добавлял информацию о ветвях в виде XML либо в манифест в качестве пользовательского атрибута, либо в виде отдельного файла XML. В идеале это может быть доступно публично PackageManager. Возможно ли это?

Вы добавили элемент <meta-data> к элементу компонента (например, <activity>) и получили доступ к XML-содержимому метаданных через PackageManager:

    <receiver android:name="com.commonsware.cwac.wakeful.AlarmReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>

        <meta-data
            android:name="com.commonsware.cwac.wakeful"
            android:resource="@xml/wakeful"/>
    </receiver>

Компонент будет обращаться к метаданным через код, подобный следующему:

PackageManager pm=ctxt.getPackageManager();
ComponentName cn=new ComponentName(ctxt, getClass());
ActivityInfo ai=pm.getReceiverInfo(cn, PackageManager.GET_META_DATA);
XmlResourceParser xpp=ai.loadXmlMetaData(pm, "com.commonsware.cwac.wakeful");

Ваш пользовательский процесс сборки может затем настроить ресурс XML, на который указывает <meta-data>, чтобы он содержал все, что вы хотите.

В качестве альтернативы, можно ли программно изменить имя APK?

Вы можете назвать APK-файл как угодно на своем жестком диске, но я бы не стал рассчитывать, что это имя останется нетронутым в процессе установки.

...