Значок Aapt dump apk не отображает никакой активности для псевдонима активности

Недавно я изменил свой AndroidManifest.xml со следующими изменениями:

  • Изменил имя моей основной программы запуска на NewMainActivity.
  • Добавлен псевдоним активности со старым именем активности, указывающим на новую активность.

Теперь, когда я делаю aapt dump badging <apk-path>| grep launchable-activityнет вывода. Это произошло после вышеуказанных изменений.

  <activity
        android:name="com.a.b.NewMainActivity"
        ....
        android:launchMode="singleTask" >
   </activity>
   <activity-alias
        android:name="com.a.b.OldMainActivity"
        android:launchMode="singleTask" 
        android:targetActivity="com.a.b.NewMainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity-alias>
  • Как мне это исправить?
  • Существует ли какая-либо новая версия aapt(я использую Android Asset Packaging Tool, v0.2-3051502), в которой эта проблема решена?

1 ответ

  1. Вы можете добавить фильтр намерений с некоторыми категориями, такими как MAIN , LAUNCHER и DEFAULT . Что-то вроде этого:
      <activity
    android:name="com.a.b.NewMainActivity"
    ...
    android:launchMode="singleTask" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>
<activity-alias
    android:name="com.a.b.OldMainActivity"
    android:launchMode="singleTask" 
    android:targetActivity="com.a.b.NewMainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity-alias>

Как это вашNewMainActivityбудет работать нормально и будет зарегистрировано как запускаемая активность, а ваша OldMainActivity будет работать здесь как псевдоним.

  1. Так же будет и в более поздних версиях, как, например, здесь
Другие вопросы по тегам