如何在Android Studio中包含来自其他模块的字符串

时间:2013-06-01 23:40:53

标签: android gradle android-studio

我正在尝试通过Android Studio从Eclipse转换我的项目。我的主要项目是使用Jira Mobile Connect for Android作为模块。

我的主项目AndroidManifest.xml引用了Module项目中的字符串(Eclipse中的库项目)。

<activity
    android:name="com.atlassian.jconnect.droid.activity.FeedbackActivity"
    android:label="@string/jconnect.droid.create_feedback" >
</activity>

我收到以下错误。

android-apt-compiler: [MyProject] C:\dev\projects\android\MyProject\AndroidManifest.xml:92: error: Error: No resource found that matches the given name (at 'label' with value '@string/jconnect.droid.create_feedback').

我可以从命令行运行“gradle assemble”而不会出错。

这是我的项目build.gradle文件。

buildscript {
    println 'Running gradle.'
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project('../jiraconnect-android/jiraconnect-android-main')
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 17
    }

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

我还有一个settings.gradle文件:

include ':MyHouse', '../jiraconnect-android/jiraconnect-android-main'

我的Jira Mobile Connect模块具有以下build.gradle文件:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android-library'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

android {
    compileSdkVersion 8
    buildToolsVersion "17.0.0"

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

1 个答案:

答案 0 :(得分:2)

您将要在Android Studio中设置其他模块。您可以通过确保子模块具有build.gradle来实现此目的,在主项目的settings.gradle中提及项目名称,并将子模块设置为主项目的build.gradle中的依赖项。完成项目组装完成后所做的一切(准确地说就是assembleResources),所有strings.xml文件将合并为一个,并且将引入子模块中定义的所有字符串。