>source

CFBundleAlternateIcons를 사용하여 내 앱 아이콘을 변경하려고했지만 아무 일도 일어나지 않습니다. 실제로 Flutter SDK 용 플러그인을 사용하고 있습니다. flutter_dynamic_icon , 플러그인을 사용하여 아이콘을 변경하면 아무 문제가없는 것처럼 '앱 아이콘 변경 성공'이라고 표시됩니다.

몇 가지 문제 해결을 수행 한 후 미리보기에서 아이콘을 다시 저장하여 PNG 파일인지 확인하고 결과 변경없이 해당 알파 채널을 제거해 보았습니다.

내가 도대체 ​​뭘 잘못하고있는 겁니까? Info.plist 문제입니까? 내 아이콘이 잘못 저장 되었습니까? 아이콘 변경을 잘못 요청하고 있습니까?

다음은 dart lang에서 아이콘을 변경하는 방법입니다.

try {
  if (await FlutterDynamicIcon.supportsAlternateIcons) {
    await FlutterDynamicIcon.setAlternateIconName("dark");
    print("App icon change successful");
    return;
  }
} on PlatformException {} catch (e) {
  print("icon couldn't be changed");
}

이것이 내가 보는 것입니다. 클릭하여 변경해도 상관 없습니다. dark 아이콘 또는 light 상.

내 Info.plist/파일 구조는 다음과 같습니다.

<key>CFBundleIcons</key>
<dict>
    <key>CFBundleAlternateIcons</key>
    <dict>
        <key>light</key>
        <dict>
            <key>UIPrerenderedIcon</key>
            <string>NO</string>
            <key>CFBundleIconFiles</key>
            <array>
                <string>light</string>
            </array>
        </dict>
        <key>dark</key>
        <dict>
            <key>UIPrerenderedIcon</key>
            <string>NO</string>
            <key>CFBundleIconFiles</key>
            <array>
                <string>dark</string>
            </array>
        </dict>
    </dict>
    <key>CFBundlePrimaryIcon</key>
    <dict>
        <key>CFBundleIconFiles</key>
        <array>
            <string>dark</string>
        </array>
        <key>UIPrerenderedIcon</key>
        <false/>
    </dict>
</dict>


  • 답변 # 1

    편집 : 이제는 대체 아이콘을 별도의 폴더에 배치하도록 조언하는 온라인 가이드에도 불구하고 내 문제를 알아 냈습니다. Runner 예배 규칙서.

    <시간 />

    나는 정의하여 이것을 고쳤다. CFBundleIconFilesInfo.plist 다음과 같이. 미묘한 변화이지만 그 과정을 만들거나 깨뜨릴 수 있습니다.

    전에:

    <key>CFBundleIcons</key>
    <dict>
        <key>CFBundleAlternateIcons</key>
        <dict>
            <key>light</key>
            <dict>
                <key>UIPrerenderedIcon</key>
                <string>NO</string>
                <key>CFBundleIconFiles</key>
                <array>
                    <string>light</string>
                </array>
            </dict>
            <key>dark</key>
            <dict>
                <key>UIPrerenderedIcon</key>
                <string>NO</string>
                <key>CFBundleIconFiles</key>
                <array>
                    <string>dark</string>
                </array>
            </dict>
        </dict>
        <key>CFBundlePrimaryIcon</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>dark</string>
            </array>
            <key>UIPrerenderedIcon</key>
            <false/>
        </dict>
    </dict>
    
    

    후:

    <key>CFBundleIcons</key>
    <dict>
        <key>CFBundlePrimaryIcon</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>light</string>
            </array>
            <key>UIPrerenderedIcon</key>
            <false/>
        </dict>
        <key>CFBundleAlternateIcons</key>
        <dict>
            <key>light</key>
            <dict>
                <key>CFBundleIconFiles</key>
                <array>
                    <string>light</string>
                </array>
                <key>UIPrerenderedIcon</key>
                <false/>
            </dict>
            <key>dark</key>
            <dict>
                <key>CFBundleIconFiles</key>
                <array>
                    <string>dark</string>
                </array>
                <key>UIPrerenderedIcon</key>
                <false/>
            </dict>
        </dict>
    </dict>
    
    

  • 이전 ios - SwiftUI는 스택 요소를 전경으로 가져옵니다
  • 다음 mule4 - mule 4 domain project를 다른 mule 앱의 maven 부모 프로젝트로 사용할 수 있나요?