在Android Studio中添加ActionBarSherlock

6
我正在尝试将ActionBarSherlock添加到我的现有应用程序中。这并不像我想象的那么容易。我已经尝试了Google搜索结果的前两页的所有教程,并持续了两天。在按照此教程后,以下是我所得到的结果。 我的项目结构 enter image description here ActionBarSherlock/actionbarsherlock/build.gradle
buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:0.5.+'
  }
}
apply plugin: 'android-library'

repositories {
  mavenCentral()
}

dependencies {
  compile 'com.android.support:support-v4:13.0.+'
  compile files('libs/Parse-1.3.1.jar')
}
android {
  sourceSets {
    main {
      manifest.srcFile 'src/main/AndroidManifest.xml'
    }
  }
}
android {
  compileSdkVersion 17
  buildToolsVersion "17.0.0"

  defaultConfig {
    minSdkVersion 7
    targetSdkVersion 16
  }
}

ClashMMAProject/ClashMMA/ build.gradle

  buildscript {
repositories {
    maven { url 'http://repo1.maven.org/maven2' }
}
dependencies {
    classpath 'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'android'

repositories {
mavenCentral()
 }

dependencies {
compile 'com.android.support:support-v4:13.0.+'
compile files('libs/Parse-1.3.1.jar')
compile project(':libraries:ActionBarSherlock:actionbarsherlock')
 }
android {
sourceSets {
    main {
        manifest.srcFile 'src/main/AndroidManifest.xml'
    }
}
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"

defaultConfig {
    minSdkVersion 7
    targetSdkVersion 16
}
}

setting.gradle

include ':ClashMMA', ':libraries:ActionBarSherlock:actionbarsherlock'

依赖项

enter image description here

我的错误

enter image description here

我进行了很多研究,但是仍然不能让任何东西正常工作。每次都会出现错误,因此有些地方我理解不正确。请帮忙解决,感谢您的时间。


更新

好的,在建议之后,这是我在 ClashMMAProject/ClashMMA/ build.gradle 中拥有的内容。

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

repositories {
mavenCentral()
}

dependencies {
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
compile 'com.android.support:support-v4:18.0.+'
compile files('libs/Parse-1.3.1.jar')
}
android {
sourceSets {
    main {
        manifest.srcFile 'src/main/AndroidManifest.xml'
    }
}
}
android {
compileSdkVersion 17
buildToolsVersion "18.0.1"

defaultConfig {
    minSdkVersion 7
    targetSdkVersion 16
}
}

这里出现了一个错误:

Gradle: Execution failed for task ':ClashMMA:processDebugManifest'.
        > Manifest merging failed. See console for more info.

你是否致力于使用ABS,或者可以通过最近更新的支持库使用ActionBar? - blahdiblah
不,我两种方式都可以。我尝试了ActionBar,遇到了和这个人一样的错误,找不到答案。https://dev59.com/F3jZa4cB1Zd3GeqPZRDQ - Chad Bingham
2个回答

9
我也曾经为此苦恼,因为每个我遵循的教程或答案都会漏掉一些初学者不知道要自动完成的细节。以下是我最终如何将ABS添加到我的项目中:
1. 不需要下载ABS。通过修改您现有的build.gradle文件即可完全添加它。不是您项目的build.gradle,而是您的内部文件夹,它是src目录的父文件夹。 2. 打开SDK Manager并确保您拥有Android SDK Build-tools 18.0.1(更高版本也可能有效)。 3. 按照我的build.gradle文件进行建模。这是我正在使用的确切build.gradle文件,它可以正常工作。确保您的minSdk和targetSdk与清单中的匹配:
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.6.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
    compile 'com.android.support:support-v4:18.0.+'
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 18
    }
}

4. 确保在gradle-wrapper.properties中使用gradle 1.8版本:

distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip

5.按下按钮将Gradle文件与工程同步:

enter image description here


请确保在gradle-wrapper.properties文件中使用gradle 1.8 -- 这是什么意思? - Chad Bingham
1
打开gradle-wrapper.properties文件,在distributionUrl中,如果已经指定为gradle-1.8-bin.zip,那么就没问题了。如果它指定的是类似于gradle-1.6-bin.zip这样的内容,那么只需将6更改为8即可。 - Adam Johns
gradle-wrapper.properties 文件的更改 - Adam Johns
请确保您在build.gradle中的minsdk和targetsdk与androidmanifest.xml中的minsdk和targetsdk匹配,如此所述 - Adam Johns
另外,你的编译 SDK 版本可能需要与目标 SDK 版本相同。对此我不太确定。 - Adam Johns
显示剩余3条评论

3

ActionBarSherlock的作者提供了一个.aar文件,因此您不再需要构建您在libraries文件夹中的库。您可以将您的build.gradle更改为以下内容:

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

repositories {
  mavenCentral()
}

dependencies {
  compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
  compile 'com.android.support:support-v4:13.0.+'
  compile files('libs/Parse-1.3.1.jar')
}
android {
  sourceSets {
    main {
      manifest.srcFile 'src/main/AndroidManifest.xml'
    }
  }
}
android {
  compileSdkVersion 17
  buildToolsVersion "17.0.0"

  defaultConfig {
    minSdkVersion 7
    targetSdkVersion 16
  }
}

请注意,在依赖中添加actionbarsherlock aar文件,并删除库依赖项。(我还看到你的Gradle版本为0.5.+,buildToolsVersion版本为“17.0.0”,最新版本为0.6.+和“18.1.1”,但是在ABS适用于您之后,您可以处理这些版本)。现在,您可以安全地删除libraries/ActionBarSherlock库,因为您不再需要它了。请将您的settings.gradle文件更改为:
include ':ClashMMA'

希望这可以帮到您。

我会尝试使用命令行 gradle assembleDebug --info。请查看这个问题 - Adam Morgan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接