我已经看到所有指向各种指南的帖子,声称让 ABS 与 IntelliJ (Android Studio) 一起工作,包括这里和这里。
对于最新版本的 ABS 和 AS,它们不起作用。
通常,教程与 IDE 不匹配。超越这一点,并假设允许使用 gradle 而不是 maven 执行“导入模块”,我最终得到:
Plugin with id 'android-library' not found
有没有人有让最新版本的 ABS 与最新版本的 AS 一起使用的教程?
Fwiw,我尝试使用 Eclipse 路线进行导出,然后尝试将其引入 AS(这绝对不是我的首选路径),但我最终得到一堆“无法执行 dex:多个 dex 文件定义...”围绕杰克逊的错误。
如果它有用,这里是我的 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,它确实构建了,我可以将它部署到模拟器上并在模拟器上运行),但你去吧。