Articles of android gradle

为什么我的JSONObject相关unit testing失败?

我正在使用gradle testFlavorType运行我的测试 JSONObject jsonObject1 = new JSONObject(); JSONObject jsonObject2 = new JSONObject(); jsonObject1.put(“test”, “test”); jsonObject2.put(“test”, “test”); assertEquals(jsonObject1.get(“test”), jsonObject2.get(“test”)); 上述测试成功。 jsonObject = new SlackMessageRequest(channel, message).buildBody(); String channelAssertion = jsonObject.getString(SlackMessageRequest.JSON_KEY_CHANNEL); String messageAssertion = jsonObject.getString(SlackMessageRequest.JSON_KEY_TEXT); assertEquals(channel, channelAssertion); assertEquals(message, messageAssertion); 但上述两个请求失败了。 堆栈跟踪表明channelAssertion和messageAssertion为null,但不确定原因。 我的问题是: 为什么上述两个断言都失败了? 下面是SlackMessageRequest 。 public class SlackMessageRequest extends BaseRequest { // region Variables public static final String […]

本地aar库的传递依赖性

我们正在为我们的API制作一些库,我们将为外部开发人员提供更轻松的生活。 因此,我们创建了新的库项目,并将Retrofit和其他一些库作为依赖项。 dependencies { compile ‘com.android.support:appcompat-v7:23.3.0’ compile ‘com.google.code.gson:gson:2.6.2’ compile ‘com.squareup.retrofit2:retrofit:2.0.1’ compile ‘com.squareup.retrofit2:converter-gson:2.0.1’ compile ‘com.squareup.okhttp3:okhttp:3.2.0’ } 现在,当我们构建它时,它会生成aar文件。 但是现在当我们将aar文件放到libs目录并将其设置为依赖项时,我们仍然必须在用户的build.gradle文件中添加相同的依赖build.gradle ,这很糟糕。 它应该来自图书馆,对吗? repositories { flatDir { dirs ‘libs’ } } dependencies { compile(name: ‘ourlibrary’, ext: ‘aar’) { transitive = true; } } 如何使transitive = true工作?

文件res / drawable / abc_ic_ab_back_material.xml来自可绘制资源ID#0x7f020016

最近android support library更新到23.2.0 。 下载android sdk并将android设计支持库更新到23.2.0 ,此错误反复发生。 我的项目甚至无法编译。 完整的错误日志说: 03-02 12:00:04.945 9324-9324/com.creditease.zhiwang.debug E/AndroidRuntime: FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo{com.creditease.zhiwang.debug/com.creditease.zhiwang.activity.TabContainerActivity}: android.content.res.Resources$NotFoundException: File res/drawable/abc_ic_ab_back_material.xml from drawable resource ID #0x7f020016 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2309) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363) at android.app.ActivityThread.access$700(ActivityThread.java:169) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1330) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5528) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025) at dalvik.system.NativeStart.main(Native […]

如何使用Gradle Build System在Android Studio中运行PhoneGap项目

我正在尝试使用Gradle构建系统设置新的PhoneGap应用程序并在Android Studio中运行。 目前我已成功创建PhoneGap项目并导入Android Studio。 这一切似乎都运行良好,但我无法弄清楚如何将其移动到Gradle构建系统,或者即使它可能。 有人可以帮忙吗?

使用多项目结构,Gradle构建速度非常慢

在包含大约140个项目/库的多项目设置中使用gradle构建时,构建时间需要1小时22分钟。 而我正在使用–parallel 。 我们的ANT构建只需不到20分钟而无需并行构建。 这正是我所做的。 ./gradlew clean ./gradlew build –parallel 我做了一点测试,似乎德兴花了最长的时间。 有没有办法让gradle过程重新使用它已经dexed的东西? 如果已经构建了库,则应该重新使用已经dexed的库。 我看到了选项–no-rebuild ,但是当我使用该选项运行时,它会显示以下内容 File ‘/path/to/project/build/libs/project.aar’ specified for property ‘bundle’ does not exist. 我用通用的东西替换了文件路径和项目名称。 使用Gradle 1.9-rc-3 其他信息(2014年1月15日): preDexDebug和preDexRelease在每个项目上花了很长时间。 比任何其他任务都长得多。 进展(2014年1月15日): 好的,现在,我将preDexLibraries = false放入所有build.gradle文件中。 但是,我仍然想知道一个集中的地方,我可以放入该条目,它会影响所有其他build.gradle文件。 但是,现在dexRelease和dexDebug需要很长时间。 有什么方法可以告诉构建只做dexDebug或dexRelease并跳过另一个? 进展(2014年1月15日): 使用assembleDebug工作。 但是,它似乎仍然没有重新使用已经dexed库。 因为德兴仍然需要永远。 每个项目大约需要一分钟。 有没有办法让gradle重新使用已经dexed的库? 或者,为什么构建仍然需要大约一个小时? 我们的ANT过程不到15分钟。

Android测试模块(Gradle Plugin 1.3)不起作用:“找不到调试类”

我正在尝试设置一个unit testing模块,如android studio博客文章中所述。 但是,执行gradle构建失败告诉我“找不到名为’debug-classes’的配置”。 Debug是它试图构建的targetVariant的名称,但我不明白这里出了什么问题。 这是我的测试模块的gradle文件。 apply plugin: ‘com.android.test’ android { compileSdkVersion 22 buildToolsVersion “22.0.1” targetProjectPath ‘:app’ targetVariant ‘debug’ } 这是描述新测试模块function的博客文章。 http://android-developers.blogspot.com/2015/07/get-your-hands-on-android-studio-13.html 我正在使用Gradle插件v1.3.0

使用Gradle和ProGuard的Android Build:“必须在输入jar之后指定输出jar,否则它将为空”

我正在使用Gradle创建一个具有不同风格的构建。 它一直运行到现在,直到我想启用Proguard 。 我为我的Release Build启用了minifyEnabled ,现在我有一个exception说: “ Caused by: org.gradle.internal.UncheckedException: java.io.IOException: The output jar […/app/build/intermediates/multi-dex/dev/release/componentClasses.jar] must be specified after an input jar, or it will be empty. “ 有人知道造成这种exception的原因吗? 我基本上想在发布我的应用程序之前启用ProGuard。 这是我的Gradle文件,如下所示。 lintOptions { abortOnError false } dexOptions{ incremental true javaMaxHeapSize “4g” } defaultConfig { applicationId “…” minSdkVersion 14 targetSdkVersion 22 versionCode 1 versionName “1.0” multiDexEnabled […]

Android Studio 3.1.2:无法解析:运行时

我最近将Android Studio更新为3.1.2。 更新后,我尝试打开现有项目,并在编译项目时显示多个gradle错误。 这些错误指出我将‘compile’语句更新为‘implementation’ ,我做了,仍然遇到了一些错误,我后来通过将我的google play和firebase sdks更新到最新版本来解决这些错误。 现在我不知道为什么我的IDE会出现以下错误(请查看截图)。 无法解决:运行时 )。 现在我做了Build> Clean Project 错误是找不到runtime.aar(android.arch.lifecycle:runtime:1.0.3)。 屏幕截图 接下来做什么? 解: 我更新了所有谷歌播放服务和firebase库。 为了解决无法find运行时的问题,我只是简单地将google()安排在存储库的顶部。

使用aar和source jar将Android库发布到Maven

有人可以给我一个关于如何使用maven-publish gradle插件发布带有aar和source jar的com.android.library项目/模块的提示吗? 我可以使用旧的maven插件执行此操作 – 但我想使用新的maven-publish插件。

“指定的Android SDK Build Tools版本(26.0.0)将被忽略……”

在Android Studio 3中,我看到了这个问题: 指定的Android SDK Build Tools版本(26.0.0)将被忽略,因为它低于Android Gradle Plugin 3.0.0的最低支持版本(26.0.2)。 将使用Android SDK Build Tools 26.0.2。 要取消此警告,请从build.gradle文件中删除“buildToolsVersion ’26 .0.0’”,因为每个版本的Android Gradle Plugin现在都有一个默认版本的构建工具。 问题是因为这些是具有buildToolsVersion ‘26.0.0’的第三方/供应商模块, buildToolsVersion ‘26.0.0’我无法修改他们的build.gradle而不会分配每个子模块。 有没有办法设置一个覆盖所有子build.gradles的全局buildToolsVersion?