2015-08-27 26 views
9

My Android bildirim dosyası uygulama adını tanımlar neden olur: app_name için İlgili giriş benim yapı içinde,Gradle resValue şöyle yinelenen dize kaynakları

Şimdi res/değerler/strings.xml bulunmaktadır

android:label="@string/app_name" 

aşağıdaki gibi .gradle, ben beta yapı için uygulama adı yeniden tanımlamak: Ben paketi araya zaman

buildTypes { 

    beta { 
     applicationIdSuffix ".beta" 
     debuggable true 
     resValue "string", "app_name", "MyTest Beta" 
    } 
} 

Ancak, Gradle yinelenen bir dize kaynak şikayet ediyor.

Sadece app_name belirtecini string.xml dosyasından kaldırabilirim. Ancak, bu durumda, Android Studio manifest dosyasında bir sorun bildirir.

Bunu nasıl düzeltirim? Saygılarımızla.

+0

"alias" ı denediniz mi? ' @ string/app_name_alias' xml ve 'resValue 'dizgisinde", "app_name_alias", "MyTest Beta", (android stüdyosu kaynaklarda bir hata gösterecektir) en az derleme – Selvin

cevap

5

'resValue' ile karıştırılmamalıdır. Debug'daki diğer dizeleri de yeniden tanımlayabilmenizi sağlayan hata ayıklama kaynaklarını kullanabilirsiniz. Aşağıdaki dosyayı oluşturun ve orada 'app_name' dizesini yeniden tanımlayın.

src/debug/res/values/strings.xml 

Sadece ben de aynı sorunu rastladı sizin build.gradle en sourceSets

debug.setRoot('build-types/debug') 
3

aşağıdaki gibi bir şey yok emin olun. Benim çözümüm Manifest-placeholder'u kullanmaktır. senin defaultConfig kapanması

<application 
    android:label="${APP_NAME}" 
    tools:replace="android:label"> 

, değerini

defaultConfig { 
    addManifestPlaceholders([APP_NAME: "@string/app_name"]) 
} 

set Ve tatlar bu değeri değiştirin.

buildTypes { 
    beta { 
     applicationIdSuffix ".beta" 
     debuggable true 
     addManifestPlaceholders([APP_NAME: "MyTest Beta"]) 
    } 
} 

Dezavantajı: lezzet

  • hardcode appname. Bir kaynak kullanımını resValue yaratmak olan Manifest-placeholder ve resValue birleştirebilir ve kaynağa android:label değiştirmek için,

dezavantajı gidermek için (ki ya bir anlaşma olabilir veya olmayabilir).