【发布时间】:2013-08-12 02:57:18
【问题描述】:
我已经看到所有指向各种指南的帖子,声称让 ABS 与 IntelliJ (Android Studio) 一起工作,包括 here 和 here。
对于最新版本的 ABS 和 AS,它们不起作用。
通常,教程与 IDE 不匹配。超越这一点,并假设允许使用 gradle 而不是 maven 执行“导入模块”,我最终得到:
Plugin with id 'android-library' not found
有没有人提供最新版本的 ABS 与最新版本的 AS 一起使用的教程?
Fwiw,我尝试使用 Eclipse 路线进行导出,然后尝试将其引入 AS(这绝对不是我的首选路径),但我最终得到了一堆“无法执行 dex:多个dex 文件定义...”围绕 Jackson 的错误。
如果它有用,这里是我的 build.gradle,但我首选的解决方案将使用更多“标准”机制而不是使用它,并且还可能对其他人有用。这是文件:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
android {
compileSdkVersion 17
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']
}
instrumentTest.setRoot('tests')
}
}
还有,我的项目目录结构:
D:.
└───T-n-T
├───.gradle
│ └───1.6
│ └───taskArtifacts
├───.idea
│ ├───copyright
│ ├───libraries
│ └───scopes
├───assets
├───bin
│ ├───classes
│ │ └───com
│ │ └───pha
│ │ └───t-n-t
│ │ ├───models
│ │ └───services
│ └───res
├───build
│ ├───apk
│ ├───assets
│ │ └───debug
│ ├───classes
│ │ └───debug
│ │ └───com
│ │ └───pha
│ │ └───t-n-t
│ │ ├───models
│ │ └───services
│ ├───dependency-cache
│ │ └───debug
│ ├───incremental
│ │ ├───aidl
│ │ │ └───debug
│ │ ├───dex
│ │ │ └───debug
│ │ ├───mergeAssets
│ │ │ └───debug
│ │ └───mergeResources
│ │ └───debug
│ ├───libs
│ ├───manifests
│ │ └───debug
│ ├───res
│ │ ├───all
│ │ │ └───debug
│ │ │ ├───drawable-hdpi
│ │ │ ├───drawable-mdpi
│ │ │ ├───drawable-xhdpi
│ │ │ ├───drawable-xxhdpi
│ │ │ ├───layout
│ │ │ ├───menu
│ │ │ ├───values
│ │ │ ├───values-sw720dp-land
│ │ │ ├───values-v11
│ │ │ ├───values-v14
│ │ │ └───xml
│ │ └───rs
│ │ └───debug
│ ├───source
│ │ ├───aidl
│ │ │ └───debug
│ │ ├───buildConfig
│ │ │ └───debug
│ │ │ └───com
│ │ │ └───pha
│ │ │ └───t-n-t
│ │ ├───r
│ │ │ └───debug
│ │ │ └───com
│ │ │ └───pha
│ │ │ └───t-n-t
│ │ └───rs
│ │ └───debug
│ └───symbols
│ └───debug
├───gen
│ └───com
│ └───pha
│ └───t-n-t
├───gradle
│ └───wrapper
├───libs
├───res
│ ├───drawable-hdpi
│ ├───drawable-ldpi
│ ├───drawable-mdpi
│ ├───drawable-xhdpi
│ ├───drawable-xxhdpi
│ ├───layout
│ ├───menu
│ ├───values
│ ├───values-sw600dp
│ ├───values-sw720dp-land
│ ├───values-v11
│ ├───values-v14
│ └───xml
└───src
└───com
└───pha
└───t-n-t
├───models
└───services
应该注意的是,这代表项目在尝试使其工作失败后回滚后。
更新
我不知道这是否是进步,但它是不同的。我有我认为来自 ABS 的库项目与我的主项目坐在一起,并作为一个模块添加。我认为是这样,因为在 IDE 中,在主项目中,SherlockActivity 似乎 是可用的。我可以扩展它(某种程度上)并可以导入它的命名空间(com.actionbarsherlock.app)。我之所以这么说是因为在我尝试构建之前一切都很好,此时我得到:
Gradle: package com.actionbarsherlock.app does not exist
Gradle: cannot find symbol class SherlockActivity
并且构建失败。所以显然有些地方不太对劲。
有什么建议吗?
已解决
哇。多么痛苦。我最终做了什么:
正如其他人所描述的那样
1) 下载并解压 ABS
2) 将其保存在主项目下的自己的文件夹中(比如 ActionBarSherlock)
3) 将其作为模块导入(新:使用 Maven / pom.xml - 确保选中导出)
从其他来源提取
4) 排除 ActionBarSherlock/target 目录(打开模块设置)
5) 如果您的主项目使用支持库,则将该依赖项更改为已提供(打开模块设置)
再次,我不知道为什么这会如此困难,或者我是否正确地完成了它,或者还没有发现任何问题(我有一个扩展 SherlockActivity 的空 Activity,它确实构建,我可以将它部署到模拟器上并在模拟器上运行),但你去吧。
【问题讨论】:
-
像你一样,我从 Eclipse 导出了我的项目(使用 ABS),但这并没有真正起作用 :-( 所以我设法自定义了自己的构建文件(ActionBarSherlock build.gradle 文件 + 我的应用程序构建.gradle 文件)。如果您可以发布您的 build+settings.gradle 文件,也许我可以帮助您。另一个解决方案可能是从 GitHub 获取支持 Gradle 的最新 ABS 版本 :-)(但我没有尝试过)
-
我没有看到 settings.gradle。我已经发布了我的 build.gradle。
-
compile fileTree 用于构建依赖项。这是对 gradle 说的一种方式:“构建这些文件夹中的任何内容”。这有点粗鲁:) 对我来说,每个库或模块都应该有一个 build.gradle 文件(1 个用于 ABS,1 个用于您的应用程序)。 setting.gradle 文件告诉 gradle 他必须构建哪个项目 (gradle.org/docs/current/userguide/multi_project_builds.html)
-
这个项目本身最初是从 Eclipse 导入的。我不知道创建该 build.gradle 的原因。您可以发布建议的更改吗?另外,这个settings.gradle 应该在哪里,里面应该有什么?除了所有这些 - 真的没有样板方法可以让它工作吗?
-
好的。您能否分享您的项目的文件夹结构(带有 gradle 和清单文件的位置)?
标签: actionbarsherlock android-studio