Articles of android gradle

将多个项目和单个项目导入Android Studio

我需要能够在android studio中导入我们所有的项目,我需要能够将一个项目及其依赖项导入到android studio中。 目前的项目结构: 科/ 应用/ PROJECT1 / 的build.gradle 项目2 / 的build.gradle 项目3 / 的build.gradle 的build.gradle settings.gradle gradlew gradlew.bat gradle产出/ 其他的东西/ 我可以导入branch/Apps/build.gradle ,并导入Apps下的所有项目,并编译settings.gradle所有项目,并且工作正常。 但是,我还需要能够将一个项目及其依赖项导入到android studio中并且工作正常。 现在,当我尝试导入branch/Apps/Project1/build.gradle Android工作室会出现以下错误: You are using an old, unsupported version of Gradle. Please use version 1.8 or greater. Please point to a supported Gradle version in the project’s Gradle settings or […]

使用JaCoCo和Gradle进行espresso测试的代码覆盖率为0%

在我的esCopresso测试的JaCoCo代码覆盖率报告中,错过了所有的线和分支。 我在一个使用gradle 1.5.0构建的Android应用程序中使用JaCoCo。 我的gradle配置: apply plugin: ‘jacoco’ android { buildTypes { debug { testCoverageEnabled = true } } } jacoco { version ‘0.7.5.201505241946’ } 我关注这篇博文: Android应用程序的测试覆盖率报告 。 当我运行createDebugCoverageReport ,报告将在正确的文件夹(build / reports / coverage / flavor / debug / index.html)中生成。 但是,当我打开覆盖率报告时,我的代码覆盖率在每个指令和分支上都是0%。 一切都“错过”了。 首先我认为问题可能是源代码和测试代码的位置,但它们位于/src/main/java/和/src/androidTest/java/ 任何人都知道如何解决这个问题?

不同的风格构建types的不同字符串资源

假设我有一个字符串,我想根据我的构建types和风格进行更改。 实现这一目标的最佳方法是什么? 我创建了以下文件夹结构: app/src/main/ app/src/flavor1/ app/src/flavor2/ app/src/main/res/values/my_strings.xml app/src/flavor1/res/values/my_strings.xml app/src/flavor2/res/values/my_strings.xml 当我只想要每种口味的不同字符串时,这一切都有效。 现在我还要按构建types分隔这些字符串,所以我做了类似这样的事情: app/src/main/ app/src/flavor1/ app/src/flavor2/ app/src/flavor1Release/ app/src/flavor2Release/ 现在出现的问题是,如果我想在app/src/flavor1Release/res创建values文件夹,我会收到values文件夹已经存在的消息。 我该如何解决这个问题?

使用多模块android库进行Gradle配置

回到历史 我有这个Android库,开发人员可以正常使用 compile ‘com.companyname.sdk:android-sdk:2.x’ 现在我们正在从头开始重新编写库来创建V3。 在这次重新组织中,我们设法将lib分解为模块。 所以可以说在V3上我们会有以下工件 compile ‘com.companyname.sdk:core:3.x’ compile ‘com.companyname.sdk:extra_1:3.x’ compile ‘com.companyname.sdk:extra_2:3.x’ compile ‘com.companyname.sdk:extra_ …. 这将在gradle结构上给出以下模块: root: |- test_app (apk just for testing, not deployed anywhere) |- sdk (aka: core) |- extra_1 |- extra_2 |- extra_ … etc 对于build.gradle中的每个extra模块,都provided (‘:sdk’)了一个provided (‘:sdk’)以便可以使用sdk模块中的所有内容,但实际上并不是在自己内部编译它。 但我还想为现有的主机应用程序提供一个简单的迁移路径。 这意味着,我希望V3上还有以下工件,它结合了core和extra_1 (它基本上是V2上的当前内容)。 compile ‘com.companyname.sdk:android-sdk:3.0.0’ 理论上这一切听起来都不错,但是我很难把它想象成一个gradle结构,以便我轻松导出所有这些。 我想要实现的目标 所以我希望能够在构建期间生成以下工件: android-sdk包括core和extra_1 core extra_1 ……所有其他额外的东西 我试过了什么 […]

Gradle安装有代理问题

我正在讨论在Jenkins上的代理后面的公司网络中的服务器上构建android项目的问题。 尝试过jenkins gradle以及gradlew。 以下是打开调试模式后的错误消息。 17:12:31 17:12:40.482 [INFO] [com.android.build.gradle.internal.DependencyManager] Parsing /opt/android/tools/package.xml 17:12:32 17:12:42.383 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] DaemonExpirationPeriodicCheck running 17:12:42 17:12:52.384 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry. 17:12:42 17:12:52.384 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired. 17:12:42 17:12:52.384 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry. 17:12:46 17:12:55.512 [WARN] [com.android.build.gradle.internal.DependencyManager] Failed to connect to host: https://dl.google.com/android/repository/addons_list-3.xml […]

