Hey guys,
I found another issue with the Android Gradle Plugin version 1.4.0-beta2
which uses the Transform API.
Apparently when building a project with multidex enabled, Proguard is
automatically triggered (without requesting it, in the debug build-type),
and generates lots of warnings on a project that normally builds fine with
proguard.
Below is an example of a build output:
Executing tasks: [:test2:assembleDemoDebug]
Configuration on demand is an incubating feature.
:somelib:preBuild UP-TO-DATE
:somelib:preReleaseBuild UP-TO-DATE
:somelib:compileReleaseNdk UP-TO-DATE
:somelib:compileLint
:somelib:copyReleaseLint UP-TO-DATE
:somelib:mergeReleaseProguardFiles UP-TO-DATE
:somelib:checkReleaseManifest
:somelib:prepareReleaseDependencies
:somelib:compileReleaseAidl UP-TO-DATE
:somelib:compileReleaseRenderscript UP-TO-DATE
:somelib:generateReleaseBuildConfig UP-TO-DATE
:somelib:generateReleaseAssets UP-TO-DATE
:somelib:mergeReleaseAssets UP-TO-DATE
:somelib:generateReleaseResValues UP-TO-DATE
:somelib:generateReleaseResources UP-TO-DATE
:somelib:packageReleaseResources UP-TO-DATE
:somelib:processReleaseManifest UP-TO-DATE
:somelib:processReleaseResources UP-TO-DATE
:somelib:generateReleaseSources UP-TO-DATE
:somelib:compileReleaseJavaWithJavac UP-TO-DATE
:somelib:processReleaseJavaRes UP-TO-DATE
:somelib:packageReleaseJar UP-TO-DATE
:somelib:packageReleaseJniLibs UP-TO-DATE
:somelib:packageReleaseLocalJar UP-TO-DATE
:somelib:packageReleaseRenderscript UP-TO-DATE
:somelib:bundleRelease UP-TO-DATE
:test2:preBuild UP-TO-DATE
:test2:preDemoDebugBuild UP-TO-DATE
:test2:checkDemoDebugManifest
:test2:preDemoReleaseBuild UP-TO-DATE
:test2:preExperimentalDebugBuild UP-TO-DATE
:test2:preExperimentalReleaseBuild UP-TO-DATE
:test2:prepareAndroidStudioProjectsSomelibUnspecifiedLibrary UP-TO-DATE
:test2:prepareComAndroidSupportAppcompatV72221Library UP-TO-DATE
:test2:preDemoDebugAndroidTestBuild UP-TO-DATE
:test2:preExperimentalDebugAndroidTestBuild UP-TO-DATE
:test2:prepareComAndroidSupportMultidex101Library UP-TO-DATE
:test2:prepareComAndroidSupportSupportV42221Library UP-TO-DATE
:test2:prepareComGoogleAndroidGmsPlayServicesAnalytics780Library UP-TO-DATE
:test2:prepareComGoogleAndroidGmsPlayServicesBase780Library UP-TO-DATE
:test2:prepareComGoogleAndroidGmsPlayServicesMaps780Library UP-TO-DATE
:test2:prepareDemoDebugDependencies
:test2:compileDemoDebugAidl UP-TO-DATE
:test2:compileDemoDebugRenderscript UP-TO-DATE
:test2:generateDemoDebugBuildConfig UP-TO-DATE
:test2:generateDemoDebugAssets UP-TO-DATE
:test2:mergeDemoDebugAssets UP-TO-DATE
:test2:generateDemoDebugResValues UP-TO-DATE
:test2:generateDemoDebugResources UP-TO-DATE
:test2:mergeDemoDebugResources UP-TO-DATE
:test2:processDemoDebugManifest UP-TO-DATE
:test2:processDemoDebugResources UP-TO-DATE
:test2:generateDemoDebugSources UP-TO-DATE
:test2:compileDemoDebugJavaWithJavac
:test2:compileDemoDebugNdk UP-TO-DATE
:test2:compileDemoDebugSources
:test2:transformClassesAndResourcesWithExtractJarsForDemoDebug
:test2:transformClassesWithJarMergingForDemoDebug
:test2:collectDemoDebugMultiDexComponents
:test2:transformClassesWithMultidexlistForDemoDebug
ProGuard, version 5.2.1
Reading program jar
[D:\AndroidStudioProjects\test2\build\intermediates\transforms\CLASSES\FULL_PROJECT\jarMerging\demo\debug\classes.jar]
Reading library jar
[D:\AndroidSDK\build-tools\23.0.0\lib\shrinkedAndroid.jar]
Note: android.support.v4.app.NotificationCompatJellybean calls
'Field.getType'
Note: com.google.android.gms.internal.zzry calls 'Field.getType'
Note: crittercism.android.k calls 'Field.getType'
Note: android.support.v4.app.NotificationCompatJellybean: can't find
dynamically referenced class android.app.Notification$Action
Note: android.support.v4.text.ICUCompatIcs: can't find dynamically
referenced class libcore.icu.ICU
Note: android.support.v7.internal.widget.DrawableUtils: can't find
dynamically referenced class android.graphics.Insets
Note: com.google.android.gms.maps.internal.zzy: can't find dynamically
referenced class com.google.android.gms.maps.internal.CreatorImpl
Note: crittercism.android.ap: can't find dynamically referenced class
android.webkit.CallbackProxy
Note: crittercism.android.dz: can't find dynamically referenced class
dalvik.system.PathClassLoader
Note: crittercism.android.ed: can't find dynamically referenced class
dalvik.system.DexClassLoader
Note: android.support.multidex.MultiDexExtractor accesses a method
'apply()' dynamically
Note: android.support.v4.app.NotificationCompatJellybean accesses a
declared field 'icon' dynamically
Maybe this is program field
'android.support.v4.app.NotificationCompat$Action { int icon; }'
Maybe this is program field 'android.support.v7.appcompat.R$attr {
int icon; }'
Maybe this is program field 'android.support.v7.appcompat.R$id { int
icon; }'
Maybe this is program field 'com.safedk.test2.R$attr { int icon; }'
Maybe this is program field 'com.safedk.test2.R$id { int icon; }'
Note: android.support.v4.app.NotificationCompatJellybean accesses a
declared field 'title' dynamically
Maybe this is program field
'android.support.v4.app.NotificationCompat$Action { java.lang.CharSequence
title; }'
Maybe this is program field 'android.support.v7.appcompat.R$attr {
int title; }'
Maybe this is program field 'android.support.v7.appcompat.R$id { int
title; }'
Maybe this is program field 'com.safedk.test2.R$attr { int title; }'
Maybe this is program field 'com.safedk.test2.R$id { int title; }'
Note: android.support.v4.app.NotificationCompatJellybean accesses a
declared field 'actionIntent' dynamically
Maybe this is program field
'android.support.v4.app.NotificationCompat$Action {
android.app.PendingIntent actionIntent; }'
Note: android.support.v4.text.ICUCompatIcs accesses a method
'getScript(java.lang.String)' dynamically
Maybe this is program method 'android.support.v4.text.ICUCompat {
java.lang.String getScript(java.lang.String); }'
Maybe this is program method
'android.support.v4.text.ICUCompat$ICUCompatImpl { java.lang.String
getScript(java.lang.String); }'
Maybe this is program method
'android.support.v4.text.ICUCompat$ICUCompatImplBase { java.lang.String
getScript(java.lang.String); }'
Maybe this is program method
'android.support.v4.text.ICUCompat$ICUCompatImplIcs { java.lang.String
getScript(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompatIcs {
java.lang.String getScript(java.lang.String); }'
Note: android.support.v4.text.ICUCompatIcs accesses a method
'addLikelySubtags(java.lang.String)' dynamically
Maybe this is program method 'android.support.v4.text.ICUCompat {
java.lang.String addLikelySubtags(java.lang.String); }'
Maybe this is program method
'android.support.v4.text.ICUCompat$ICUCompatImpl { java.lang.String
addLikelySubtags(java.lang.String); }'
Maybe this is program method
'android.support.v4.text.ICUCompat$ICUCompatImplBase { java.lang.String
addLikelySubtags(java.lang.String); }'
Maybe this is program method
'android.support.v4.text.ICUCompat$ICUCompatImplIcs { java.lang.String
addLikelySubtags(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompatIcs {
java.lang.String addLikelySubtags(java.lang.String); }'
Note: android.support.v7.internal.widget.DrawableUtils accesses a method
'getOpticalInsets()' dynamically
Note: android.support.v7.internal.widget.ViewUtils accesses a method
'makeOptionalFitsSystemWindows()' dynamically
Note: com.google.android.gms.common.internal.DowngradeableSafeParcel
accesses a field 'NULL' dynamically
Maybe this is program field
'com.google.android.gms.common.internal.safeparcel.SafeParcelable {
java.lang.String NULL; }'
Note: crittercism.android.ap accesses a method 'getWebViewClient()'
dynamically
Note: crittercism.android.ap accesses a method 'getWebViewClient()'
dynamically
Note: crittercism.android.ap accesses a declared field
'mContentsClientAdapter' dynamically
Note: crittercism.android.dz accesses a declared field 'path' dynamically
Note: crittercism.android.lh accesses a declared field '$__handler'
dynamically
Note: crittercism.android.lh accesses a declared field '$__methodArray'
dynamically
Note: crittercism.android.q accesses a declared method 'clone()' dynamically
Maybe this is program method
'android.support.v4.app.NotificationCompat$Action$WearableExtender {
android.support.v4.app.NotificationCompat$Action$WearableExtender clone();
}'
Maybe this is program method
'android.support.v4.app.NotificationCompat$Action$WearableExtender {
java.lang.Object clone(); }'
Maybe this is program method
'android.support.v4.app.NotificationCompat$WearableExtender {
android.support.v4.app.NotificationCompat$WearableExtender clone(); }'
Maybe this is program method
'android.support.v4.app.NotificationCompat$WearableExtender {
java.lang.Object clone(); }'
Maybe this is program method 'android.support.v4.util.LongSparseArray
{ android.support.v4.util.LongSparseArray clone(); }'
Maybe this is program method 'android.support.v4.util.LongSparseArray
{ java.lang.Object clone(); }'
Maybe this is program method
'android.support.v4.util.SparseArrayCompat {
android.support.v4.util.SparseArrayCompat clone(); }'
Maybe this is program method
'android.support.v4.util.SparseArrayCompat { java.lang.Object clone(); }'
Maybe this is program method 'com.google.android.gms.internal.zzrr {
java.lang.Object clone(); }'
Maybe this is program method 'com.google.android.gms.internal.zzrt {
java.lang.Object clone(); }'
Maybe this is program method 'com.google.android.gms.internal.zzru {
java.lang.Object clone(); }'
Maybe this is program method 'com.google.android.gms.internal.zzrx {
java.lang.Object clone(); }'
Note: crittercism.android.t accesses a declared method 'getInetAddress()'
dynamically
Note: crittercism.android.t accesses a declared method 'getPort()'
dynamically
Note: there were 3 classes trying to access generic signatures using
reflection.
You should consider keeping the signature attributes
(using '-keepattributes Signature').
(http://proguard.sourceforge.net/manual/troubleshooting.html#attributes)
Note: there were 7 unresolved dynamic references to classes or interfaces.
You should check if you need to specify additional program jars.
(http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclass)
Note: there were 18 accesses to class members by means of introspection.
You should consider explicitly keeping the mentioned class members
(using '-keep' or '-keepclassmembers').
(http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclassmember)
Note: you're ignoring all warnings!
Preparing output jar
[D:\AndroidStudioProjects\test2\build\intermediates\multi-dex\demo\debug\componentClasses.jar]
Copying resources from program jar
[D:\AndroidStudioProjects\test2\build\intermediates\transforms\CLASSES\FULL_PROJECT\jarMerging\demo\debug\classes.jar]
:test2:transformClassesWithDexForDemoDebug
:test2:processDemoDebugJavaRes UP-TO-DATE
:test2:transformResourcesWithMergeJavaResForDemoDebug
:test2:validateDemoReleaseSigningSigning
:test2:packageDemoDebug
:test2:zipalignDemoDebug
:test2:assembleDemoDebug
BUILD SUCCESSFUL
Total time: 32.948 secs
Thanks,
Ariel Cattan
--
You received this message because you are subscribed to the Google Groups
"adt-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.