【问题标题】:ActionBarSherlock / IntelliJ (Android Studio) - Newest VersionsActionBarSherlock / IntelliJ (Android Studio) - 最新版本
【发布时间】:2013-08-12 02:57:18
【问题描述】:

我已经看到所有指向各种指南的帖子,声称让 ABS 与 IntelliJ (Android Studio) 一起工作,包括 herehere

对于最新版本的 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


【解决方案1】:

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

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

我的应用项目
|-actionbarsherlock
|--build.gradle
|-我的应用
|--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
    }
}

settings.gradle

include ':MyApp', ':actionbarsherlock'

MyAppProject build.gradle 中没有任何内容

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

【讨论】:

  • 尝试导入模块时,我得到:找不到任何与 com.android.support:support-v4:18.0.+ 匹配的版本。要求::actionbarsherlock:未指定。当然,我确实安装了该版本并在项目中使用(在我的 libs 目录中 - 我不知道版本是否为 18,但我确实下载了该版本)。尽管如此,这种调整似乎比它应该的要复杂。
  • @agonist_ 的答案似乎没问题(我在我的项目中做了同样的事情)。要修复该错误,您应该更新您的 SDK 并添加或更新一些附加功能:Android Support Repository & Android Support Library
  • 是的,如果您安装了所有最新版本的附加功能,请检查您的 SDK 管理器
  • 我如何检查那个jar实际上是哪个版本(SDK管理器有它是18,但可能与项目中的不一样)?
【解决方案2】:

根据我对上述问题的更新:

我最终做了什么:

其他人描述的

1) 下载并解压 ABS
2) 将其保存在您的主要项目(例如 ActionBarSherlock)下的自己的文件夹中
3) 将其作为模块导入(:使用 Maven / pom.xml - 确保导出 已检查)

来自其他来源

4) 排除 ActionBarSherlock/target 目录(打开模块 设置)
5)如果您的主要项目使用支持库,请更改 对提供的依赖(打开模块设置)

再次,我不知道为什么这会如此困难,或者我是否正确地完成了它,或者还没有发现任何问题(我有一个扩展 SherlockActivity 的空 Activity,它确实构建,我可以将它部署到模拟器上并在模拟器上运行),但你去吧。

更新
此配置最终无法正常工作。我不知道它是如何或为什么分崩离析的。但是重启AS后就崩溃了。按照here 的步骤 - 再次 - 做了,这一次,让它工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多