Aapt dump badging of apk does not list any launchable activity for activity-alias

572 Views Asked by At

I recently changed my AndroidManifest.xml with the following changes:

  • Changed my main launcher activity's name to NewMainActivity.
  • Added an activity-alias with old activity name pointing to new activity.

Now, when I do aapt dump badging <apk-path>| grep launchable-activity, there is no output. This happened after the above changes.

  <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>
  • How do I fix it?
  • Is there any new version of aapt( I am using Android Asset Packaging Tool, v0.2-3051502) wherein this issue is resolved?
1

There are 1 best solutions below

0
On
  1. You can add intent filter with some categories like MAIN, LAUNCHER & DEFAULT. Something like this:
<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>

Like this your NewMainActivity will be working fine and will be registered as launchable activity and your OldMainActivity will work as alias here.

  1. It will be same in later versions too, as for example this one's here