Articles of gradle

兄弟子模块上的资源,Gradle项目

我正在尝试将我公司的项目从Maven迁移到Gradle,到目前为止我已经能够将所有POM转换为相应的build.gradle文件,但是在构建时我在子模块中遇到了一个问题。 – Core-UI —- Utils —- FieldPanels 子模块FieldPanel使用Utils中定义的颜色和其他资源。 我尝试添加Utils项目作为依赖项,但它不起作用,我错过了什么? /home/development/AndroidStudioProjects/com.project/core-ui/common.android.fieldpanels/build/bundles/debug/res/layout/base_summary_step_layout.xml:2: error: Error: No resource found that matches the given name (at ‘background’ with value ‘@color/wizard_summary_bg’). Utils gradle.build buildscript { repositories { mavenCentral() } dependencies { classpath ‘com.android.tools.build:gradle:0.5.2’ } } apply plugin: ‘android-library’ android { sourceSets { main { manifest { srcFile ‘AndroidManifest.xml’ } res { […]

如何发布Android .aar源码以使Android Studio自动find它们?

我正在将库发布到内部Sonatype Nexus存储库。 Android Studio具有自动查找通过gradle引用的库的正确来源的function。 我将aar的来源作为一个单独的jar发布到nexus。 但Android Studio并没有把它们搞砸。 如何发布源代码以使其在Android Studio中可用?

在Android Studio上调试基于gradle的Java项目?

我目前的项目由两个模块组成,一个是android,另一个是可以作为独立的桌面java使用。 我想自己运行第二个模块,并且无需通过设备即可调试它。 我不想让一个辅助IntelliJ安装在一个或另一个之间进行交换。 AS中是否有任何方法可以将调试器附加到java gradle任务中? apply plugin: “java” sourceCompatibility = 1.6 sourceSets.main.java.srcDirs = [ “src/” ] project.ext.mainClassName = “com.project.Desktop.Launcher” project.ext.assetsDir = new File(“../android/assets”); task run(dependsOn: classes, type: JavaExec) { main = project.mainClassName classpath = sourceSets.main.runtimeClasspath standardInput = System.in workingDir = project.assetsDir ignoreExitValue = true } task dist(type: Jar) { from files(sourceSets.main.output.classesDir) from files(sourceSets.main.output.resourcesDir) from {configurations.compile.collect […]

Android + Gradle:设置动态archivesBaseName的最佳位置

在我们的Android项目中,我们希望APK的文件名包含日期,git分支名称和简短提交哈希等信息。 我们一直将它设置为defaultConfig一部分 android { defaultConfig { setProperty(“archivesBaseName”, “$projectName.$branchName.$date.$buildNumber.$versionCode-$versionName-$versionSha”) } } 这在大多数情况下都可以工作,但是我们的构建有时会失败,错误指向值过时(例如在切换分支之后)。 在Android Studio中强制Gradle Sync通常会修复它。 那么,是否有更好,更强大的方法来确保财产保持最新并强制进行同步?

为什么我不能在构建脚本中使用gradle task connectedDebugAndroidTest?

我可以从我的构建脚本中引用connectedCheck任务(来自android插件): connectedCheck.finalizedBy AndroidShowTestResults 但是尝试使用connectedDebugAndroidTest (也来自android插件) connectedDebugAndroidTest.finalizedBy AndroidShowTestResults 给我 错误:(48,0)无法在项目’:app’上find属性’connectedDebugAndroidTest’。 如果我尝试 task connectedDebugAndroidTest << {print '123'} 它诅咒我 错误:无法添加任务’:app:connectedDebugAndroidTest’作为具有该名称的任务已存在。 我不明白为什么我不能参考connectedDebugAndroidTest ? 可用的gradle任务如下所示:

如何为@Nullable注释启用Android lint检查?

我注意到Android Studio将validation@Nullable是否未忽略@Nullable : 恩。 @Nullable MyObject getMyObject(); … MyObject o = getMyObject(); o.method(); ^ Method invocation ‘method’ may produce ‘java.lang.NullPointerException’ 这是由NullableProblems IntelliJ警告强制执行的。 我想通过lint规则在构建时从gradle强制执行此规则。 有没有人碰巧知道是否有可能通过gradle启用类似的东西?

在gradle插件中获取应用程序变体的包名称

我正在构建一个gradle插件,为每个应用程序变体添加一个新任务。 此新任务需要应用程序变体的包名称。 这是我目前的代码,它停止使用最新版本的android gradle插件: private String getPackageName(ApplicationVariant variant) { // TODO: There’s probably a better way to get the package name of the variant being tested. String packageName = variant.generateBuildConfig.packageName if (variant.processManifest.packageNameOverride != null) { packageName = variant.processManifest.packageNameOverride } packageName } 由于构建配置处理的更改,这已停止在最新版本的android插件中工作。 无论如何它似乎是一个黑客,所以我不会感到惊讶它停止工作。 是否有规范的方法来获取包名称?

无法解析不同风味android studio的方法’getAllUserGroupByName()’

考虑我在我的android项目中有两个产品风味名为’local’和’international’。 我只是给出了我的情况的骨架,所以请小心忽略其他错误。 考虑到我已经有不同的源集为不同的味道。 现在我的’本地’味道我只需要下面提到的一种方法。 // local flavor file interface UserDao { List getAllUser(); } 虽然在我的国际风格,我还需要额外的function,以使用户的名字也在一个组中。 所以有两种方法。 // international flavor file interface UserDao { List getAllUser(); List getAllUserGroupByName(); } 但问题是, 我正在调用该方法的单个活动。 当我从activity调用getAllUserGroupByName()方法时,如果当前flavor是’ international ‘,它将编译,但它不会在’ local ‘上编译,因为它不包含该方法。 我尝试通过如下条件包装来调用此方法, // BuildUtils is my helper class to get current flavor check easily. if (BuildUtils.isInternational()) { getAppDatabase().UserDao().getAllUserGroupByName(); } 但它也不起作用。 我不想要以下解决方案。 […]

如何告诉Gradle在命令行中使用不同的AndroidManifest?

我有一个多模块项目。 从我项目的根目录(包含多个模块)开始,我希望能够调用’gradle build’并让它在我的一个模块中使用不同的AndroidManifest,具体取决于我传入的一些参数。什么是最好的方法来完成这个? 我应该使用gradle.properties文件还是可以在settings.gradle文件中以某种方式指定不同的build.gradle? 任何帮助赞赏! settings.gradle: include ‘ActionBarSherlock’ include ” 的build.gradle: buildscript { repositories { mavenCentral() } dependencies { classpath ‘com.android.tools.build:gradle:0.4.2’ } } apply plugin: ‘android’ dependencies { compile project(‘:ActionBarSherlock’) } android { buildToolsVersion “17.0” compileSdkVersion 17 sourceSets { main { manifest.srcFile ‘AndroidManifest.xml’ java.srcDirs = [‘src’] resources.srcDirs = [‘src’] aidl.srcDirs = [‘src’] renderscript.srcDirs = [‘src’] […]

将Google Play服务从8.4.0更新为9.2.1会导致Gradle同步错误

当我将Gradle文件中的Google Play依赖项从版本8.4.0更新到9.2.1时,出现以下错误: 错误:无法解决:com.google.android.gms:play-services-measurement:9.2.1 使用版本8.4.0时,这不是问题。 我试图将它作为一个明确的依赖包括在内但没有任何区别。 我正在使用的具体依赖项是: compile ‘com.google.android.gms:play-services-maps:9.2.1’ compile ‘com.google.android.gms:play-services-auth:9.2.1’ compile ‘com.google.android.gms:play-services-plus:9.2.1’ 对于为什么会发生这种情况有任何指示,我将不胜感激。