具有ABI拆分的特定体系结构的Gradle依赖性

我面临这个问题似乎无法解决。 这是场景: 我正在构建使用gradle依赖的apk, 这种依赖是特定于体系结构的,因此对于x86的apk我需要不同的依赖关系和arm不同。 我用产品口味解决了它: productFlavors { dev { … } develx86 { … } production { … } productionx86 { … } } 那么我定义了这样的依赖: develCompile ‘dependency_for_arm’ develx86Compile ‘dependency_for_x86’ 这很好用。 但最近我不得不在我的应用程序中添加renderscript的用法。 我是这样做的: renderscriptTargetApi 22 renderscriptSupportModeEnabled true 在此之后,当我在Google Play上传apk时,它说它的apk适用于arm,x86。 我不知道这是怎么回事。 你可以认为它将在具有不同CPU的设备上崩溃(如果我为arm生成apk并且用户将在x86 app上执行它将崩溃)。 所以我决定使用ABI分裂: splits { abi { enable true reset() include ‘armeabi’, ‘x86’ universalApk false } […]

如何为Google Play发布打包仅限WatchFace的应用

至今 我正在为android服装开发一款表盘应用程序。 我创建了2个模块: 磨损 – 可在开发中正常工作的表盘 移动 – 评论建议的没有活动的空模块 我已将磨损模块添加到移动设备作为依赖性,如Playstore的包装磨损应用程序中所述 该应用程序在Playstore中处于alpha状态。 我已经上传了mobile-release.apk。 该应用程序安装在我的手机上,但磨损模块,WatchFace将不会安装在我的磨损设备上。 这是我的问题。 我究竟做错了什么? 这是我的清单和Gradle配置 移动清单 穿上清单 项目的Build.gradle buildscript { repositories { jcenter() } dependencies { classpath ‘com.android.tools.build:gradle:2.0.0’ // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } […]

转换Android项目以使用Gradle Script Kotlin

我想使用Gradle Script Kotlin将我的Android项目中的build.gradle文件从Groovy转换为Kotlin 。 我喜欢Kotlin中的所有这些,但如果有一些限制,那么尽可能多。 让我们假设我只有一个空项目,刚从Android Studio“新应用程序”模板创建( minSdkVersion 15 ,如果重要的话,使用AppCompat)。 我需要采取哪些步骤才能将此项目转换为Gradle Script Kotlin。 我希望这对我(以及其他所有人)来说应该是一个很好的起点,我可以自己处理转换任何自定义逻辑。

Gradle 3.0“编译”到“实现”迁移不适用于fileTree

我正在尝试删除所有的lint警告,但我仍然坚持使用其中一个compile implementation迁移。 如果我改变了这个: compile fileTree(include: [‘*.jar’], dir: ‘libs’) 对此: implementation fileTree(include: [‘*.jar’], dir: ‘libs’) 那么应用程序将无法构建,我收到以下错误: 错误:无法解析以下类的超types。 请确保您在类路径中具有所需的依赖项:…未解析的超types:veg.mediaplayer.sdk.MediaPlayer.MediaPlayerCallback 这是一个bug还是我应该为fileTree做些不同的事情? 我找不到任何解释文档: https : //developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html 。 我已经将所有gradle文件中的所有其他行从compile更改为implementation ,它们都可以正常工作。 编辑 :我还应该注意,这个特定的模块在lib文件夹中有一个jar。 对于没有jar子的模块,它可以工作。 编辑2:我注意到,如果有一个jar子,它实际上并不总是会发生。 我有另一个模块与jar(我创建),它工作正常。 mediaplayersdk.jar肯定有问题。 鉴于它只是抱怨从jar中的文件实现的回调,我想这是它被卡住的地方。 我也尝试使用Android Studio 3.1.0-beta1和gradle 4.4,但它没有帮助。

配置特定的gradle风味组合

我想知道是否可以为特定的风味组组合提供文件或配置设置。 例如,我有2个风味组,每组有2种不同的风味: 风味组:版本 V2 V3 风味组:types 自由 充分 订购“types”,“版本”时,我可以构建我的应用程序的4种不同风格: FreeV2 FreeV3 FullV2 FullV3 我的源代码树看起来像这样: /src /free /res /full /res /v2 /java /res AndroidManifest.xml (features and permissions for v2 flavors) /v3 /java /res AndroidManifest.xml (features and permissions for v3 flavors) 这正是我想要的,并且对我的项目非常有效。 但是,我希望我能为特定的风味组合组合提供文件。 例如,我想为FullV3和FullV2提供不同的AndroidManifest。 我不认为这是可能的,或者? 例如: /src /free /res /full /res /v2 /java /res AndroidManifest.xml (features and […]