gradle - Android Gradle Build Resource.getIdentifier()始终返回0

标签 gradle android-gradle-plugin

我正在开始将游戏移植到适用于Android的新Gradle Build系统上。
我正在使用Resource.getIdentifier()方法按名称而不是ID加载某些资源。但是,自从切换到Gradle构建以来,此调用始终返回0。 Assets 包含在构建的jar中,并且dex文件中的R.class包含了我所有的资源和ID,这使我很茫然。作为解释。在更改为gradle构建之前,此代码有效。我的build.gradle如下:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.7.+'
    }
}
apply plugin: 'android'

dependencies {
    compile 'com.android.support:support-v4:18.0.+'
}

android {
    compileSdkVersion 18
    buildToolsVersion "19"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 18
    }

    buildTypes {
        debug {
            packageNameSuffix ".debug"
        }
        release {
            runProguard true
            proguardFile getDefaultProguardFile('proguard-android.txt')
        }
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        instrumentTest.setRoot('tests')
    }
}

TIA。

最佳答案

天哪!我的问题是Resources.getIdentifer()接受3个参数,其中之一是程序包名称。我的gradle脚本的debug部分将“.debug”添加到设备上的软件包名称。解决方案是删除build.gradle中的.debug后缀。

关于gradle - Android Gradle Build Resource.getIdentifier()始终返回0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21174491/

相关文章:

java - 将Spring Web项目打包到没有Spring Boot的jar(uber-jar)中(非spring-boot项目)

android - 在模块中发现重复的类 com.google.android.gms.internal.vision.zze

android - GCM google-services.json

android - 将 Android 项目从 Github 导入 Android Studio

java - Spring Boot(使用 Gradle)+WebSphere Liberty = 未找到上下文根

gradle - 使用实现项目时,可传递引用不起作用

android - 如何使用 gradle 将 Reflections 库集成到 android studio 中并保存和收集

android - 打包有依赖的Android AAR

android - 使用 Gradle 覆盖 GCM 权限包前缀

gradle - 将 `.klib` 库添加到 kotlin 多平台