天天看點

更改啟動頁和閃屏頁對調導緻android app的名字發生變化解決辦法

作者:3tang

write by tim@20230620

今天聚合發現一個問題,就是母包和管道包合并的時候,把母包啟動頁和聚合sdk閃屏頁對調之後,程式無BUG,正常運作,但是發現app裝上去app name變成了 splashActivity.

apktool 再次反編譯合并包,檢視清單

<?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" android:compileSdkVersion="23" android:compileSdkVersionCodename="6.0-2438415" package="com.stang.xyttlj" platformBuildVersionCode="32" platformBuildVersionName="12">
    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <application android:allowBackup="true" android:appComponentFactory="androidx.core.app.CoreComponentFactory" android:dataExtractionRules="@xml/data_extraction_rules" android:extractNativeLibs="false" android:fullBackupContent="@xml/backup_rules" android:icon="@drawable/st_2475_icon" android:label="新倚天屠龍記H5" android:name="com.stang.channeljshy.JSHYApplication" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.三唐聚合sdk" android:usesCleartextTraffic="true">
        <activity android:exported="true" android:launchMode="singleInstance" android:name="com.stang.xyttlj.MainActivity"/>
        <provider android:authorities="com.stang.xyttlj.fileProvider" android:exported="false" android:grantUriPermissions="true" android:name="androidx.core.content.FileProvider">
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/filepaths"/>
        </provider>
        <meta-data android:name="ST_CHANNEL_ID" android:value="65"/>
        <meta-data android:name="ST_FX_ID" android:value="2475"/>
        <activity android:exported="true" android:label="@string/title_activity_splash" android:name="com.stang.jhsdk.SplashActivity" android:theme="@style/Theme.三唐聚合sdk.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:launchMode="singleInstance" android:name="com.santang.sdk.activity.UpdateActivity" android:theme="@style/st_transparent_activity"/>
        <activity android:configChanges="keyboardHidden|orientation" android:launchMode="singleInstance" android:name="com.santang.sdk.activity.UserAgreement"/>
        <service android:name="com.santang.sdk.service.FloatViewService"/>
        <activity android:exported="true" android:name="com.stang.aggSdk.SplashActivity"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="com.zhongtui.sdk.activity.NoticeActivity" android:theme="@android:style/Theme.Translucent"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="com.zhongtui.sdk.activity.ProtocolActivity" android:theme="@android:style/Theme.Translucent"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="com.zhongtui.sdk.activity.CertificationActivity" android:theme="@android:style/Theme.Translucent"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="com.zhongtui.sdk.activity.RetrievePasswordActivity" android:theme="@android:style/Theme.Translucent"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="com.zhongtui.sdk.activity.SigninActivity" android:theme="@android:style/Theme.Translucent"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="com.zhongtui.sdk.activity.LoginActivity2" android:theme="@android:style/Theme.Translucent"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="com.zhongtui.sdk.activity.Account_manage_Activity" android:theme="@android:style/Theme.Translucent"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="com.zhongtui.sdk.activity.PayActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
        <service android:name="com.zhongtui.sdk.service.QueryOrderService"/>
    </application>
</manifest>           

application 裡面的android:label="新倚天屠龍記H5" label屬性正确的,但是為什麼就app名字變成了SplashActivity了呢?

更改啟動頁和閃屏頁對調導緻android app的名字發生變化解決辦法

就重點查smali代碼,最終找到原因:啟動頁的android:label優先級高于application 裡面的android:label

<activity android:exported="true" android:label="@string/title_activity_splash" android:name="com.stang.jhsdk.SplashActivity" android:theme="@style/Theme.三唐聚合sdk.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>           

是以,隻要更改啟動頁的android:label即可解決這個問題

在python打包腳本裡添加如下代碼即可解決問題

splash_activity_elem.attrib['{' + androidNS + '}exported'] = 'true'
    splash_activity_elem.attrib['{' + androidNS + '}label'] = fx['game_name']