Articles of gradle

Dagger2生成的类突然从Android Studio中丢失

我已经在Android Studio中使用Dagger2已经好几个月了,但今天它突然停止工作并且给了我以下错误 error: cannot find symbol return Dagger_Injector.builder() ^ symbol: variable Dagger_Injector location: class Initializer Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: Some input files use unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. 1 error 这是失败的代码 @Singleton @Component(modules = {TestService.class, ServiceFactory.class}) public […]

android studio项目中“默认gradle包装”和“本地gradle发行”的区别

在android studio中,当我们构建项目时,有两个选项可用于构建项目: settings-> build Tools-> Gradle->项目级设置 第一个选项是“Use default gradle wrapper” ,第二个选项是“Use local gradle distribution” 我的问题是哪个选项更快,何时使用?

Gradle for Android,AAR和条件依赖项

简短forms :为AAR组织代码/ POM有哪些方法,这样使用该AAR的应用程序只有他们实际需要的依赖项? 长forms : 假设我们有一个依赖于打包为AAR(L)的Android库项目的应用程序。 L包含多个类,任何给定的应用程序(如A)都只使用这些类的子集。 例如: L可能包含本机API Level 11片段的Fragment实现,反向移植的片段和ActionBarSherlock风格的片段 L可能包含常规活动的Activity实现, FragmentActivity , ActionBarActivity和ActionBarSherlock风格的活动 L可以通过LocalBroadcastManager ,Square’s Otto和greenrobot的EventBus引发事件 等等 正如我所看到的,这些案例有两个主要共性: 应用程序通常只关心某些类。 例如,使用Otto的应用程序不关心引用greenrobot的EventBus的代码,或者使用ActionBarActivity的应用程序不关心ActionBarSherlock。 如果AAR是回购中的工件,则应用程序将不关心构建AAR所需的所有可能的上游依赖项。 例如,使用本机API Level 11片段的应用程序将不需要support-v4或actionbarsherlock ,即使AAR本身需要它们来构建AAR 如果我们使用JAR而不是AAR并转储依赖关系管理,这是相当简单的。 构建JAR将具有编译时依赖性(例如, support-v4 )。 但是,使用该JAR的应用程序可以跳过这些依赖项,只要这些应用程序不使用真正需要这些依赖项的类,生活就会很好。 但是,我很难看到如何使用build.gradle文件中指定的AAR和Maven工件完成相同的操作。 如果L具有引用上游依赖关系的dependencies块,那么当应用程序依赖于L时,应用程序将依次传递这些依赖关系。 我相当确定的一个解决方案是将L分成几个库。 例如,使用片段方案,我们可以: L1,包含本机API Level 11版本的片段的实现,以及其他场景所需的任何公共代码。 该库没有上游依赖项。 L2,其中包含使用Android Support包的片段backport的实现。 L2将依赖于L1和support-v4 。 L3,包含使用Sherlock风格片段的实现。 L3将依赖于L1和actionbarsherlock 。 然后,应用程序将选择是依赖于L1,L2还是L3,因此只会获得必要的上游依赖项(如果有的话)。 我的问题是:这是最好的解决方案吗? 或者Gradle for Android,AAR和Maven风格的工件世界还有什么东西可以让应用程序依赖单个L? 我担心库的组合爆炸可能会处理各种上游依赖关系。 我也担心奇怪的应用程序实际上需要多个实现,以及我们是否可以可靠地指定那些依赖项(例如,一个应用程序取决于L1和L2,因为那是该应用程序的作者认为应用程序需要的)。 我知道有一些应用程序可以阻止 […]

Travis CI Build在Android应用程序上失败不支持major.minor版本52

