簡體   English   中英

使用 lintOptions > abortOnError false (Android - java) 發布后語言不再更改

[英]language not changed anymore after release using lintOptions > abortOnError false (Android - java)

我已經檢查過在 2 台設備和 1 個 emu 上,我無法再使用本地化更改我的應用程序的語言。 即使我手動執行此操作,即使我 go 返回使用 git 提交經過測試且運行良好的位置。 實施很好,它已經工作了幾個月,但不適用於調試和發布版本。 它只是選擇了英語作為主要語言。

我仍然可以從 android studio 更改語言並在運行應用程序之前預覽它,但是當我在任何設備上運行該應用程序時,我無法再更改它。

我試過什么?

  • 在多個設備上運行應用程序
  • go 回到之前測試過的提交(它工作得很好,但現在不再工作了)
  • 檢查實現並嘗試更改它並提供該硬編碼值
  • 檢查 gradle(我對 gradle 不好,我認為這是問題所在)

直到現在我才弄清楚問題出在哪里。 您能告訴我 android 中可能涉及本地化的所有原因嗎? 我已經工作了大約一個星期,但我放棄了,我現在必須問。

  • 這是 gradle 代碼(我已經撤消了關於 lintOptions 的更改,但仍然不起作用)
plugins {
    id 'com.android.application'
}

android {
    compileSdk 32

    defaultConfig {
        applicationId "com.company.app"
        minSdk 21
        targetSdk 32
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    buildToolsVersion '33.0.0'
    buildFeatures {
        viewBinding true
    }
    flavorDimensions 'default'
    productFlavors {
        free {
            dimension 'default'
            applicationIdSuffix 'free'
        }
        paid {
            dimension 'default'
            applicationIdSuffix 'paid'
        }
    }

    sourceSets{
        free{
            res{
                srcDir 'src/free/res'
            }
            java{
                srcDir 'src/free/java'
            }
        }
        paid{
            res{
                srcDir 'src/paid/res'
            }
            java{
                srcDir 'src/paid/java'
            }
        }
    }
    useLibrary 'org.apache.http.legacy'
    packagingOptions {
        resources {
            excludes += ['META-INF/DEPENDENCIES', 'META-INF/NOTICE', 'META-INF/LICENSE', 'META-INF/LICENSE.txt', 'META-INF/NOTICE.txt']
        }
    }
    namespace 'com.company.app'

}


dependencies {
    implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'

    def room_version = "2.4.2"
    def lifecycle_version = "2.6.0-alpha01"

    //room
    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"

    // ViewModel
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"

    // viewModelProvider
    implementation "androidx.fragment:fragment-ktx:1.5.2"

    // LiveData
    implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
    implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version"


    // Annotation processor
    annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"

    implementation 'androidx.appcompat:appcompat:1.5.1'
    implementation 'com.google.android.material:material:1.6.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

    // google sign in
    implementation 'com.google.android.gms:play-services-auth:20.3.0'

    // google drive
    implementation 'com.google.api-client:google-api-client:2.0.0'
    implementation 'com.google.auth:google-auth-library-oauth2-http:1.3.0'
    implementation ('com.google.apis:google-api-services-drive:v3-rev20220815-2.0.0')
}
  • Java 代碼
Locale languageToSwitch = new Locale("nl");
Locale.setDefault(languageToSwitch);
Resources res = getBaseContext().getResources();
DisplayMetrics dm = Resources.getSystem().getDisplayMetrics();
Configuration config = res.getConfiguration();
config.locale = languageToSwitch;
res.updateConfiguration(config, dm);
recreate();

我試圖使緩存無效但它沒有用,它在刪除項目和 android Studio 后解決,然后從 github 再次克隆它。

如果你知道為什么會這樣,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM