Articles of groovy

Groovy Android和libgdx

我正在尝试让libgdx使用Groovy for Android( groovy–android-gradle-plugin )。 我已经成功完成了一个测试项目的编译和启动,但是当游戏加载时由于Rectangle类上缺少y属性而导致崩溃。 当我第一次尝试这个时,游戏在访问Gdx类的静态字段时崩溃了。 例如。 当我试图通过Gdx.gl.glClearColor(0, 0, 0.2f, 1)访问gl字段时。 我通过将@CompileStatic添加到所有类来解决了这个问题。 但是,正如我所说,这似乎并没有解决所有问题。 我不确定这是否是一个常规问题,因为字段是public但也有getter和setter(后者返回Rectangle对象)或Groovy Android插件的问题。 这里的任何帮助将不胜感激。 请注意,我知道如何解决这个问题,方法是将断线更改为: raindrop.y -= 200 * Gdx.graphics.getDeltaTime()到raindrop.y -= 200 * Gdx.graphics.getDeltaTime() raindrop.y = raindrop.y – 200 * Gdx.graphics.getDeltaTime() ,但我仍然想知道为什么会这样,所以我可以避免将来的问题。

将任务依赖项添加到Gradle中的现有插件任务?

我在build.gradle文件中包含了第二个gradle文件my.gradle 。 my.gradle的内容是: apply plugin:MyPlugin class MyPlugin implements Plugin { @Override void apply(Project project) { project.tasks.create(name: “myTask”, type: MyTaskClass) { } } } 在我的build.gradle我设置在顶部: apply from: ‘myPlugin.gradle’ 现在我想在build.gradle设置一个任务依赖build.gradle : tasks.myPlugin.myTask.dependsOn += someOtherTask 当我构建时,我收到以下错误: > Could not find property ‘myPlugin’ on task set. 如何在build.gradle从myPlugin访问build.gradle ? 编辑:我试图确保someTask在myTask之后运行。 我尝试这样做: taskX.finalizedBy taskY 在我的情况下: tasks.myPlugin.myTask.finalizedBy someOtherTask 但前者不起作用。

Grails / Gradle测试在CI上失败,而不是本地

在本地运行我们的测试(OSX)并使用gradle test运行/传递就好了。 在我们的CI(Ubuntu 16.04 LTS)机器上,我们遇到了应用程序上下文的问题 java.lang.IllegalStateException: Could not find ApplicationContext, configure Grails correctly first at grails.util.Holders.getApplicationContext(Holders.java:97) 检查版本显示它们在两台机器上都是相同的 /grailsw -version | Grails Version: 3.2.8 | Groovy Version: 2.4.7 | JVM Version: 1.8.0_131 ./gradlew -version Gradle 3.5 Build time: 2017-04-10 13:37:25 UTC Revision: b762622a185d59ce0cfc9cbc6ab5dd22469e18a6 Groovy: 2.4.10 Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015 JVM: […]

groovy是Android的潜在开发语言

我最近开始使用groovy作为Java的替代品,我想在groovy中开发Android应用程序。 我调查的所有例子似乎都很老了。 所以我想知道是否有可能在groovy中开发Android应用程序?

使用JSON在Groovy / Grails中创建对象