我正在尝试使用此.travis.yml文件在我的Android项目上使用Travis CI构建 language: android android: components: – platform-tools – tools – build-tools-23.0.3 – android-23 – sys-img-armeabi-v7a-android-23 – sys-img-x86-android-23 这是我的应用程序级build.gradle: apply plugin: ‘com.android.application’ android { compileSdkVersion 23 buildToolsVersion “23.0.3” defaultConfig { applicationId “com.myname.myproject” minSdkVersion 19 targetSdkVersion 23 versionCode 1 versionName “1.0” testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner” } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } debug{ testCoverageEnabled […]

如何在Android Arsenal上发布Android库?

我为android创建了一个小型库: https://github.com/linkindrew/easyFTP 也上传到Bintray,等待发布和JCenter批准。如何将它提供给Android Arsenal上的“免费”部分? 这里: https : //android-arsenal.com/free

Gradle build错误:原因:org.gradle.api.internal.ExtensibleDynamicObject

我正在尝试将“ https://code.google.com/p/android-serialport-api/ ”导入Android Studio。 由于这个项目涉及ndk,我按照说明从以下链接构建NDK: http : //tools.android.com/tech-docs/new-build-system/gradle-experimental 但在构建之后,我收到此错误:Gradle项目刷新失败 错误:原因:org.gradle.api.internal.ExtensibleDynamicObject 编辑:我安装了2.5 gradle版本这是我的build.gradle apply plugin: ‘com.android.model.application’ model { android { compileSdkVersion 22 buildToolsVersion “22.0.1” defaultConfig.with { applicationId = “android_serialport_api.sample” minSdkVersion.apiLevel = 17 targetSdkVersion.apiLevel = 22 android.ndk { moduleName = “serial_port” } android.buildTypes { release { minifyEnabled = false proguardFiles += file(‘proguard-rules.txt’) } } android.productFlavors { create(“all”) […]

带有gradle和Google Maps v2的Android Studio

我真的被困在这里了。 所以,我一步一步地遵循本教程 :但它仍然不起作用。 我已经完成了教程中的所有步骤,并找出了哪些新模块(GooglePlayServices)不在模块中,如果打开run->edit配置一般 – general->module我没有看到GooglePlayServices ,我想这是问题,但我可以找不到我要修理它的方法。 一天早我尝试了同样的,但在这种情况下(我实际上不记得我做了什么)模块中的GooglePlayServices和我没有问题cannot resolve symbol ‘maps’ ,但它仍然不起作用,触发错误Error inflating class fragment 我的活动扩展了FragmentActivity import android.os.Bundle; import android.support.v4.app.FragmentActivity; public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } 在两种情况下build.gradle就像在教程中一样: buildscript { repositories { mavenCentral() } dependencies { classpath ‘com.android.tools.build:gradle:0.4’ } } apply plugin: ‘android’ dependencies { compile […]

通过Android Studio菜单和gradlew命令行运行lint之间的区别

当我在命令行上运行以下命令时: ./gradlew -lint 我得到的结果与在Android Studio中选择以下菜单选项的结果不同。 Analyze->Inspect Code… 有谁能解释一下? 这是正常的吗? 一个谨慎的开发人员是否应该同时运行以find他/她项目的所有潜在问题?

proguard gradle调试构建但不是测试

我使用以下命令启用了proguard for debug build: android { buildTypes { debug { runProguard true proguardFile ‘proguard-debug.txt’ } release { runProguard true proguardFile ‘proguard-project.txt’ zipAlign true } } } 我执行此操作时遇到的问题是gradle构建还希望在proguardDebugTest任务期间进行测试。 我似乎无法修改以访问此特定任务。 有没有办法我可以调试调试apk而不是测试apk?

Android Studio 0.4:无法find方法jniDir()

当更新到使用android gradle插件0.7.0和gradle 1.9的Android Studio 0.4时,会发生以下错误: org.gradle.api.internal.MissingMethodException:找不到方法jniDir()… 它指的是我的build.gradle中的以下行: tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask -> pkgTask.jniDir new File(projectDir, ‘native-libs’) } PS:这些答案为我解决了所有其他升级问题: https://stackoverflow.com/a/19496969/1137547 https://stackoverflow.com/a/19461162/1137547