2017-03-06 15 views
1

Android Studio 2.2 - > 2.3を今アップグレードしましたが、今まで持っていなかったAndroid Studioで自分のアプリを構築するときにコンパイラーエラーが発生しました。Android Studio 2.3:androidの文字列リソースを使用できません:versionName

Error:No resource found that matches the given name (at 'versionName' with value '@string/BRAND_VERSION'). 

これは文字列リソースです。

<string name="BRAND_VERSION">2.0</string> 

これはマニフェストからの関連セクションです。

<manifest package="com.metaswitch.cp.unbrandedpackage" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:versionCode="5" 
     android:versionName="@string/BRAND_VERSION"> 

Android documentationによれば、文字列リソースは、マニフェストまたはbuild.gradleにversionNameで許可されています。

これは私のアプリに固有の問題ではありません。私はこれで再編集することができますAndroid sample

それは私のためにうまく構築し、インストールされます。この単一の行をbuild.gradleのversionNameに変更すると(strings.xmlからランダムな文字列リソースを選ぶ)、同じエラーで失敗します。

// versionName "1.0" 
versionName "@string/add_task" 

これはAndroidサンプルのbuild.gradleです(私の編集はversionNameになります)。

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion rootProject.ext.compileSdkVersion 
    buildToolsVersion rootProject.ext.buildToolsVersion 

    defaultConfig { 
     applicationId "com.example.android.architecture.blueprints.todomvploaders" 
    minSdkVersion rootProject.ext.minSdkVersion 
    targetSdkVersion rootProject.ext.targetSdkVersion 
    versionCode 1 
    // I really want to use a string resource here! 
    // versionName "1.0" 
    versionName "@string/add_task" 

    testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner' 
} 

buildTypes { 
    debug { 
     minifyEnabled true 
     // Uses new built-in shrinker http://tools.android.com/tech-docs/new-build-system/built-in-shrinker 
     useProguard false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguardTest-rules.pro' 
    } 

    release { 
     minifyEnabled true 
     useProguard true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguardTest-rules.pro' 
    } 
} 

// If you need to add more flavors, consider using flavor dimensions. 
productFlavors { 
    mock { 
     applicationIdSuffix = ".mock" 
    } 
    prod { 

    } 
} 

// Remove mockRelease as it's not needed. 
android.variantFilter { variant -> 
    if(variant.buildType.name.equals('release') 
      && variant.getFlavors().get(0).name.equals('mock')) { 
     variant.setIgnore(true); 
    } 
} 

// Always show the result of every unit test, even if it passes. 
testOptions.unitTests.all { 
    testLogging { 
     events 'passed', 'skipped', 'failed', 'standardOut', 'standardError' 
    } 
} 
buildToolsVersion '25.0.0' 

}

/* 
Dependency versions are defined in the top level build.gradle file. This helps keeping track of 
all versions in a single place. This improves readability and helps managing project complexity. 
*/ 
dependencies { 
    // App's dependencies, including test 
    compile "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion" 
    compile "com.android.support:cardview-v7:$rootProject.supportLibraryVersion" 
    compile "com.android.support:design:$rootProject.supportLibraryVersion" 
    compile "com.android.support:recyclerview-v7:$rootProject.supportLibraryVersion" 
    compile "com.android.support:support-v4:$rootProject.supportLibraryVersion" 
    compile "com.android.support.test.espresso:espresso-idling-resource:$rootProject.espressoVersion" 
    compile "com.google.guava:guava:$rootProject.guavaVersion" 
// Dependencies for local unit tests 
testCompile "junit:junit:$rootProject.ext.junitVersion" 
testCompile "org.mockito:mockito-all:$rootProject.ext.mockitoVersion" 
testCompile "org.hamcrest:hamcrest-all:$rootProject.ext.hamcrestVersion" 

// Android Testing Support Library's runner and rules 
androidTestCompile "com.android.support.test:runner:$rootProject.ext.runnerVersion" 
androidTestCompile "com.android.support.test:rules:$rootProject.ext.runnerVersion" 

// Dependencies for Android unit tests 
androidTestCompile "junit:junit:$rootProject.ext.junitVersion" 
androidTestCompile "org.mockito:mockito-core:$rootProject.ext.mockitoVersion" 
androidTestCompile 'com.google.dexmaker:dexmaker:1.2' 
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2' 

// Espresso UI Testing 
androidTestCompile "com.android.support.test.espresso:espresso-core:$rootProject.espressoVersion" 
androidTestCompile "com.android.support.test.espresso:espresso-contrib:$rootProject.espressoVersion" 
androidTestCompile "com.android.support.test.espresso:espresso-intents:$rootProject.espressoVersion" 

// Resolve conflicts between main and test APK: 
androidTestCompile "com.android.support:support-annotations:$rootProject.supportLibraryVersion" 
androidTestCompile "com.android.support:support-v4:$rootProject.supportLibraryVersion" 
androidTestCompile "com.android.support:recyclerview-v7:$rootProject.supportLibraryVersion" 
androidTestCompile "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion" 
androidTestCompile "com.android.support:design:$rootProject.supportLibraryVersion" 

}

+0

'minSdkVersion'の値は、build.gradleビルドスクリプトで指定されていない場合にのみ使用されます.Gradleビルドスクリプトで指定された場合、menifest値は無視され、誤解を招く可能性があるため、あいまいさを避けるために削除する必要があります。 –

+0

あなたの 'build.gradle'を投稿してください – pskink

+0

私のためにうまく動作します。 –

答えて

1

私はAndroidのメーカーをアップグレードした後、同じ問題を抱えていました。設定でインスタント・ランをオフにすると、アプリが再び実行されました。

+0

うわー!私はこれが根本的な原因であるとは想像もできません。私もあまりにも正確に同じエラーがあった、それは私がインスタント実行を無効にしたときに消えた.... Googleの部分で変だ! – Yogesh

0

Google issue trackerを参照すると、が固定となっています。これはAndroidスタジオ3.0.0-alpha6ビルドで利用可能です。

問題が解決しない場合は、Google issue trackerで報告してください。

関連する問題