Articles of android gradle

Android Studio – Gradle – 具有嵌套依赖项的多项目构建

我很久以前就问过这个问题,现在我有时间(没有选择)我已经通过设置一些项目来解决问题。 结构类似于前一个问题中的结构,但有一个扭曲…… ┌Just a folder │ ├── Project 1 – (Pure Java Modules) │ │ │ ├── Module A1 │ ├── Module B1 │ : │ └── Module Z1 │ ├── Project 2 – (Android Libraries Modules) │ │ │ ├── Module A2 │ ├── Module B2 │ : │ └── Module Z2 │ └── […]

一个maven神器可以包含jar和aar吗?

我在Maven Central Repository中有一个库。 对于最新版本,除了正常的.jar之外,我还推了一个.aar存档。 但是我似乎无法让Android Studio使用该库的aar版本。 在我的build.gradle文件中,我有: dependencies { compile ‘com.android.support:appcompat-v7:19.+’ compile ‘com.mygroup:mylibrary:1.2.2’ } 这成功获取了jar文件,但是如何让它使用库的aar版本? 我尝试了很多东西,包括(但不限于): compile ‘com.mygroup:mylibrary:1.2.2@aar’ compile group: ‘com.mygroup’, name: ‘mylibrary’, version: ‘1.2.2’, type: ‘aar’ compile group: ‘com.mygroup’, name: ‘mylibrary’, version: ‘1.2.2’, packaging: ‘aar’ compile group: ‘com.mygroup’, name: ‘mylibrary’, version: ‘1.2.2’, extension: ‘aar’ 但它总是加载jar子。 Gradle是否期望工件仅包含AAR(与匹配的POM)? 我是否需要为lib的AAR版本创建单独的工件?

如何构建包含具有不同compileSdkVersion,targetSdkVersion和minSdkVersion的模块的Android gradle项目?

我的Android库项目由四个模块组成: 项目 基础 厂 V14 V18 以下是IntelliJ的此设置的屏幕截图: 我的模块使用非常特定的Android SDK级别设置: 基础 compileSdkVersion 19 minSdkVersion 14 targetSdkVersion 19 厂 compileSdkVersion 19 minSdkVersion 14 targetSdkVersion 19 V14 compileSdkVersion 17 minSdkVersion 14 targetSdkVersion 17 V18 compileSdkVersion 18 minSdkVersion 18 targetSdkVersion 18 随着Android的新版本的发布,基础和工厂模块可以跟随它们的compileSdkVersion和targetSdkVersion级别。 但是,v14和v18都绝对不能效仿。 我的模块以非常具体的方式相互依赖: 基础 不依赖于任何其他模块 厂 取决于base,v14和v18 V14 取决于基数 V18 取决于基数 所以当我去构建我的项目时,我收到了这个错误: Error:Gradle: Execution failed for task ‘:v14:processReleaseManifest’. […]

如何在Android测试中显示日志文件System.out.println()?

