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

cbe*_*din 9 android gradle android-studio

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

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

<activity
    android:name="com.atlassian.jconnect.droid.activity.FeedbackActivity"
    android:label="@string/jconnect.droid.create_feedback" >
</activity>
Run Code Online (Sandbox Code Playgroud)

我收到以下错误.

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').
Run Code Online (Sandbox Code Playgroud)

我可以从命令行运行"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']
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我还有一个settings.gradle文件:

include ':MyHouse', '../jiraconnect-android/jiraconnect-android-main'
Run Code Online (Sandbox Code Playgroud)

我的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']
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

ast*_*ryk 2

您将需要在 Android Studio 中设置其他模块。为此,您需要确保子模块具有 build.gradle,在主项目的 settings.gradle 中提及项目名称,并将子模块设置为主项目的 build.gradle 中的依赖项。完成所有这些后,当项目组装(确切地说是 assembleResources)时,所有 strings.xml 文件将合并为一个,并且子模块中定义的所有字符串都将被引入。