Jon*_*nik 14 ant android android-build android-support-library
我正在尝试构建一个(继承的)Android项目.我正在使用Ant和命令行工具(和IDEA).
在styles.xml中,有些引用无法解析,例如:
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
Run Code Online (Sandbox Code Playgroud)
这是我遇到的原始错误:
[...]/res/values/styles.xml:8: error: Error retrieving parent for item:
No resource found that matches the given name '@style/Theme.AppCompat.Light'.
Run Code Online (Sandbox Code Playgroud)
然后我注意到project.properties这个appcompat引用在我的(OS X)机器上被破坏了:
target=android-18
android.library.reference.1=../../../../adt-bundle-linux-x86_64/sdk/extras/android/support/v7/appcompat
Run Code Online (Sandbox Code Playgroud)
我尝试通过使相对于的引用来解决这个问题${sdk.dir}:
android.library.reference.1=${sdk.dir}/extras/android/support/v7/appcompat
Run Code Online (Sandbox Code Playgroud)
所以现在这条道路应该是正确的.但是现在我跑的时候ant debug:
BUILD FAILED
/opt/android-sdk-macosx/tools/ant/build.xml:573:
/opt/android-sdk-macosx/extras/android/support/v7/appcompat resolve to a
path with no project.properties file for project /Users/joka/devel/project/
Run Code Online (Sandbox Code Playgroud)
那么,有什么想法吗?建立这个项目最简单的方法是什么?
(请注意,Ecplise特定的建议对我没用.)
编辑:Android SDK安装如下所示:

正如Jay指出的那样,只有相对路径才能在Unix/Mac上运行.
为了使Ant构建起作用,我还需要在我的情况下使用命令为appcompat项目生成build.xml :android update project -p <dir>
/opt/android-sdk-macosx/tools/android update project
-p /opt/android-sdk-macosx-r22.0.1/extras/android/support/v7/appcompat
Run Code Online (Sandbox Code Playgroud)
我的确切配置是:
android.library.reference.1=../../../../../../../opt/android-sdk-macosx/extras/??android/support/v7/appcompat
(这也适用local.properties,我认为这是一个更好的地方,因为相同的路径不适用于所有开发人员.)
我只是将我的评论从6个月前提升为有人建议的答案.
顺便说一下,既然我实际上对Android开发有所了解,我会敦促任何有机会抛弃Ant的人,并研究一下新的基于Gradle的构建系统,这种构建系统非常甜蜜.它具有CI友好性,可以轻松实现有用的自动化(例如,为不同的构建类型使用不同的包名称和应用程序图标).遇到问题时,Stack Overflow会有所帮助.
使用Gradle支持库,您将跳过上述所有麻烦,并且只需执行以下操作:
dependencies {
compile "com.android.support:appcompat-v7:18.0.+"
}
Run Code Online (Sandbox Code Playgroud)
小智 6
我遇到了同样的问题,所以我尝试使用相对路径,这为我解决了问题.看起来只有相对路径才能与android.library.reference一起使用.我做了一个快速搜索来验证这一点,并遇到了这个stackoverflow链接,它指示绝对路径将在Windows上与android.library.reference一起使用,但在Unix或Mac上则不行.
和平.
| 归档时间: |
|
| 查看次数: |
20839 次 |
| 最近记录: |