1

我已经看到所有指向各种指南的帖子,声称让 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,它确实构建了,我可以将它部署到模拟器上并在模拟器上运行),但你去吧。

4

2 回答 2

0

From my update to the question, above:

What I ultimately ended-up doing:

As described by others

1) Download and extract ABS
2) Save it in its own folder under your primary project (say, ActionBarSherlock)
3) Import it as a Module (new: use Maven / pom.xml - make sure Export is checked)

Pulled from other sources

4) Exclude the ActionBarSherlock/target directory (Open Module Settings)
5) If your primary project uses the support library, change that dependency to Provided (Open Module Settings)

Again, I'm not sure why this was so difficult, or if I've done it correctly, or that there aren't any issues yet to be found (I have an empty Activity which extends SherlockActivity, it does build, and I can deploy it to, and run it on, an emulator), but there you go.

UPDATE
This configuration ended up not working. How or why it fell apart, I don't know. But after restarting AS, it fell apart. Following the steps here - again - did, this time, get it working.

于 2013-08-09T22:57:03.940 回答
0

对我来说,以下工作正常:

复制 actionbarsherlock 目录到你的项目根目录

MyAppProject
|-actionbarsherlock
|--build.gradle
|-MyApp
| --build.gradle
| -build.gradle
| -settings.gradle

actionbarsherlock 的 build.gradle

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}


apply plugin: 'android-library'

dependencies {
    compile 'com.android.support:support-v4:18.0.+'
}

android {
    compileSdkVersion 17
    buildToolsVersion '17.0.0'

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            res.srcDirs = ['res']
        }
    }
}

MyApp 的 build.gradle

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.android.support:support-v4:18.0.+'
    compile project(':actionbarsherlock')
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 17
    }
}

设置.gradle

include ':MyApp', ':actionbarsherlock'

MyAppProject build.gradle 中没有任何内容

Next 右键单击​​您的 MyAppProject > 打开模块设置并在模块部分导入模块并选择 actionbarsherlock 目录。应用并验证重新打开模块设置,转到模块,单击 YourApp 并验证依赖项是否在范围编译上有 actionbarsherlocj。如果是,你准备好了。

于 2013-08-07T19:33:39.097 回答