小编Ser*_*ici的帖子

lint任务上的gradle构建失败

我有一个简单的Android项目,我用Android Studio 0.4.0创建.我使用Gradle 1.9和Gradle Android插件0.7.昨天我在我的gradle构建脚本中添加了Jake Wharton的ButterKnife库:

dependencies {
            compile 'com.android.support:support-v4:19.0.0'
            compile 'com.android.support:appcompat-v7:19.0.0'

            // Butterknife
            compile 'com.jakewharton:butterknife:4.0.1'
}
Run Code Online (Sandbox Code Playgroud)

当我从Android Studio运行应用程序时,构建运行正常并在我的设备上正确执行.但是当我尝试(从命令行)时gradle build,构建失败.这是我的皮棉报告中的一部分:

InvalidPackage: Package not included in Android

/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor.
/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor.
/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor.
/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included …
Run Code Online (Sandbox Code Playgroud)

android gradle android-gradle-plugin

94
推荐指数
6
解决办法
11万
查看次数

检查Espresso是否显示对话框

我正在尝试用新的android-test-kit(Espresso)编写一些测试.但我找不到任何关于如何检查对话框是否显示并在其上执行某些操作的信息(如单击正负按钮等).请注意,对话框也可以由a显示WebView,而不是由应用程序自己显示.

任何帮助,将不胜感激.我只需要一个链接,或基本的一些示例代码:

  1. 检查是否出现对话框
  2. 执行单击对话框按钮
  3. 与对话框的内部视图交互(如果它是自定义视图)
  4. 预先在对话框外点击,并检查它是否显示(例如,如果setCancelable(false)在对话框构建器上调用,我们要检查它)

谢谢你的建议!

android android-espresso

76
推荐指数
3
解决办法
5万
查看次数

Jacoco和Unit使用android-gradle-plugin> = 1.1测试代码覆盖率

我最近开始android-gradle-plugin在我的一个项目中集成1.1.0.该项目用于robolectric 2.4运行单元测试.

这是一个具有非常复杂依赖关系的多模块项目(某些模块依赖于其他模块).像这样的东西:

--> application-module (dependsOn: module1, module2, module-core)
    --> module1 (dependsOn: module-core)
    --> module2 (dependsOn: module-core)
    --> module-core (dependsOn: module3, module4)
        --> module3 (library dependencies)
        --> module4 (library dependencies)
Run Code Online (Sandbox Code Playgroud)

有关更清晰的图片,请参阅jacoco-example项目.

我试图集成JaCoCo来生成单元测试的报告,但在我看来,它只运行androidTests基本上是仪器测试.

经过一些谷歌搜索后,我遇到了一些关于GitHub和其他文章的项目,但他们主要关注的是以前的版本,android-gradle-plugin或者正在使用其他第三方插件android-unit-test ,例如这里.

可能是我失去了谷歌的能力.但有人能指出我可以找到一些关于android gradle插件中的新内容以及如何仅针对单元测试运行jacoco任务的文档吗?

UPDATE

采用了nenick的例子中的脚本:

apply plugin: "jacoco"

configurations {
    jacocoReport
}

task jacocoReport(dependsOn: 'testDebug') << {
    ant {
        taskdef(name:'jacocoreport',
                classname: 'org.jacoco.ant.ReportTask',
                classpath: configurations.jacocoReport.asPath)

        mkdir dir: "${buildDir}/test-coverage-report"
        mkdir dir: "${buildDir}/reports/jacoco/test/"

        jacocoreport …
Run Code Online (Sandbox Code Playgroud)

android unit-testing jacoco android-gradle-plugin

36
推荐指数
2
解决办法
2万
查看次数

使用Gradle覆盖GCM权限包前缀

我有一个Gradle Android项目,有4种产品风格(每种都有自己独特的包名).该build.gradle文件很简单:

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.6.+'
    }
}

apply plugin: 'android'

repositories {
    mavenCentral()
}

dependencies {
    // All dependencies here
    // ...
}

android {
    // Usual stuff goes here

    productFlavors {
        flav1 {
            packageName 'com.company.flav1'
            versionName calcVersion()
        }

        flav2 {
            packageName 'com.company.flav2'
            versionName calcVersion()
        }

        flav3 {
            packageName 'com.company.flav3'
            versionName calcVersion()
        }

        flav4 {
            packageName 'com.company.flav4'
            versionName calcVersion()
        }
    }

    // Other configurations
    // ...
}
Run Code Online (Sandbox Code Playgroud)

一切顺利,合并所需的资源等等现在我正在尝试使用GCM实现推送通知功能.根据文档,我必须声明我的应用程序的权限,如下所示:

<permission android:name="com.company.flav.permission.C2D_MESSAGE"
        android:protectionLevel="signature" …
Run Code Online (Sandbox Code Playgroud)

android gradle android-gradle-plugin

32
推荐指数
2
解决办法
5462
查看次数

将Google Analytics Library添加到Maven项目

我在哪里可以找到Google Analytics Android lib groupIdarchetype我的项目pom?

