Articles of gradle

如何在Gradle中更改libs目录?

我想将Zbar集成到我的应用程序中,但似乎无法弄清楚如何使用新的Android Studio实现这一目标。 我已经查看了示例并已复制代码而没有任何问题。 我遇到的问题是将libs添加到我的项目中我似乎无法弄清楚如何做到这一点。 有人可以带我走过吗?

Android – 如何获得Flavor的ApplicationId

我正在构建一个具有不同构建变体风格的应用程序。 口味是“免费”和“付费”。 我想在我的java类上创建一些逻辑,只有在应用程序为“付费”时才会触发。 因此,我需要一种方法来在gradle构建过程中设置“applicationId”,如下所示: gradle.build productFlavors { free { applicationId “com.example.free” resValue “string”, “app_name”, “Free App” versionName “1.0-free” } paid { applicationId “com.example.paid” resValue “string”, “app_name”, “Paid App” versionName “1.0-paid” } 一旦我有了应用程序ID,我就可以这样做: if(whateverpackageid.equals(“paid”)) { // Do something or trigger some premium functionality. } 我是否正确地说,在gradle构建过程中,“applicationId”最终会在应用程序编译后成为“包名”? 如果是这样,获得“应用程序ID”或“包名称”的最佳方法是什么,以便我可以在我的java文件中实现一些与风味相关的逻辑?

Gradle sync失败:原因:打开zip文件时出错Corrupt Dependency Cache

嘿伙计我是Android Studio的新手,刚刚开始学习Udacity的这个在线课程“开发Android应用程序”。问题是我正在开发的项目与“ Sunshine ”课程保持一致,未能正确同步。 .. 这是事件日志中显示的消息.. Gradle sync失败:原因:打开zip文件时出错 日志的完整描述: **2017-03-04 08:14:32,358 [ 61978] WARN – nal.AbstractExternalSystemTask – Cause: error in opening zip file com.intellij.openapi.externalSystem.model.ExternalSystemException: Cause: **error in opening zip file** at com.android.tools.idea.gradle.project.sync.idea.ProjectImportErrorHandler.getUserFriendlyError(ProjectImportErrorHandler.java:86) at com.android.tools.idea.gradle.project.sync.idea.AndroidGradleProjectResolver.getUserFriendlyError(AndroidGradleProjectResolver.java:361) at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver$ProjectConnectionDataNodeFunction.fun(GradleProjectResolver.java:769) at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver$ProjectConnectionDataNodeFunction.fun(GradleProjectResolver.java:749) at org.jetbrains.plugins.gradle.service.execution.GradleExecutionHelper.execute(GradleExecutionHelper.java:227) at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.resolveProjectInfo(GradleProjectResolver.java:112) at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.resolveProjectInfo(GradleProjectResolver.java:72) at com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemProjectResolverImpl.lambda$resolveProjectInfo$0(RemoteExternalSystemProjectResolverImpl.java:37) at com.intellij.openapi.externalSystem.service.remote.AbstractRemoteExternalSystemService.execute(AbstractRemoteExternalSystemService.java:59) at com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemProjectResolverImpl.resolveProjectInfo(RemoteExternalSystemProjectResolverImpl.java:37) at com.intellij.openapi.externalSystem.service.remote.wrapper.ExternalSystemProjectResolverWrapper.resolveProjectInfo(ExternalSystemProjectResolverWrapper.java:49) at com.intellij.openapi.externalSystem.service.internal.ExternalSystemResolveProjectTask.doExecute(ExternalSystemResolveProjectTask.java:51) at […]

Android Studio:整合Butterknife?

我正在尝试将Butterknife实现到我的android工作室项目中。 但是,当我这样做时,我在@InjectView上收到错误“无法解析符号InjectView”。 我没有成功地实施Butterknife吗? 活动代码: package com.example.rodf.testapp; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; public class MainActivity extends ActionBarActivity { @InjectView(R.id.tvHelloWorld) TextView tv1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } 布局: gradle文件: apply plugin: ‘com.android.application’ android { compileSdkVersion 21 buildToolsVersion “21.1.2” defaultConfig { applicationId “com.example.rodf.testapp” minSdkVersion 15 targetSdkVersion 21 versionCode 1 versionName […]

在gradle中定义一个字符串,并使用特定于flavor的applicationId

我已经看到了操纵gradle构建任务的脚本,现在我想知道是否可以在`defaultConfig之外设置一个字符串,但将其视为所有风格的默认值。 基本上我有多种口味,所有口味都有一个特定的ApplicationId。 我想使用该id来设置稍后在我的java代码中使用的字符串资源。 defaultConfig { minSdkVersion 11 targetSdkVersion 21 versionCode 1 versionName “1.0” } productFlavors { one { applicationId “com.my.app.one” } two { applicationId “com.my.app.two” } } 我想设置一个像这样的字符串: resValue “string”, “authority”, applicationId + “.dataprovider” 我尝试过的: 如果我把它放在defaultConfig部分,applicationId仍然是null,因此我得到一个错误的字符串 把它放到每个风味的部分可以工作,但因为我有多种口味会产生很多代码重复 寻找替代方案。 PS我正在使用Android Studio 0.8.12。

Android Studio和Gradle,@NotNull参数的参数0

我正在尝试使用Android Studio中的Gradle制作应用程序,但我得到的只是此错误消息: java.lang.IllegalArgumentException: Argument 0 for @NotNull parameter of com/android/tools/idea/jps/builder/AndroidGradleBuilder.createBuildTask must not be null: Argument 0 for @NotNull parameter of com/android/tools/idea/jps/builder/AndroidGradleBuilder.createBuildTask must not be null 我试过调试这个,实际上我无法弄清楚问题是什么。 有想法的人吗?

将Espresso与Proguard和Gradle集成

我正在使用的应用程序正在使用Gradle构建。 我正在尝试添加Espresso作为仪器测试的依赖项。 应用程序本身有一些依赖项,其中一个是Guava 15.0。 为了使这个工作,我使用具有显式依赖关系的Espresso版本,并排除捆绑的Guava(使用我自己的)。 dependencies { … instrumentTestCompile fileTree(dir: ‘libs/espresso-dependencies’, include: ‘*.jar’) compile ‘com.google.guava:guava:15.0’ … } 当我尝试使用gradle connectedInstrumentTest构建时,我得到与缺少方法和类相关的错误。 java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState at com.google.android.apps.common.testing.ui.espresso.base.InputManagerEventInjectionStrategy.(InputManagerEventInjectionStrategy.java:35) 添加-keep class com.google.common.** { *; } 我的Proguard配置使一切正常。 似乎正在发生的事情是,Proguard只分析主应用程序使用的类,而不是寻找仪器测试依赖项的使用。 我的主应用程序未使用但仪器测试所需的方法/类似乎已经过优化。 如何使Proguard保留Espresso及其依赖项所需的Guava类/方法? 手动指定它们(有很多用法)似乎并不实际,并且保持所有这些都违背了Proguard的目的。

在Android Studio中更改布局后需要清理项目

当我在XML布局文件中更改小东西时,比如TextInputEditText maxLength ,我需要清理项目以让AS拾取更改。 res文件夹的结构是: 水库 – 布局 – drawables – …… 没有更多的子文件夹。 AS 3.1.1,Gradle 4.6。 我试图在gradle中添加它: sourceSets { main.res.srcDirs = [ ‘src/main/res/anim’, ‘src/main/res/color’, ‘src/main/res/drawable’, ‘src/main/res/drawable-hdpi’, ‘src/main/res/drawable-mdpi’, ‘src/main/res/drawable-xhdpi’, ‘src/main/res/drawable-xxhdpi’, ‘src/main/res/drawable-xxxhdpi’, ‘src/main/res/menu’, ‘src/main/res/mipmap-dpi’, ‘src/main/res/mipmap-hdpi’, ‘src/main/res/mipmap-mdpi’, ‘src/main/res/mipmap-xhdpi’, ‘src/main/res/mipmap-xxhdpi’, ‘src/main/res/mipmap-xxxhdpi’, ‘src/main/res/raw’, ‘src/main/res/values’, ‘src/main/res/values-land’, ‘src/main/res/values-large’, ‘src/main/res/values-v21’, ‘src/main/res/valuesw820dp’, ‘src/main/res/xml’, ‘src/main/res/layout’, ‘src/main/res’] } 有没有办法防止每次清理项目以使更改生效? 因此,每当我对XML文件进行更改并运行应用程序时,我都应该看到我的更改但是我必须每次都清理项目并且它变得很烦人。

ClassCastException:ApiVersionImpl无法强制转换为java.lang.Integer

我有android + gradle项目。 我尝试启动应用程序时出现以下exception: ‘ClassCastException: com.android.build.gradle.internal.model.ApiVersionImpl cannot be cast to java.lang.Integer: com.android.build.gradle.internal.model.ApiVersionImpl cannot be cast to java.lang.Integer’ buildscript { repositories { mavenCentral() } dependencies { classpath ‘com.android.tools.build:gradle:0.12.1’ classpath ‘com.neenbedankt.gradle.plugins:android-apt:1.+’ } } apply plugin: ‘android’ apply plugin: ‘android-apt’ repositories { mavenCentral() mavenLocal() } dependencies { compile files(‘libs/android-support-v4.jar’) compile ‘org.androidannotations:androidannotations-api:3.0.1’ apt ‘org.androidannotations:androidannotations:3.0.1’ } android { compileSdkVersion 15 […]

ADT Eclipse + Gradle:不完整的BuildConfig.java

我正在使用Android Developer Tools 22,Eclipse Indigo和当前的Gradle Plugin for Eclipse。 现在我想通过在build.gradle文件中定义来使用不同的Flavors: productFlavors{ A { packageName “com.test.A” buildConfig “public final static String FLAVOR = \”A\”;” } B { packageName “com.test.B” buildConfig “public final static String FLAVOR = \”B\”;” } } 据我所知,我可以使用BuildConfig.FLAVOR访问这些variables,但在gen文件夹中生成的BuildConfig.java中缺少FLAVOR的定义。 如果我通过Gradle组装我的项目,则在文件夹build / source / buildConfig / [A | B] / [debug | release] / com / test […]