我有一个Groovy / Grails网站,用于通过JSON向Android客户端发送数据。 我创建了Android客户端和Groovy / Grails网站; 并且他们可以在JSON中输出相同的对象。 我可以通过将JSON输出映射到Java对象来成功在Android中创建相应的对象,但是我想知道是否可以使用JSON输出在Groovy / Grails中创建新的域对象? 有没有办法将JSON输出传递给控制器​​操作,以便创建对象? 以下是我要发送的JSON示例; { “class”:”org.icc.callrz.BusinessCard.BusinessCard”, “id”:1, “businessCardDesigns”:[], “emailAddrs”:[ { “class”:”org.icc.callrz.BusinessCard.EmailAddress”, “id”:1, “address”:”chris@krslynx.com”, “businessCard”:{ “_ref”:”../..”, “class”:”org.icc.callrz.BusinessCard.BusinessCard” }, “index”:0, “type”:{ “enumType”:”org.icc.callrz.BusinessCard.EmailAddress$EmailAddressType”, “name”:”H” } }, { “class”:”org.icc.callrz.BusinessCard.EmailAddress”, “id”:2, “address”:”cb@i-cc.cc”, “businessCard”:{ “_ref”:”../..”, “class”:”org.icc.callrz.BusinessCard.BusinessCard” }, “index”:1, “type”:{ “enumType”:”org.icc.callrz.BusinessCard.EmailAddress$EmailAddressType”, “name”:”W” } } ] } “类”与我要保存的域匹配,ID是域的ID,然后businessCardDesigns和emailAddrs中的每个项目都需要使用类似的方法保存(在域中,businessCardDesigns和emailAddrs是ArrayLists )。 提前谢谢了! 解: @RequestMapping(method = RequestMethod.POST, headers […]

Gradle不生成带引号的String

我正在尝试使用此函数在BuildConfig中包含一个包含构建日期的自定义字段: def getDate() { def date = new Date() def formattedDate = date.format(‘yyyyMMddHHmmss’) return formattedDate } 然后,在defaultConfig中我放了: buildConfigField “String”, “BUILD_NUMBER”, getDate() 问题是,Gradle生成的字段是: public static final String BUILD_NUMBER = 20141108114911; 抛出“整数太大”,但我不想要一个整数,我想要一个字符串! 我试图用String显式替换def ,尝试使用getDate().toString , getDate() as String和”${getDate()}” ,并且仍然没有引用我的String。 我还尝试在日期中间添加一个像“ – ”这样的字符,它仍然不会生成引号,使得: public static final String BUILD_NUMBER = 20141108-114911; 显然没有任何意义…… 我不在这里,不熟悉Groovy,所以不确定是否有另一种(工作)方式来“强制”一个字符串。

有没有办法通过返回布尔值来了解是否在gradle文件中编译了某个依赖项

所以情况就是这样,在我所拥有的依赖结构的build.gradle文件中 dependencies { compile ‘A’ compile ‘B’ } 但是,我希望人们能够只编译A或只编译B,是否有办法通过返回一个可以在其他地方使用的全局布尔值,在gradle任务中使用是否使用了依赖关系A? 所以换句话说 if (A was compiled) { compile A; } else { exclude A; }

Android上的Groovy CompileStatic搞砸了Groovy Truth

在Groovy中,只需将variables放在里面就可以测试集合为null和空,如下所示: def collection = [ ‘test’ ] if(!collection) { //Collection is either null or empty, handle exceptional business here } 但是,在将@CompileStatic放在包含这样的代码的类上时,它会停止工作(但仅限于Android)并出现错误: 02-16 20:49:03.837: E/AndroidRuntime(9013): org.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack: No signature of method: java.util.ArrayList.asBoolean() is applicable for argument types: () values: [] 运行桌面版时似乎不会发生这种情况。 提供更多背景信息。 这是一个生成的LibGDX项目,包含三个项目(-core,-desktop,-android),其中-core项目已转换为groovy项目。 引用了-core项目,以及-desktop和-android项目的依赖项 无论是使用@CompileStatic注释注释类,还是正确识别Groovy Truth,桌面版都可以正常工作。 另一方面,在Android上,出现上述错误。 我没有使用grooid库,因为转换为groovy的项目在桌面和android之间共享。 如果它有任何价值,这里是项目级别的build.gradle的内容: buildscript { repositories { mavenCentral() jcenter() } dependencies […]

Android Gradle从strings.xml中读取应用程序名称

我正在尝试为每个构建变体重命名我的APK文件,以包含应用程序名称,versionName,versionCode和内部版本号。 到目前为止,除了应用程序名称之外,我的所有工 我想使用AndroidManifest.xml文件用于android:label的相同值。 这来自字符串资源@string/app_name 。 我已经看到了使用以下方法替换资源值的能力: resValue “string”, “app_name”, “Some new value” 但我只想读取此值并使用它来命名我的APK文件。 android.applicationVariants.all { variant -> variant.outputs.each { output -> renameApk(variant, output) } } def renameApk(variant, output) { def apkPath = output.outputFile.parent def baseName = project.archivesBaseName baseName += “-${variant.buildType.name}” // add version name and version code baseName += “-v${variant.mergedFlavor.versionName}-${variant.mergedFlavor.versionCode}” // if built on jenkins […]

在Android Gradle build.gradle it.buildConfigField中的“it”是什么?

我有搜索Gradle官方网站和Android开发者官方网站,但找不到答案。 在android build.gradle中,什么是“它”。 在下面的buildConfigField方法中? 这是一个对象的实例吗? 我发现将buildConfigField方法移动到defaultConfig允许我使用没有“它”的方法。 两者有什么区别? 为什么我可以使用另一种方法? android { … defaultConfig { … buildConfigField ‘String’, ‘API_KEY’, MyApiKey } buildTypes { release { … } } buildTypes.all { … } buildTypes.each { … it.buildConfigField ‘String’, ‘API_KEY’, MyApiKey } }