Dexguard vs Android 插件 - 中断构建过程
Posted
技术标签:
【中文标题】Dexguard vs Android 插件 - 中断构建过程【英文标题】:Dexguard vs Android plugin - breaks build process 【发布时间】:2014-11-26 18:45:16 【问题描述】:当我尝试使用dexguard
插件代替android
插件(dexguard
插件扩展android
)时,我的gradle build process
失败并出现此错误:
$ ./gradlew assembleDebug
FAILURE: Build failed with an exception.
* Where:
Build file '/projectRoot/app/build.gradle' line: 1
* What went wrong:
A problem occurred evaluating project ':projectRoot:app'.
Could not create plugin of type 'g'.
我的应用模块的第一行 build.gradle 是
apply plugin: 'dexguard'
我整个项目的 build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript
repositories
flatDir dirs 'path-to-dexguard/lib'
mavenCentral()
dependencies
classpath ':dexguard:'
classpath 'com.android.tools.build:gradle:0.12.+'
我在启用debug
选项的情况下运行gradlew
$ ./gradlew --debug assembleDebug
[ERROR] [org.gradle.BuildExceptionReporter] Caused by: java.lang.NoClassDefFoundError: com/android/builder/DefaultBuildType
[ERROR] [org.gradle.BuildExceptionReporter] at com.saikoa.dexguard.g.$getStaticMetaClass(DexGuard)
[ERROR] [org.gradle.BuildExceptionReporter] at com.android.build.gradle.BasePlugin.<init>(BasePlugin.groovy:2173)
[ERROR] [org.gradle.BuildExceptionReporter] at com.android.build.gradle.AppPlugin.<init>(AppPlugin.groovy:37)
[ERROR] [org.gradle.BuildExceptionReporter] at com.saikoa.dexguard.g.<init>(DexGuard:90)
[ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.DependencyInjectingInstantiator.newInstance(DependencyInjectingInstantiator.java:62)
[ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.plugins.DefaultPluginRegistry.loadPlugin(DefaultPluginRegistry.java:65)
[ERROR] [org.gradle.BuildExceptionReporter] ... 46 more
[ERROR] [org.gradle.BuildExceptionReporter] Caused by: java.lang.ClassNotFoundException: com.android.builder.DefaultBuildType
[ERROR] [org.gradle.BuildExceptionReporter] ... 52 more
我的gradle
版本是2.1
$ gradle -v
------------------------------------------------------------
Gradle 2.1
------------------------------------------------------------
Build time: 2014-09-08 10:40:39 UTC
Build number: none
Revision: e6cf70745ac11fa943e19294d19a2c527a669a53
Groovy: 2.3.6
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM: 1.7.0_07 (Oracle Corporation 23.3-b01)
OS: Mac OS X 10.9.5 x86_64
如果我使用 android 而不是 dexguard,那么我没有问题。
非常感谢任何帮助或指示。提前致谢。
PS:我独立运行 ANT
没有问题 - fwiw。
【问题讨论】:
【参考方案1】:该错误表明您正在使用带有不兼容版本的 Android 插件的 DexGuard 插件。对于每个版本的 DexGuard,您可以在 DexGuard 手册 > Gradle 构建中找到记录的兼容版本。作为参考,您还可以在目录samples
中找到工作示例。
【讨论】:
谢谢。我现在可以构建它 Eric。但是我现在得到的 apk 文件拒绝安装并出现错误:INSTALL_FAILED_UID_CHANGED。结果 apk 拒绝安装的 Dexguard 插件与 Android 有何不同?任何想法?谢谢。 嘿,我在 android studio 上使用 dexguard 时遇到同样的错误:失败 [INSTALL_FAILED_UID_CHANGED] 有什么想法吗?以上是关于Dexguard vs Android 插件 - 中断构建过程的主要内容,如果未能解决你的问题,请参考以下文章
Gradle 同步因 Dexguard 插件而失败(Android Studio)
Android/Java 混淆:R8 与(ProGuard 或 DexGuard)?
原因:org.gradle.api.internal.plugins.PluginApplicationException:无法应用插件 [id 'dexguard']
如何防止 Dexguard 混淆 android studio 中的资源文件夹?