Articles of gradle

Robolectric测试在Android Studio中运行,但不在命令行上运行

我正在尝试使用Robolectric进行unit testing; 它们在Android Studio下运行正常,但在命令行中运行时完全相同的测试失败 – 这是一个大问题,我需要能够从我的持续集成平台运行它们,而不仅仅是从IDE运行它们。 我怀疑我缺少一些命令行参数(例如,类路径或类似的东西)或调用错误的任务 – 否则测试将无法从Android Studio运行。 一些相关细节; 测试看起来像这样: @RunWith(RobolectricTestRunner.class) @Config(manifest = “app/src/main/AndroidManifest.xml”, resourceDir = “res”, emulateSdk = 19) public class SplashActivityTest { @Test public void testActivity() { SplashActivity splashActivity = new SplashActivity(); String appName = splashActivity.getString(R.string.app_name); // HERE, line 20 assertEquals(appName, “App”); } } 如上所述,它在Android Studio中正常运行(通过右键单击测试文件并选择Run ‘SplashActivityTest’ )但是当从命令行运行它时,它会在标有HERE的行中失败,并显示以下堆栈跟踪: android.content.res.Resources$NotFoundException: unknown resource […]

如何将依赖项包含到.aar库中?

我正在使用Android Studio 1.4 我的项目中有一个模块,它在build.gradle中有下一个依赖项: dependencies { provided fileTree(dir: ‘libs’, include: [‘*.jar’]) provided ‘junit:junit:4.12’ apply plugin: ‘com.google.gms.google-services’ provided ‘org.apache.directory.studio:org.apache.commons.io:2.4’ provided ‘com.google.android.gms:play-services:8.1.0’ provided ‘com.fasterxml.jackson.core:jackson-databind:2.2.0’ provided ‘com.fasterxml.jackson.core:jackson-core:2.2.0’ provided ‘com.fasterxml.jackson.core:jackson-annotations:2.2.0’ } 在构建projectn并同步gradle之后,我在我的module / build / ouputs / aar文件夹中获取了lib-release.aar。 比我尝试文件>新模块>导入JAR \ AAR它。 然后,添加后 compile project(‘:mylib-release’) 我在“外部库”树中只获得了没有声明依赖关系的包。 如何通过仅填写我的库来启用这些软件包的自动安装?

在android studio中执行自定义独立gradle任务

我有一个包含多个模块的android项目。 我正在尝试从其中一个模块运行自定义gradle任务,但每次我在模块以及其他模块中运行任务所有其他gradle任务。 我的任务不依赖于任何其他任务。 任务 : task helloTask{ println “Hello task” } 我尝试通过工作室和命令行中的终端窗口运行此任务。

如何在打包文件时使用Gradle删除原始XML文件中的注释

我的项目在我的Android项目的原始资源目录中有XML文件: 当我们将这些文件打包在.apk文件中时,我想从这些文件中删除注释( ): 原始文件样本: 预期的过滤文件: 我在这里find了一些有趣的类似解决方案,但我无法管理它。 在我的app build.gradle添加这些行 processResources { filesMatching(‘**/myxmlfiletobestrippedfromcomments.xml’) { filter { String line -> line.replaceAll(”, ”) } } } 生成以下错误: Error:(86, 0) Gradle DSL method not found: ‘processResources()’ 要从java代码打开和解析XML文件,我使用以下方法: InputStream definition = context.getResources().openRawResource(resId); … try { XmlPullParser parser = Xml.newPullParser(); parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false); parser.setInput(definition, null); parser.nextTag(); return parseCelebrations(parser); } finally { definition.close(); }

connectedAndroidTest和release构建types

我正在使用gradle:1.2.3 我想在发布(签名,缩小)配置上运行我的androidConntectTests(检测测试),但我不能。 我的构建types: buildTypes { debug { minifyEnabled false debuggable true } robotium { debuggable true minifyEnabled true signingConfig signingConfigs.release proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } release { minifyEnabled true debuggable false signingConfig signingConfigs.release proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } 我已经读过,那些测试只能在debbugable配置上运行,所以我制作了“robotium”构建types(见上文),但它仍然不起作用。 当我尝试调用“gradle tasks”时,它只显示connectedAndroidTest-Flavor-Debug,并且调用“connectedAndroidTest-Flavor-Release / Robobium”只会失败并显示“在根项目中找不到任务XXX”。 有没有办法让不同的构建types运行检测测试?

Android Studio中的原生预建共享库,带有实验性Gradle插件

我试图在Android Studio中为我的项目添加一个原生的预建共享库。 我正在使用gradle-experimental:0.6.0-alpha5 。 但是,每当我尝试将预构建的共享库添加到我的应用程序模型时,我都会收到以下错误: 错误:原因:org.gradle.api.internal.PolymorphicDomainObjectContainerConfigureDelegate 该库将添加到应用程序模型中,以供Google Gradle实验指南描述: repositories { prebuilt(PrebuiltLibraries) { binaries.withType(SharedLibraryBinary) { sharedLibraryFile = file(“/path_to_libs/${targetPlatform.getName()}/shared_lib.so”) } } } android.sources { main { jniLibs { dependencies { library “shared_lib” } } } } 关键的一行是库“shared_lib” 。 如果我取消注释此行,则没有错误。 由于这不起作用,我也尝试使用ph0b.com的指南。 他们使用不同的语法来添加本机共享库(我只是遗漏了标题,因为我没有包含所有标题的单个目录): repositories { libs(PrebuiltLibraries) { shared_lib { binaries.withType(SharedLibraryBinary) { sharedLibraryFile = file(“/path_to_libs/${targetPlatform.getName()}/shared_lib.so”) } } } } android.sources […]

编译appcompat v7:26。+为融合位置提供程序添加播放服务时出错

我有一个问题,并查看了可能的重复问题和答案,我认为这个问题没有得到其他人的回答。 我更新了我的播放服务以使用融合的位置提供程序,现在我的gradle中的appcompat显示错误。 所以我创建了一个新项目并检查了新项目的build.gradle并且具有完全相同的appcompat,但我的项目显示错误。 apply plugin: ‘com.android.application’ android { compileSdkVersion 26 buildToolsVersion “26.0.0” defaultConfig { applicationId “au.com.itmobilesupport.sqltwo” minSdkVersion 17 targetSdkVersion 26 versionCode 1 versionName “1.0” testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner” } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } } dependencies { compile fileTree(include: [‘*.jar’], dir: ‘libs’) androidTestCompile(‘com.android.support.test.espresso:espresso-core:2.2.2’, { exclude group: ‘com.android.support’, module: ‘support-annotations’ }) compile […]

在AndroidManifest.xml中替换构建variables的字符串不适用于Gradle Android插件版本> 0.5.4

就在几周前,我遇到了以下问题: 如何用gradle替换构造variables的字符串? 我也自己回答了这个问题。 到目前为止一切正常:我刚刚意识到我的复制任务不再起作用了。 我花了几个小时来解决这个问题,直到我意识到这取决于Gradle Android插件版本:直到0.5.4的一切正常。 对于上层版本,我不会进入我的复制任务。 这是控制台输出: // gradle android plugin version: 0.5.6 and 0.5.5 –> copy tas doesn’t work :etscanner:prepareFlavor1Flavor1ReviewDependencies :etscanner:compileFlavor1Flavor1ReviewAidl :etscanner:generateFlavor1Flavor1ReviewBuildConfig :etscanner:mergeFlavor1Flavor1ReviewAssets :etscanner:compileFlavor1Flavor1ReviewRenderscript :etscanner:mergeFlavor1Flavor1ReviewResources :etscanner:processFlavor1Flavor1ReviewManifest :etscanner:processFlavor1Flavor1ReviewResources :etscanner:compileFlavor1Flavor1ReviewNote: Some input files use or override ad eprecated API. Note: Recompile with -Xlint:deprecation for details. Note: .DetailAdapter .java uses unchecked or unsafe operations. Note: Recompile […]

Gradle构建无法在Android Studio中查找Google Play服务

我正在尝试在Android Studio 0.3.6中运行我的项目,但我总是收到此错误: Gradle: A problem occurred configuring root project ‘myapp_android’. > Failed to notify project evaluation listener. > Could not resolve all dependencies for configuration ‘:_DebugCompile’. > Could not resolve com.google.android.gms:play-services:3.1.36. Required by: :myapp_android:unspecified > Could not GET ‘http://maven.hq.couchbase.com/nexus/content/repositories/releases/com/google/android/gms/play-services/3.1.36/play-services-3.1.36.pom’. Received status code 503 from server: Service Temporarily Unavailable 这是我的完整build.gradle文件: home = System.getenv(“ANDROID_HOME”) buildscript { […]

如何在gradle构建文件中的其他位置访问buildConfigField

我试图在我的productFlavor块中设置buildConfigField,然后在我的gradle构建文件中的其他位置引用该字段,以便在构造apk的名称时可以使用此值。 例如 productFlavors{ flavor1{ buildConfigField “String”, “APP_FLAVOR_NAME”, ‘”MyApp-Flavor1″‘ } flavor2{ buildConfigField “String”, “APP_FLAVOR_NAME”, ‘”MyApp-Flavor2″‘ } 如何在build.gradle脚本中的其他位置访问APP_FLAVOR_NAME? 我也在努力弄清楚如何在buildscript中引用flavor名称本身作为构建apk名称的另一个选项。 我怎么能这样做呢?