안드로이드 프로그램을 사용하여 제품Flavors에서resConfigs를 설정할 때 주의사항

6887 단어 Android

개요


resConfigs를 제품Flavors에 설정할 때defaultConfig에 설정된 항목을 덮어쓰지 않고 추가합니다.

resConfigs란?


Android 응용 프로그램의build 입니다.이것은gradle 파일에서 응용 프로그램에 사용되는 언어 자원을 기술하는 항목입니다.
https://developer.android.com/studio/build/shrink-code.html?hl=ja#unused-alt-resources
recConfig를 적절하게 설정하면 apk 파일의 크기를 줄일 수 있습니다.
https://qiita.com/tatsuhama/items/814471b79c5d572f77e9

예제

android {
    defaultConfig {
        ...
        resConfigs "en", "ja" // 英語と日本語のみ対応
    }
}

ProductFlavors란 무엇입니까?


프레젠테이션/공식, 유상/무료 등 응용 프로그램의 구축 방법을 정의할 수 있다
https://developer.android.com/studio/build/build-variants.html#product-flavors

예제)

productFlavors {
    japan {
        // 国内向けビルド
        applicationIdSuffix ".japan"
    }
    global {
        // 海外向けビルド
        applicationIdSuffix ".global"
    }
}

productFlavors에서resConfigs 설정


이렇게 설정할 수 있어요.
productFlavors {
    japan {
        // 国内向けビルド
        applicationIdSuffix ".japan"
    }
    global {
        // 海外向けビルド
        applicationIdSuffix ".global"
        resConfigs "en" // 英語リソースだけ含めたい
    }
}

홀린 곳


하고 싶은 일

  • 국내용 응용: 영어와 일본어 이외의 언어만 지원(기타 언어 자원을 삭제하고 싶다)
  • 해외용 응용: 영어만 지원(일본어 자원도 삭제하고 싶다)
  • 묘사

    android {
        defaultConfig {
            ...
            resConfigs "en", "ja" // 英語と日本語以外のリソースは削除
        }
    
        productFlavors {
            japan {
                // 国内向けビルド
                applicationIdSuffix ".japan"
            }
            global {
                // 海外向けビルド
                applicationIdSuffix ".global"
                resConfigs "en" // 英語リソースだけ含めたい
            }
        }
    }
    
    

    문제.


    글로벌의 플라보에도 일본어 자원이 포함되어 있습니다...
    apk Analyzer에서 연 결과

    까닭

    resConfigs에 설정된 항목은 덮어쓰기가 아닌 추가

    원인 상세 정보

    recConfigs에서 command키(※ Mac의 경우)를 누르면서 클릭
    BaseFlavor.class 오픈, 코드를 보십시오

    확실히add.
    기본적으로 ["en" , "ja"]가 설정되어 있기 때문에 "en"add["en" , "ja"]를...
    ※ 세트가 아닙니다.
    그나저나 applicationIdSuffixdd가 아니라 set입니다.

    대응


    특정 프레임defaultConfig에서 설정한 내용에서 언어를 줄이려면 defaultConfigresConfigs를 설명하지 않습니다.
    (단, 제품 Flavors의 수량이 많으면 모두 기술해야 하기 때문에 번거롭다...)

    묘사

    android {
        defaultConfig {
            ...
            // ↓ ** globalフレーバーで日本語も含まれるので記述しない **
            // resConfigs "en", "ja" // 英語と日本語以外のリソースは削除
            // ↑ ** globalフレーバーで日本語も含まれるので記述しない **
        }
    
        productFlavors {
            japan {
                // 国内向けビルド
                applicationIdSuffix ".japan"
                resConfigs "en", "ja" // 英語と日本語以外のリソースは削除
            }
            global {
                // 海外向けビルド
                applicationIdSuffix ".global"
                resConfigs "en" // 英語リソースだけ含めたい
            }
        }
    }
    
    

    총결산


    resConfigs를 제품Flavors에 설정할 때defaultConfig에 설정된 항목을 덮어쓰지 않고 추가합니다.

    좋은 웹페이지 즐겨찾기