小编abh*_*erg的帖子

为gradle生成的AndroidManifest指定额外的XML

是否可以为gradle生成的AndroidManifest指定额外的XML字段.具体来说,用例是我有一个使用谷歌地图的应用程序,根据他们的文档,应用程序必须指定:

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true"/>
Run Code Online (Sandbox Code Playgroud)

在AndroidManifest中.如果您尝试使用gradle测试此应用程序,您将获得:

$ ./gradlew connectedCheck
<snip>
:myapp:processTestTestManifest
[manifestMerge1694110764542760523.xml:1, manifestMerge678902239503841223.xml:15] Main manifest has <uses-feature android:glEsVersion='0x00010000'> but library uses glEsVersion='0x00020000'
Note: main manifest lacks a <uses-feature android:glEsVersion> declaration, and thus defaults to glEsVersion=0x00010000.
Run Code Online (Sandbox Code Playgroud)

我目前的(相关)项目结构是:

myapp/AndroidManifest.xml
myapp/project.properties
myapp/res/
myapp/src/com/magic/package/Foo.java
myapp/tests/java/com/magic/package/test/FooTest.java
Run Code Online (Sandbox Code Playgroud)

换句话说,遗留项目结构除外tests/.我也试过添加一个任意的AndroidManifest.xml myapp/tests/,尽管文档说不是,只是作为一个测试.但是,我没有运气.

buid.gradle看起来像:

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

apply plugin: 'android'

repositories {
    mavenCentral()
}

dependencies {
    compile project('stuff')
}

android {
    compileSdkVersion 17 …
Run Code Online (Sandbox Code Playgroud)

testing android google-maps gradle

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

Gradle测试可以与旧式测试项目和平共处

所以在古代,当你想在Android上做测试时,你曾经做过一个新的测试项目,如:

RealProject
|-- AndroidManifest.xml
|-- src
|   |-- com
|   |   |-- example
|   |   |   |-- Foo.java
`-- tests
    `-- AndroidManifest
        `-- src
            `-- com
                `-- example
                    `-- Foo.java
Run Code Online (Sandbox Code Playgroud)

这意味着测试是在一个生活在某个地方的项目中,按照约定在tests文件夹中.

在新的构建系统中,如果要从现有的android项目迁移(并且必须支持使用Eclipse并因此使用ant的开发人员),新构建系统用户指南建议您添加以下内容,以便维护项目结构从旧版本.

android {
    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')
    }
}
Run Code Online (Sandbox Code Playgroud)

在您尝试编写测试之前,这一切都很好.鉴于上述结构,您打算进行测试

RealProject
`-- tests
    `-- java
        `-- com
            `-- example
                `-- FooTest.java
Run Code Online (Sandbox Code Playgroud)

两者之间的区别是,摇篮预计子目录testsjava …

ant testing android automated-tests gradle

4
推荐指数
1
解决办法
213
查看次数

标签 统计

android ×2

gradle ×2

testing ×2

ant ×1

automated-tests ×1

google-maps ×1