我一直在寻找它几个小时,我找不到任何线索...(

PS我在GitHub上找到了一些东西,但它就像它使用了第三方存储库(当我尝试运行时它mnv install或者compile它给我一个错误):

<dependency>
  <groupId>com.google.android.analytics</groupId>
  <artifactId>analytics</artifactId>
  <version>2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

android google-analytics maven

11
推荐指数
1
解决办法
5480
查看次数

Android不同的菜单资源

Doe的Android支持多个菜单文件夹(例如/ drawable-hdpi和/ drawable-mdpi)?如果是这样,支持哪些类型(land,xhdpi,swXXXdp)?

PS抱歉这样一个愚蠢的问题......

编辑1:例如,我有不同的布局.根据我可以有不同的菜单资源,不是吗?作为一个开始,有sooch文件夹将是很好的:

  • RES /菜单
  • RES /菜单土地
  • RES /菜单xhdpi
  • RES /菜单xhdpi土地
  • RES /菜单sw600dp

前两个工作正常......但是当我尝试添加其他应用程序时,应用程序在不同的设备上运行不稳定.

android android-menu android-resources

7
推荐指数
1
解决办法
1091
查看次数

Android Gradle - 在特定的productFlavor上添加packageNameSuffix

我有一个Gradle Android项目,使用此产品组和Flavors配置:

/*
 * Define different flavor groups
 */
flavorGroups 'market', 'version'

/*
 * Defile product flavors
 */
productFlavors {

    amazon {
        flavorGroup 'market'
    }

    google {
        flavorGroup 'market'
    }

    flav1 {
        flavorGroup 'version'
        packageName 'com.company.flav1'
    }

    flav2 {
        flavorGroup 'version'
        packageName 'com.company.flav2'
    }

    flav3 {
        flavorGroup 'version'
        packageName 'com.company.flav3'
    }
}

// .. Other stuff
Run Code Online (Sandbox Code Playgroud)

它很棒.所有源和资源都正确合并.但由于特定原因,我需要包后缀.amzamazon产品风味.我怎样才能做到这一点?

我试过这种方式:

amazon {
    flavorGroup 'market'
    packageNameSuffix '.amz'
}
Run Code Online (Sandbox Code Playgroud)

gradle抛出一个例外.

android gradle android-gradle-plugin

6
推荐指数
1
解决办法
3215
查看次数

绘制类似MapsApp的叠加层

我遇到了一项任务,对我而言,这对我来说并不像以前那么微不足道.我需要创建一个使用MapActivity的应用程序,并在其上绘制一些叠加...(已经完成),现在我遇到了onTap()方法的问题,我需要让它看起来像在Android的原始Maps App中,像这样http://i.stack.imgur.com/EkZEr.png

我是android的新手,似乎没有教程可以解释如何为这样的叠加编写类...

android google-maps overlay

5
推荐指数
1
解决办法
127
查看次数

取消所有AsyncTask?

我有一个用于获取媒体文件大拇指的类.像类这样的Loader AsyncTask为每个启动一个ImageView(被调用SomeAdapter#getView()).任务本身做了很多事情,其中​​一个是调用DiskLruCache,但是当SD卡卸载时,当任务仍在运行时,应用程序崩溃.

我知道如果卡状态改变了如何注册.

所以我需要一种方法来停止所有正在运行的任务.你能帮忙的话,我会很高兴.

queue android android-asynctask

5
推荐指数
1
解决办法
8256
查看次数

用于项目语义版本控制的 Maven 插件

我正在寻找一个 Maven 插件,它可以帮助我管理在我们的 CI 环境中进行的每个构建的版本名称和代码。能够将前缀附加到主版本代码甚至更新它的东西(不更改pom.xml)。例如:

project version: 2.0.1
git/svn revision: 2342334

jar output: name-2.0.1-2342334.jar
maven repo: ../path/to/local/maven/repo/<package path>/2.0.1-2342334/
Run Code Online (Sandbox Code Playgroud)

这个插件的主要要求是:

  • 必须在 Maven 存储库中(这意味着不需要额外的设置来添加这个插件到我的 pom.xml和运行 Maven 中)
  • 每次应用时不得编辑 pom
  • 一个配置文件会很棒,这样我就可以管理版本控制过程
  • 必须能够编辑输出文件元数据(因此版本将被应用,就像它首先写入pom.xml文件一样)

到目前为止,我只找到了maven-buildmetadata-pluging但不幸的是它不在 Maven Repo 中,所以我被卡住了。任何帮助都会很棒。

java eclipse maven-plugin maven

5
推荐指数
1
解决办法
6820
查看次数

Activiti-停止所有并行流的网关吗?

我们正在使用Activiti框架构造分离的业务流程,以处理特定的消息。

BPMN有一个表示法Parallel Gateway,它使我们能够创建“并行”执行的任务流。但是,是否有一种机制(网关)启动并行流,但是一旦并行流之一完成,该机制就会杀死其他流?

例如:

StartEvent -> ParallelGateway (fork) -> {FlowA, FlowB, FlowC} -> ParallelGateway (join) -> EndEvent
Run Code Online (Sandbox Code Playgroud)

如果FlowB首先完成,则加入网关一定不要等待其他对象完成,将它们停止(这样就不必执行到最后)并继续进行下一个流程(在示例中为EndEvent)。

有什么想法要实现吗?

编辑

找到了这个线程,但是不幸的是,该解决方案并没有阻止其他流程。

java bpmn activiti

5
推荐指数
1
解决办法
3156
查看次数

Robolectric - 如何模拟com.actionbarsherlock.view.MenuItem?

我正在尝试使用Robolectric为使用SherlockActionBar的应用程序编写测试.如果选择了一个应用程序,我需要测试应用程序是否正确MenuItem,但是android.view.MenuItem当应用程序使用该方法时,Robolectric lib仅提供模拟onOptionItemSelected(com.actiombarsherlock.view.MenuItem).

所以我的问题是:

  • 可能有可用性来嘲笑com.actionbarsherlock.view.MenuItem

  • 或者是变通方法还是什么?

提前致谢...

android mocking robolectric actionbarsherlock

3
推荐指数
1
解决办法
666
查看次数