Articles of gradle

Proguard问题与Gradle 3.0.0

我正在尝试使用ProGuard和新的Gradle 3.0.0版本创build一个APK。 我在我的ProGuardconfiguration文件中忽略了一些我认为被忽略的类的警告。 相同的configuration适用于Gradle 2.3.3,但似乎在3.0.0上打破。 警告非常多,几乎没有读取ProGuardconfiguration。 我的build.gradle buildscript { repositories { mavenCentral() jcenter() google() } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' classpath 'com.google.gms:google-services:3.0.0' classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2' } } allprojects { repositories { jcenter() maven { url 'https://jitpack.io' } maven { url 'https://maven.google.com' } } } android{ buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig […]

Android工作室在更改project.archivesBaseName时上传旧apk

我已经configuration了build.gradle,所以每次创build版本构build时都会增加version.properties中的版本代码。 我也使用apk文件的版本代码。 然而,Android工作室似乎忽略了版本的变化,所以当我从ide运行debugging版本,然后组装使用控制台发布版本(这增加了版本号),然后再次从IDE运行debugging,它正确地build立一个与增加版本的apk文件名,但上传旧APK到设备。 所以为了让我们有一个版本代码= 377。 从IDE运行debugging版本 – >构build并上传GradleTestApp-v1.5( 377 )-debug-unaligned.apk gradle assambleRelease – >构buildGradleTestApp-v1.5( 377 )-release-unsigned.apk,然后将versionCode增加到378 再次从IDE运行debugging版本 – >生成GradleTestApp-v1.5( 378 )-debug-unaligned.apk(正确的行为),然后将旧的GradleTestApp-v1.5( 377 )-debug-unaligned.apk上传到设备 我错过了什么? 这是我的gradle脚本: ext{ versionPropFile = 'version.properties' Properties versionProps = getVersionProps() } project.archivesBaseName=project.archivesBaseName+"-v"+versionProps['name'] + "(" + versionProps['code']+")" def Properties getVersionProps(){ def Properties versionProps = new Properties() versionProps.load(new FileInputStream(file(versionPropFile))) return versionProps } task('increaseVersionCode') << […]

使用Scala与Gradle for Android项目

似乎有一个内存泄漏的地方。 在IntelliJ中设置项目并使用Gradle包装器时: ./gradlew assembleDebug –debug 大约5分钟后,我得到以下内容: 14:30:15.245 [INFO] [org.gradle.api.Project] processing scala/collection/SeqViewLike$$anon$5.class… 14:30:53.132 [INFO] [org.gradle.api.Project] processing scala/collection/SeqViewLike$$anon$6.class… 14:33:51.027 [ERROR] [org.gradle.api.Project] 14:33:51.028 [ERROR] [org.gradle.api.Project] UNEXPECTED TOP-LEVEL ERROR: 14:33:51.028 [ERROR] [org.gradle.api.Project] java.lang.OutOfMemoryError: Java heap space 14:33:51.028 [ERROR] [org.gradle.api.Project] at java.util.HashMap.<init>(HashMap.java:209) 14:33:51.029 [ERROR] [org.gradle.api.Project] at com.android.dx.ssa.LocalVariableInfo.<init>(LocalVariableInfo.java:66) 14:33:51.029 [ERROR] [org.gradle.api.Project] at com.android.dx.ssa.LocalVariableExtractor.<init>(LocalVariableExtractor.java:72) 14:33:51.029 [ERROR] [org.gradle.api.Project] at com.android.dx.ssa.LocalVariableExtractor.extract(LocalVariableExtractor.java:54) 14:33:51.029 [ERROR] [org.gradle.api.Project] […]

编写Gradle脚本为Eclipse Android Test项目运行unit testing用例

我有一个简单的HelloWorld Android项目(在Eclipse IDE中构build),我可以在这个项目的cmd提示符下成功执行“gradle build”。 另外我也为它编写了一个简单的JUnit Androidtesting项目,并且在Eclipse中运行良好。 现在我想运行这个testing项目或unit testing用例(如果我的理解是错误的!)使用Gradle脚本。 我怎么做? 以下是我正在使用的build.gradle文件。 我想知道如何编写脚本代码来自动执行testing用例。 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.10.+' } } apply plugin: 'android' dependencies { compile fileTree(dir: 'libs', include: '*.jar') } android { compileSdkVersion 19 buildToolsVersion "19.0.3" sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] […]

Android的风味和资源文件

我有Android的gradle构build问题。 长话短说,我创造了两种口味: productFlavors{ abcDemoFree{ } abcDemo{ } } 每种口味都有他自己的活动(Settings.java)和layout(settings_layout.xml)。 从主要两个文件被删除,所以Settings.java和settings_layout.xml只存在于口味。 abcDemoFree – java – Settings.java – res – settings_layout.xml abcDemo – java – Settings.java – res – settings_layout.xml Android Studio创build了4个构build变体: abcDemoFreeDebug abcDemoFreeRelease abcDemoDebug abcDemoRelease 一切正常,我可以创buildapk与行为,我期待从每一个风味。 问题是,当我切换到一个buildVariant,例如abcDemoDebug,android studio从另一个味道的资源文件报告错误,在我的例子从abcDemoFreeDegub / res / settings_layout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" </LinearLayout> 这些线 xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" […]

外部的AndroidManifest.xml不会出现在项目视图窗格下

我一直在使用Android Studio和Gradle开发一个Android项目。 我的项目的AndroidManifest.xml位于外部文件夹下。 我正在使用build.gradle文件中的以下代码指向它: sourceSets { main { manifest.srcFile '..\\..\\..\\sources\\AndroidManifest.xml' } } 一切都很好,项目编译和运行,除了使用项目视图窗格时,我找不到项目结构下的AndroidManifest.xml文件。 也许我需要添加一些其他的build.gradle文件?

为androidTest定义buildConfigField

我在BuildConfig定义了一个特定的字段,用于在运行时获取URL 。 所以,对于每个构buildtypes,我使用不同的string: prod { buildConfigField "String", "BASE_URL", "\"abc.com\"" } debug { buildConfigField "String", "BASE_URL", "\"efg.com\"" } 运行androidtesting时可以定义一个不同的URL吗? 我试着把这个设置放在sourceSets->androidTest ,但是没有被接受。

解决Android Studio中不推荐使用的NDK警告

我有一个使用OpenCV的Java包装进行image processing的Android应用程序。 要将OpenCV添加到项目中,我必须将以下行添加到gradle.properties: android.useDeprecatedNdk=true 这一直工作正常,没有任何警告或错误(我知道),直到我更新了我的Android Studio和Gradle很长一段时间(我现在使用Gradle 2.2.2和Android Studio 2.2.2)。 现在,当我构build我的应用程序时,我在消息窗口中看到以下警告: 警告:find本机C / C ++源代码,但似乎没有configurationNDK选项。 请注意,如果您有Android.mk,则不用于编译。 推荐的解决方法是通过添加以下命令来删除默认的jni源代码目录: 警告:gradle.properties中由useDeprecatedNdk标志启用的不推荐的NDK集成将很快从Android Gradle插件中移除。 即使这个时候的构build是成功的,但是由于第二个警告提示,这很可能会在未来造成一些麻烦,所以我想尽快解决它们。 有谁知道如何解决这些警告? 还有没有其他的方式来导入OpenCV到Android项目,除了添加所有的编译代码(.so文件),并设置我之前提到的标志? 任何帮助,将不胜感激。

我们如何通过组合不同的模块来创build一个单一的库?

我想从我的项目中构build单个库,该项目使用许多依赖项和资源。 如果cardview作为jar被导入,它将不具有它的资源,但是当它被添加为aar时,它被添加为另一个模块。 所以我不能把它合并成一个单独的库。 我不想将我的项目提交到存储库。 如何build立图书馆,提前致谢!

按密度分割的APK仍包含所有资源

我决定试试apk,以减less我的apk的大小。 我将下面的内容添加到我的gradle构build文件中 splits { // Configures multiple APKs based on screen density. density { // Configures multiple APKs based on screen density. enable true // Specifies a list of screen densities Gradle should not create multiple APKs for. exclude "ldpi" // Specifies a list of compatible screen size settings for the manifest. compatibleScreens 'small', 'normal' […]