Articles of android gradle

在android中重复WebRTC类

我在我的android应用程序中得到这些错误,这里是LogCat。 > Error:Execution failed for task > ':android:transformClassesWithJarMergingForDebug'. > com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: > org/webrtc/voiceengine/WebRtcAudioRecord.class 我想集成第二个WebRTC到我的android应用程序,我已经集成了TokBox jar在我的项目,现在我试图把VSee SDK在应用程序以及我猜都有WebRTC库,所以,我越来越重复错误,但我无法find一种方法排除其中的一个来解决重复的错误。 到目前为止,我试图在我的应用程序的Gradle构build中添加这个。 > exclude group: 'org.webrtc' 但它不工作,有人可以帮我吗? 提前致谢!

匕首2,Gradle插件和杰克 – 指导要求

我正在用Android Studio(AS 2.1.2 – SDK 24)使用Dagger 2(DI库的首次用户),显然我的第一个想法是“我需要什么依赖来使用它? 看过例子,我可以看到你需要在顶层的build.gradle文件中,你需要一个注释处理器插件: classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 现在Module级别的build.gradle的依赖关系应用了Module的apt插件,所以我最终得到了如下的结果: apply plugin: 'com.neenbedankt.android-apt' // other generic settings – android / buildTypes etc. dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) . . compile 'com.google.dagger:dagger:2.6' apt 'com.google.dagger:dagger-compiler:2.6' provided 'javax.annotation:jsr250-api:1.0' } 问题 我一直在使用我的项目中的杰克工具链和Java 8,并发现上述configuration与杰克不兼容。 为了让杰克和匕首2合作,我研究了我需要的东西,我改变了以下内容: gradle-wrapper.properties: 变成 : distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip build.gradle (顶层) 变成: classpath 'com.google.guava:guava:19.0' // added after […]

构build工作在debugging,发布失败 – ZipException重复条目

我正在将应用程序从2.3更新到牛轧糖(SDK 25)。 当我添加com.android.support:appcompat-v7:25.0.0为了支持ActivityCompat.requestPermissions 。 当我在debugging模式下运行此应用程序运行没有问题,但使用./gradlew assembleDebug运行会导致以下错误: Error:Execution failed for task ':transformClassesWithJarMergingForDebug'. > com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/v4/hardware/display/DisplayManagerCompat.class 当我以debugging模式运行此应用程序时,应用程序没有问题,但是,当我尝试Build APK ,我得到上面的错误。 有没有一种方法可以追踪重复的包裹? 我跑了以下几点: ./gradlew -q dependencies :dependencies –configuration compile ———————————————————— Root project ———————————————————— compile – Classpath for compiling the main sources. +— com.android.support:multidex:1.0.1 +— com.android.support:appcompat-v7:25.0.0 | +— com.android.support:support-vector-drawable:25.0.0 | | \— com.android.support:support-compat:25.0.0 | | \— com.android.support:support-annotations:25.0.0 […]

按密度分割的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' […]

使用Gradle构build本机代码时,符号被剥离

在我的Android项目中,使用最新的Gradle构build工具,我有一个具有本地C代码和一些简单function的文件。 C文件中包含的唯一东西是string.h和jni.h,函数只是返回String和原语。 除了其他源文件夹(java,res等)之外,该文件还被放置在jni目录中。 当我构build应用程序时,它会编译C代码,生成.so文件并将其包含在我的APK中。 问题是.so文件已经删除了所有的符号。 当检查放置在build / intermediate / ndk / obj中的中间.so文件时,所有符号仍然存在。 因此,在生成第一个.so文件之后的某个地方,当它被打包时,一切都被剥离了。 当使用命令行ndk-build构build.so文件时,一切正常,符号也包含在内。 这是Android的Gradle插件(我使用最新的!)的错误还是我错过了什么?

Android工作室和控制台构build的Android APK具有不同的SHA指纹

在构build签名版APK时,我遇到了以下问题:如果我使用build.gradle文件(仅适用于相关部分)从android studio(通过Build – > Generate Signed APK… )构build签名的apk: signingConfigs { release { storeFile file('/keystore/location/mykeystore.keystore') storePassword 'storepassword' keyAlias 'key' keyPassword 'keypassword' } } buildTypes { release { signingConfig signingConfigs.release } } 由此产生的apk指纹是YY:YY 。 但是,如果我从控制台构build我的APK,如这里描述与build.gradle像这样: buildTypes { release { } } 并用相同的密钥库文件签名,得到的apk指纹是XX:XX 。 另外,两个SHA指纹都与我的debugging证书SHA指纹不同。 这种行为的原因是什么? 我正在使用buildToolsVersion 23.0.0 android studio gradle版本1.3.0 android sdk工具版本24.3.4 android studio版本1.3.1

