Articles of android gradle

Gradle(android实验性插件)忽略项目依赖关系

我在下面的项目结构中使用Gradle Android实验性插件: Root Project |– app |– my-library settings.gradle include ':my-library', ':app' 的build.gradle buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle-experimental:0.2.0' } } allprojects { repositories { jcenter() } } 应用程序/的build.gradle apply plugin: 'com.android.model.application' model { android { compileSdkVersion = 23 buildToolsVersion = "23.0.0" defaultConfig.with { applicationId = "a.bundle.id" minSdkVersion.apiLevel = 15 targetSdkVersion.apiLevel […]

如何使用Android Gradle Plugin 3.0.0+来操作变体输出?

Gradle Android插件的最新版本(3.0.0)已经打破了它的操作variables输出的 API。 这个API用于处理在构build过程中创build的文件(比如AndroidManifest.xml),并且已经被删除以改进configuration时间。 什么新的API可用于操作变体输出,它们与2.X API有什么不同?

切换到Gradle:为什么我必须保持自定义视图被混淆?

我正在把一个项目从ant移到Gradle,但是有一些我无法弄清楚。 FACTS 在构build发布APK(即混淆)后,我注意到应用程序崩溃严重 。 这个错误可以概括为: java.lang.NoSuchMethodException: <init> [class android.content.Context, interface android.util.AttributeSet] 一个debugging(即非模糊)的APK工作得很好,所以我猜它必须做我的ProGuard / DexGuardconfiguration。 我试图通过添加以下语句来保持类的引用: -keep class com.mypackage.MyCustomView 结果, 释放APK工作得很好 。 然后我做了一些研究,并尝试了更具体的ProGuard / DexGuardconfiguration: -keep public class * extends android.view.View { public <init>(android.content.Context); public <init>(android.content.Context, android.util.AttributeSet); public <init>(android.content.Context, android.util.AttributeSet, int); public void set*(…); } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * […]

ConsumerProguardFiles与ProguardFiles

我试图build立一个应用程序,其中包含一个库模块La与proguard,我注意到,图书馆没有被混淆。 试图理解为什么。 在这个时候,这是我的buildType: release { minifyEnabled false useProguard true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } 经过一些search,我遇到了ConsumerProguardFiles函数,其中指出: ProGuard规则文件包含在已发布的AAR中。 这些proguard规则文件将被任何使用AAR的应用程序项目使用(如果启用了ProGuard)。 这允许AAR指定收缩或模糊排除规则。 这只对Library项目有效。 这在应用程序项目中被忽略。 现在,我的库La的buildType如下: release { minifyEnabled false useProguard true consumerProguardFiles 'proguard-rules.pro' } 而现在我的图书馆La正在使用它的proguard规则和库代码被混淆。 所以我的问题是: 1)这种不同行为的原因是什么? 为什么没有ProguardFiles混淆图书馆编程规则,而是忽略它? 2)我猜测,ConsumerProguardFiles所做的是将图书馆的规则与主要的应用程序proguard规则合并。 这个假设是正确的吗? 3)简而言之:为应用程序使用proguardFiles,为库使用ConsumerProguardFiles。 正确? 谢谢你的阅读时间!

我怎样才能使用Android aaptOptions?

aaptOptions.noCompress等的含义是什么? 有人可以向我解释吗? android { aaptOptions { noCompress 'foo', 'bar' ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~' } } 这会影响使用aapt的所有任务。

ADB服务器在macOS上没有确认

我得到这个错误,因为两天前,我更新了我的Android Studio到最新的稳定版本2.3; 我从Gradle控制台得到的完整错误消息是: 07:59:59 E/adb: error: could not install *smartsocket* listener: Address already in use 07:59:59 E/adb: ADB server didn't ACK 07:59:59 E/adb: * failed to start daemon * 07:59:59 E/adb: error: cannot connect to daemon 07:59:59 E/ddms: '/Users/USER_NAME/Library/Android/sdk/platform-tools/adb start server' failed — run manually if necessary 我试图解决这个问题: 杀死所有adb进程,并确保没有进程保持端口5037, adb kill-server (说* server not running […]

android studio找不到指定的文件

每当我尝试运行我的android应用程序,我收到一条错误消息在运行消息日志。 I/O Error: D:\Apps\Application\app\build\intermediates\classes\debug\app.apk (The system cannot find the file specified) 我不相信这是一个编码错误,因为android studio不告诉我,我的java类或xml布局中有错误,但如果你想要代码,请评论如此。 我认为错误是在gradle依赖。 任何人都可以解释如何解决这个问题? Gradle依赖关系: dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.3' compile 'com.google.android.gms:play-services:7.0.0' } 注:我GOOGLE了这个错误,但唯一一个谁也有这个问题是这个人( android studio无法build立 ),但答案不适用于我。

'java'插件与Android插件不兼容

我安装了Android Studio后出现错误,并创build了一个简单的应用程序。 步骤如下: 新鲜下载和安装Android工作室。 创build了一个新项目。 当项目加载时,gradle失败,出现错误: Error:The 'java' plugin has been applied, but it is not compatible with the Android plugins. 模块Gradle文件: apply plugin: 'com.android.application' android { compileSdkVersion 25 buildToolsVersion "25.0.2" defaultConfig { applicationId "info.ankitjc.happybirthday" minSdkVersion 15 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' […]

Gradle:无法创buildAppPlugintypes的插件

我似乎无法用Gradle构build我的Android应用程序。 的build.gradle: buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.6.+' } } apply plugin: 'android' repositories { mavenCentral() } dependencies { compile 'com.intellij:annotations:12.0' } android { compileSdkVersion 19 buildToolsVersion "19" defaultConfig { minSdkVersion 14 targetSdkVersion 19 versionCode = 82 versionName = "0.6.1" } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs […]

在Instant App中应用插件“kotlin-android”会导致“null不能转换为非空types的com.android.build.gradleBasePlugin”

我一直在试图将最新公开发布的Android即时应用与Kotlin编程语言结合起来。 在使用以下(标准?)设置创build我的项目后,当我尝试构build应用程序时,出现错误消息“null不能转换为非空typescom.android.build.gradle.BasePlugin” 。 使用Kotlin可以很好的使用标准的“com.android.application”模块; 只有当我尝试在即时应用程序模块中使用它时,才会引发错误。 顶级build.gradle : buildscript { repositories { maven { url 'https://maven.google.com' } jcenter() } dependencies { classpath "com.android.tools.build:gradle:3.0.0-alpha1" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.2-4" } } // … 应用程序模块build.gradle ,其中Kotlin工作: apply plugin: 'com.android.application' apply plugin: 'kotlin-android' // This will work. android { compileSdkVersion 25 buildToolsVersion "25.0.2" defaultConfig { // … } buildTypes { release { […]