如何在IntelliJ中引用Android模块中定义的样式?

11

我在一个模块中定义了以下样式,并希望在一个Activity上使用它作为主题。

Android模块的styles.xml:

<resources>
    <style name="MyTheme" parent="android:Theme.Light.Panel"></style>
</resources>

Android应用的AndroidManifest.xml文件:

 <activity android:name="MyActivity" android:theme="@style/MyTheme"> ... </activity>

我正在使用 IntelliJ,并且出现编译错误提示:

android-apt-compiler:AndroidManifest.xml:26:错误:找不到与给定名称匹配的资源(位于“theme”上的值为“@style/MyTheme”)。

如何在我的主应用程序中引用模块 JAR 中的样式?

谢谢。



你应该使用模块依赖而不是jar依赖,你的主应用程序应该依赖于定义样式的库模块。 - CrazyCoder
我想分发我创建的JAR文件。我可以使用其中定义的资源吗? - Ron Tesler
请查看此篇文章:http://devmaze.wordpress.com/2011/05/22/android-application-android-libraries-and-jar-libraries/ Android 库和 jar 库的主要区别是后者不能包含资源文件(例如样式)。 - CrazyCoder
已经阅读过那个页面了。我需要资源,所以那没用。 - Ron Tesler
2个回答

6
我刚刚解决了这个问题,项目如下:
  • 你有一个模块(例如moduleLib)
  • 你有另一个模块(例如moduleMain)
  • moduleMain依赖于moduleLib,并且moduleMain中引用了moduleLib的一些主题
我所做的事情如下:

1. 将moduleLib设置为库项目

(菜单->项目结构...->模块->moduleLib->Android Facet->勾选“Is Library project”)

2. 设置moduleMain依赖于moduleLib

2.1 进入moduleMain的设置(步骤与上一个相似)

2.2 切换到“Dependencies”

2.3 点击“+”,选择“module Dependency”添加moduleLib

2.4 将“scope”更改为Compile(我试过使用Provided,但是无法使用主题)

对我有效。


2

如果模块依赖正确设置,库模块的资源会自动复制并打包到应用程序模块中。也就是:依赖于模块目录,而不是jar文件。

库项目的jar输出不会打包资源。默认的Android构建工具不支持此功能。

有一个叫做apklib的特殊打包类型,由maven-android-plugin使用,可以打包资源。但是你需要使用Maven构建才能使用此功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接