Android – 将所有lint警告设置为除某些之外的错误

我正在尝试使我的持续集成在引入不在lint-baseline.xml文件中的新的lint警告时失败。 我想要把所有的lint警告视为错误(所以构build被中止),但我想要一种方式来指定某些lint检查被视为信息级或警告级,以便它们仍然出现在lint结果中,但不要不会导致构build失败。 下面是一个基本上我想要做的例子(除非这不起作用,如果存在任何不被忽略的警告,构build失败): lintOptions { lintConfig file("lint.xml") baseline file("lint-baseline.xml") checkAllWarnings true warningsAsErrors true abortOnError true informational 'MissingTranslation, …' // don't fail the build for these } 有没有一种简单的方法把所有的皮棉检查都视为错误,排除某些错误? 我曾经想过手动设置所有的200多个lint检查到错误级别,但是这不是很有前途的证据,因为每次添加新的lint检查都必须更新列表。

在debugging模式下运行Android应用程序

我的Android Studio版本是2.3.3 在我的Android应用程序gradle构build中,我明确地定义了不同的server_urlstring值,用于debuggingtypes和发布types: buildTypes { debug { resValue "string", "server_url", "https://myserver.debug.com/" } release { resValue "string", "server_url", "https://myserver.com/" … } } 在我的代码中,我得到了string值: String url = context.getString(R.string.server_url); 我把我的Android手机连接到我的笔记本电脑。 Android工作室工具栏如下所示: 我也select了构build变体是“debugging”: 我点击 ,该应用程序正在我的手机上运行,​​但是,它使用在发布types中定义的server_url值。 为什么? (在build/generated/res/resValues/debug/generated.xml和build/generated/res/resValues/debug/generated.xml build/generated/res/resValues/release/generated.xml我看到这些值,没有问题了。 ====更新=== 添加defaultPublishConfig 'debug'修复了这个问题(谢谢@Ulug Toprak),但我仍然想知道为什么Android Studio没有它,但我已经设置了Build Variant到“Debug”。 也许在Android Studio中的错误?

如何在Android模块上运行unit testing?

我有一个Android项目,有多个库模块,我试图testing包含所有模块的特定包。 我试过这个命令: ./gradlew -Dtest.single=com.moduleone* testProductionDebug 它不起作用:它不执行这个模块内部的testing,而是执行主项目包类中的所有unit testing。 我如何testing一个模块?

Android NDK – 使用gradle支持multlib

我的问题是针对64位Android系统的原生Android开发。 我正在寻找一种方法来configuration在64位Android系统上使用gradle构build系统对32位编译本机库的支持。 应用程序应该使用的库只能以32位版本的forms提供。 这将是非常耗时和错误倾向于将这些库移植到64位。 因此,我想configurationgradle来部署这些预先构build的32位二进制文​​件,并使用32位版本的Android应用程序。 当前configuration导致以下错误: E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: <application_name>, PID: 2170 java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader [DexPathList[[zip file "/data/app/<application_name>/base.apk"], nativeLibraryDirectories=[/vendor/lib64, /system/lib64]]] enter code here`couldn't find "libmynativelibrary.so" at java.lang.Runtime.loadLibrary(Runtime.java:366) 看起来好像PathClassLoader在错误的目录中查找。 我检查了提供的apk文件,它缺less库。 apk里面没有lib文件夹。 构build系统不包含32位库。 由于armv7只有一个预生成版本, armv7这些库位于app/src/main/jnilibs文件夹中。 我必须补充说,这个设置适用于任何32位Android系统。 我之前用模拟器和一个物理设备试了一下。 应该如何激活使用gradle的多元化32/64位支持? 或者,如何使用Android Studio / gradle将32位应用程序部署到64位Android系统? 我search了网页,发现了一个关于这个主题的链接,但是它指的是以前的构build系统: https : //source.android.com/source/64-bit-builds.html 。 我不知道如何采用描述来gradle。 我正在使用Android Studio(Build:141.1989493,2015年6月6日)。 project/build.gradle是未触及的。 app/build.gradle文件如下所示: apply plugin: 'com.android.application' android […]