我做了很多搜索,但遗憾的是无法使用它。 根据我的搜索,我发现我需要在build.gradle文件中添加以下代码。 但是,Gradle似乎无法识别它,并且总是说Geadle DSL method not found: test() test { testLogging.showStandardStreams = true testLogging.events(“passed”, “skipped”, “failed”, “standardOut”, “standardError”) afterTest { desc, result -> println “Executing test ${desc.name} [${desc.className}] with result: ${result.resultType}” } } 更新 我可以确认上面的代码或者比以下代码更好,如果你创建一个测试项目并将所有测试用例移到其中而不是src/test/java和src/androidTest/java在主项目中。 这是因为你可以在build.gradle文件中应用java插件。 但是,在任何已定义com.android.* build.gradle文件中都不可能使用以下代码。 由于这两个库不兼容:( apply plugin: ‘java’ evaluationDependsOn(‘:YOUR-LIB’) test { testLogging.showStandardStreams = true testLogging { events “passed”, “skipped”, “failed”, “standardOut”, […]

Android studio – 执行任务失败’:app:preDexDebug’

当我试图通过Android studio在模拟器中运行应用程序时,我收到错误“执行失败的任务’:app:preDexDebug’” 完整堆栈跟踪: FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ‘:app:preDexDebug’. > com.android.ide.common.internal.LoggedErrorException: Failed to run command: e:\developer\Android\sdk\build-tools\21.1.2\dx.bat –dex –output E:\developer\AndroidStudioProjects\OMGAndroid\app\build\intermediates\pre-dexed\debug\support-annotations-21.0.3-c91f7c2a85920982313a91e2dffb704ba92c7823.jar E:\developer\Android\sdk\extras\android\m2repository\com\android\support\support-annotations\21.0.3\support-annotations-21.0.3.jar Error Code: 1 Output: Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. * Try: Run with –info […]

错误:在任务collectDebugMultiDexComponents的配置中发现了一个问题

我已经将Android Studio更新为0.9,将工具更新为21.1.0并且gradle为0.14,因为我想使用新的multiDexEnabled truefunction。 目前我正在使用这种方法https://github.com/casidiablo/multidex管理multidex,一切正常,但multiDexEnabledfunction似乎更好。 但是使用gradle 0.14我得到了这个错误: uses-sdk元素不能有“tools:node”属性 ,我使用@Medo发布的解决方案 “解决”了这个属性 。 但是,如果我使用这种方法,multiDexEnabled将无法工作,我将收到此错误: 错误:find任务’:participantactclient:collectDebugMultiDexComponents’的配置问题。 为属性’manifest’指定的文件’/ Users / danielecampogiani /开发/ Android / Android Studio / Participact客户端/ participactclient / build / intermediates / manifests / full / debug / AndroidManifest.xml’不存在。 知道怎么解决这个问题吗?

错误:在Android gradle库模块unit testing中找不到符号

我在IntelliJ中有一个测试项目(使用Android Studio插件),我正在尝试设置unit testing,如此处所述。 在运行junit测试时,项目似乎无法在src> main> java下find我的源代码。 以下测试 package io.adaptiv.plzwrk.lib; import junit.framework.TestCase; import org.junit.Test; public class AdaptivTest extends TestCase { @Test public void testDoStuff() throws Exception { assertEquals(42, Adaptiv.doStuff()); } } 给出错误 error: cannot find symbol assertEquals(42, Adaptiv.doStuff()); ^ symbol: variable Adaptiv location: class AdaptivTest 我的’测试’课程 package io.adaptiv.plzwrk.lib; public class Adaptiv { public static int doStuff() […]

如何设置Android / Gradle的unit testing

在阅读了有关使用android gradle插件进行测试的android指南之后,我想为我的POJO设置JUnit测试,这些测试不会使用经过测试的测试。 我们的想法是,不依赖于Android的代码测试应该非常快(并且有助于TDD)。 是否有一种标准方法可以在build.gradle中设置源集和任务来实现此目的? 这是主要问题,第二个问题是我在下面的尝试有什么问题…… 我正在使用Android Studio 0.4.2和Gradle 1.9,在一个新的“test”文件夹中试验一个简单的JUnit测试类。 这是我到目前为止所做的,但是当我运行“gradle testPojo”时,我得到了这个结果: :android:assemble UP-TO-DATE :android:compileUnitTestJava UP-TO-DATE :android:processUnitTestResources UP-TO-DATE :android:unitTestClasses UP-TO-DATE :android:testPojo FAILED * What went wrong: Execution failed for task ‘:android:testPojo’. > failed to read class file /path/to/project/android-app/build/classes/unitTest/TestClass.class 我确认该类实际上在那里,所以我很困惑为什么该任务无法读取该文件。 这是build.gradle文件: … sourceSets { unitTest { java.srcDir file(‘src/test/java’) resources.srcDir file(‘src/test/resources’) } } dependencies { … unitTestCompile ‘junit:junit:4.11’ […]

Android Build Tools 1.1.0 – Lint在未知问题ID“ImproperProjectLevelStatement”上失败

我将应用程序从android gradle build tools 1.0.0升级到1.1.0。 Lint现在失败了: LintError:Lint Failure未知问题ID“ImproperProjectLevelStatement”

如何将build.gradle逻辑拆分为更多.gradle文件?

我有很长的build.gradle文件,它有我想要移动到单独的.gradle文件中的函数以保持逻辑清洁。 文档建议在这种情况下使用外部构建脚本 。 我在build.gradle文件中有下一个函数: android{ buildTypes { debug { signingConfig = loadFromPropertiesFile(“DEBUG_KEY_PROPERTIES”) } } } import com.android.builder.signing.DefaultSigningConfig import com.android.builder.model.SigningConfig SigningConfig loadFromPropertiesFile(keyProperty) { // Load signing config from singning properties file println keyProperty println (“${keyProperty}”) if (project.hasProperty(keyProperty)) { File releasePropsFile = new File(project.property(keyProperty)) println(“Loading config from properties file: ${releasePropsFile}”) if (releasePropsFile.exists()) { Properties releaseProps = new […]