前言:在开发react native 相关app的时候,需要通过编程方式修改app应用图标,特此记录
1. 引入react-native-change-icon
npm i react-native-change-icon
2. 准备好备选的icon(IOS和安卓)根据文档说明加到对应的位置
注意:在添加IOS 备选icon的的Contents.json文件最后需要加上一下代码
"properties" : {
"pre-rendered" : true,
"localizable" : false
}
3. 配置环境
IOS端:
(1)设置默认Icon,勾选‘Include all app icon assets’
(2)在.plist文件后面添加以下代码
<key>CFBundleIcons</key>
<dict>
<key>CFBundleAlternateIcons</key>
<dict>
<key>AppIcon2</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>AppIcon2</string>
</array>
<key>UIPrerenderedIcon</key>
<false/>
</dict>
</dict>
</dict>
安卓端:
在AndroidManifest.xml文件添加
</activity-alias>
<activity-alias
android:name="com.<项目名>.MainActivitylogo_2"
android:enabled="false"
android:exported="true"
android:icon="@mipmap/logo_2"
android:targetActivity=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
注意:如果你的项目有多个flovar,android:name需要根据build.gradle文件中flovar对应的applicationId修改,如applicationId
“org.reactjs.native.testapp”,那么android:name="org.reactjs.native.testapp.MainActivitylogo_2"
4.使用
import {changeIcon, getIcon} from 'react-native-change-icon';
changeIcon(name)
//在此文章事例中name在IOS端为‘AppIcon2’,在安卓端为‘logo_2’