Android strict dependency checks in SDK 17 - android

This is not a question because I already found the answer.
The new Android SDK 17 has a stricter dependency check on jar files.
At the same time, they added a jar that I think wasn't there before. My project encountered a conflict between the new annotations.jar in the SDK and one that I already used. Replacing one by the other would work, if they have the same origin.
My annotations.jar is from jetbrains, via a Guice dependency, so replacing it doesn't work. This is the error I got:
[2012-03-22 10:54:27 - MyApp] Jar mismatch! Fix your dependencies
[2012-03-22 10:54:46 - MyApp] Found 2 versions of annotations.jar in the dependency list,
[2012-03-22 10:54:46 - MyApp] but not all the versions are identical (check is based on SHA-1 only at this time).
[2012-03-22 10:54:46 - MyApp] All versions of the libraries must be the same at this time.
[2012-03-22 10:54:46 - MyApp] Versions found are:
[2012-03-22 10:54:46 - MyApp] Path: /opt/android-sdk-linux_x86/tools/support/annotations.jar
[2012-03-22 10:54:46 - MyApp] Length: 1463
[2012-03-22 10:54:46 - MyApp] SHA-1: 6f59fa3a223df6f332bee8b8bffb526f7445018b
[2012-03-22 10:54:46 - MyApp] Path: /home/christine/workspace/MyApp/libs/annotations.jar
[2012-03-22 10:54:46 - MyApp] Length: 7593
[2012-03-22 10:54:46 - MyApp] SHA-1: e28fe9e70610beb9ef49226a9e56fed7a86e742a
[2012-03-22 10:54:46 - MyApp] Jar mismatch! Fix your dependencies

My annotations.jar is from jetbrains, via a Guice dependency. I renamed this file to jetbrains-annotation.jar which solved my problem.

Related

Android: Proguard error in eclipse

I am trying to built the signed apk of my app. But i am getting the error pop up as
Proguard returned with error code 1. See console
And error log in console as :
[2016-04-15 11:36:44 - MyApp] Proguard returned with error code 1. See console
[2016-04-15 11:36:44 - MyApp] Note: there were 85 duplicate class definitions.
[2016-04-15 11:36:44 - MyApp] Warning: org.acra.ErrorReporter: can't find referenced method 'void setLatestEventInfo(android.content.Context,java.lang.CharSequence,java.lang.CharSequence,android.app.PendingIntent)' in class android.app.Notification
[2016-04-15 11:36:44 - MyApp] You should check if you need to specify additional program jars.
[2016-04-15 11:36:44 - MyApp] Warning: there were 1 unresolved references to program class members.
[2016-04-15 11:36:44 - MyApp] Your input classes appear to be inconsistent.
[2016-04-15 11:36:44 - MyApp] You may need to recompile them and try again.
[2016-04-15 11:36:44 - MyApp] Alternatively, you may have to specify the option
[2016-04-15 11:36:44 - MyApp] '-dontskipnonpubliclibraryclassmembers'.
[2016-04-15 11:36:44 - MyApp] java.io.IOException: Please correct the above warnings first.
[2016-04-15 11:36:44 - MyApp] at proguard.Initializer.execute(Initializer.java:321)
[2016-04-15 11:36:44 - MyApp] at proguard.ProGuard.initialize(ProGuard.java:211)
[2016-04-15 11:36:44 - MyApp] at proguard.ProGuard.execute(ProGuard.java:86)
[2016-04-15 11:36:44 - MyApp] at proguard.ProGuard.main(ProGuard.java:492)
I am not able to understand what is the issue. For last version it works fine. I just provide support to Marsh Mellow in this version.
Please suggest me what changes or steps to perform to built signed apk with out Proguard error.
Try to add this to Proguard configuration file:
-keep class org.apache.http.** { *; }
-dontwarn org.apache.http.**
-dontwarn android.net.**

Android - can't export apk with Proguard, when using Joda Time

I use joda-time.jar in my app, and when exporting signed apk proguard saying something like (it is pretty common problem as I can see, when I look over internet):
[2014-01-07 12:44:53 - XYZ] Proguard returned with error code 1. See console
[2014-01-07 12:44:53 - XYZ] Warning: org.joda.time.DateMidnight: can't find referenced class org.joda.convert.FromString
[2014-01-07 12:44:53 - XYZ] Warning: org.joda.time.DateTime: can't find referenced class org.joda.convert.FromString
[2014-01-07 12:44:53 - XYZ] Warning: org.joda.time.Days: can't find referenced class org.joda.convert.FromString
...
[2014-01-07 12:44:53 - XYZ] Warning: org.joda.time.Years: can't find referenced class org.joda.convert.FromString
[2014-01-07 12:44:53 - XYZ] Warning: org.joda.time.Years: can't find referenced class org.joda.convert.ToString
[2014-01-07 12:44:53 - XYZ] Warning: org.joda.time.base.AbstractDuration: can't find referenced class org.joda.convert.ToString
[2014-01-07 12:44:53 - XYZ] Warning: org.joda.time.base.AbstractInstant: can't find referenced class org.joda.convert.ToString
[2014-01-07 12:44:53 - XYZ] Warning: org.joda.time.base.AbstractPeriod: can't find referenced class org.joda.convert.ToString
[2014-01-07 12:44:53 - XYZ] You should check if you need to specify additional program jars.
[2014-01-07 12:44:53 - XYZ] Warning: there were 37 unresolved references to classes or interfaces.
[2014-01-07 12:44:53 - XYZ] You may need to specify additional library jars (using '-libraryjars').
[2014-01-07 12:44:53 - XYZ] java.io.IOException: Please correct the above warnings first.
[2014-01-07 12:44:53 - XYZ] at proguard.Initializer.execute(Initializer.java:321)
[2014-01-07 12:44:53 - XYZ] at proguard.ProGuard.initialize(ProGuard.java:211)
[2014-01-07 12:44:53 - XYZ] at proguard.ProGuard.execute(ProGuard.java:86)
[2014-01-07 12:44:53 - XYZ] at proguard.ProGuard.main(ProGuard.java:492)
Everywhere in forums or also here (Android - Proguard didn't compile with Joda Time jar file) they say solution should be downloading joda-convert.jar, adding to buildpath. But for me it just DOESN'T WORK, after I did it, proguard again says something similar:
[2014-01-07 12:41:39 - XYZ] Proguard returned with error code 1. See console
[2014-01-07 12:41:39 - XYZ] Warning: org.joda.convert.JDKStringConverter$9: can't find referenced class javax.xml.bind.DatatypeConverter
[2014-01-07 12:41:39 - XYZ] Warning: org.joda.convert.JDKStringConverter$9: can't find referenced class javax.xml.bind.DatatypeConverter
[2014-01-07 12:41:39 - XYZ] Warning: org.joda.convert.JDKStringConverter$9: can't find referenced class javax.xml.bind.DatatypeConverter
[2014-01-07 12:41:39 - XYZ] You should check if you need to specify additional program jars.
[2014-01-07 12:41:39 - XYZ] Warning: there were 3 unresolved references to classes or interfaces.
[2014-01-07 12:41:39 - XYZ] You may need to specify additional library jars (using '-libraryjars').
[2014-01-07 12:41:39 - XYZ] java.io.IOException: Please correct the above warnings first.
[2014-01-07 12:41:39 - XYZ] at proguard.Initializer.execute(Initializer.java:321)
[2014-01-07 12:41:39 - XYZ] at proguard.ProGuard.initialize(ProGuard.java:211)
[2014-01-07 12:41:39 - XYZ] at proguard.ProGuard.execute(ProGuard.java:86)
[2014-01-07 12:41:39 - XYZ] at proguard.ProGuard.main(ProGuard.java:492)
How to fix this issue? I spend few hours of trying everything, but I just can't find it out...Many thanks!
Ok I figured it out. Actually adding joda-convert.jar to build path works, but only for older version (1.4 and lower, if you download latest one - 1.5 joda-convert.jar, it doesn't work)...

Error while creating android release build from eclipse

I'm trying to generate apk using Android tools > Export Signed apllication project, but I'm getting this error:
Proguard return with error code 1. See console
Console says:
[2013-08-21 17:03:56 - DisplayMetrics] Warning: there were 23 unresolved references to classes or interfaces.
[2013-08-21 17:03:56 - DisplayMetrics] You may need to specify additional library jars (using '-libraryjars').
[2013-08-21 17:03:56 - DisplayMetrics] java.io.IOException: Please correct the above warnings first.
[2013-08-21 17:03:56 - DisplayMetrics] at proguard.Initializer.execute(Initializer.java:321)
[2013-08-21 17:03:56 - DisplayMetrics] at proguard.ProGuard.initialize(ProGuard.java:211)
[2013-08-21 17:03:56 - DisplayMetrics] at proguard.ProGuard.execute(ProGuard.java:86)
[2013-08-21 17:03:56 - DisplayMetrics] at proguard.ProGuard.main(ProGuard.java:492)
This is happening from the time I added 3 jar files in libs folder. How can I fix this?

LVL error - cant reference LVL in my project

I am following the android licensing documentation (http://developer.android.com/guide/publishing/licensing.html) and when i get to the step that I add the reference of the licensing project (in eclipse) to my project, I get an error in the console (see below) and my project doesnt build. Any ideas on how i can around this? I tried a couple searches on google, but I didnt come up with anything. Thanks.
Error seen:
[2010-09-26 05:54:41 - MyApp] ERROR: Unknown option '--auto-add-overlay'
[2010-09-26 05:54:41 - MyApp] Android Asset Packaging Tool
[2010-09-26 05:54:41 - MyApp]
[2010-09-26 05:54:41 - MyApp] Usage:
[2010-09-26 05:54:41 - MyApp] aapt l[ist] [-v] [-a] file.{zip,jar,apk}
[2010-09-26 05:54:41 - MyApp] List contents of Zip-compatible archive.
[2010-09-26 05:54:41 - MyApp]
[2010-09-26 05:54:41 - MyApp] aapt d[ump] [--values] WHAT file.{apk} [asset [asset ...]]
[2010-09-26 05:54:41 - MyApp] badging Print the label and icon for the app declared in APK.
[2010-09-26 05:54:41 - MyApp] permissions Print the permissions from the APK.
[2010-09-26 05:54:41 - MyApp] resources Print the resource table from the APK.
[2010-09-26 05:54:41 - MyApp] configurations Print the configurations in the APK.
[2010-09-26 05:54:41 - MyApp] xmltree Print the compiled xmls in the given assets.
[2010-09-26 05:54:41 - MyApp] xmlstrings Print the strings of the given compiled xml assets.
...
OP: Did you manage to solve your problem?
I'm also getting this into problem while trying to use th LVL. I get this error in addition:
"Target 'Android 2.1' does not support building project with libraries."
Thanks.
Solved:
An SDK update was necessary. "Android 2.1" revision 1 was installed and revision 2 is necessary in order to use Library projects.
http://developer.android.com/guide/developing/eclipse-adt.html#libraryReqts

Android: Getting Error: Conversion to Dalvik format failed

I am building an app on android and running into an error and while searching on net, came across your posting on this and changed the eclipse.ini to increase Xms and Xmx params but still this error does not go away.
I am using Eclipse IDE for Java with Android SDK 2.1 on Mac OS. Please help or please point me to someone who might know.
Btw, this error only happens when i add external jar files (which i need for my project). Here are the list of external jar files that i have in my classpath.)
httpclient-4.0.1.jar from apache
httpcore -4.0.1.jarfrom apache
commons-codec-1.3.jar from apache
commons-logging-1.1.1.jar from apache
json_simple-1.1.jar from google
Here is the complete error:
UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: Lorg/apache/commons/logging/impl/AvalonLogger;
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.dex.file.DexFile.add(DexFile.java:143)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.processClass(Main.java:301)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.processFileBytes(Main.java:278)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.access$100(Main.java:56)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:229)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.cf <http://com.android.dx.cf.direct.ClassPathOpener.pro> .direct.ClassPathOpener.processArchive(ClassPathOpener.java:244)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:130)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.processOne(Main.java:247)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.processAllFiles(Main.java:183)
[2010-05-02 21:57:05 - MyApp]     at com.android.dx.command.dexer.Main.run(Main.java:139)
[2010-05-02 21:57:05 - MyApp]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[2010-05-02 21:57:05 - MyApp]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[2010-05-02 21:57:05 - MyApp]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[2010-05-02 21:57:05 - MyApp]     at java.lang.reflect.Method.invoke(Method.java:592)
[2010-05-02 21:57:05 - MyApp]     at com.android.ide.eclipse.adt.internal.sdk.DexWrapper.run(Unknown Source)
[2010-05-02 21:57:05 - MyApp]     at com.android.ide.eclipse.adt.internal.build.ApkBuilder.executeDx(Unknown Source)
[2010-05-02 21:57:05 - MyApp]     at com.android.ide.eclipse.adt.internal.build.ApkBuilder.build(Unknown Source)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:627)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238)
[2010-05-02 21:57:05 - MyApp]     at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
[2010-05-02 21:57:05 - MyApp] 4 errors; aborting
[2010-05-02 21:57:05 - MyApp] Conversion to Dalvik format failed with error 1
In r14 they changed the way in which external libraries are referenced and it can cause this problem. You can fix it by removing the linked folders (with _src in the name) from the folder tree:
Right click and select "Build Path > Remove from build path"
A popup will open. Make sure that “Also unlink the folder from the project” is checked and then accept it.
see http://android-developers.blogspot.co.uk/2011/10/changes-to-library-projects-in-android.html
UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException:
already added:
Lorg/apache/commons/logging/impl/AvalonLogger;
You are attempting to add org.apache.commons.logging.impl.AvalonLogger twice to your project. Do not do that.
Also, much of what you are adding via JARs is already in Android, such as HttpClient. This may be contributing to your error.
I just had this as well but I made sure ahead of time that I did not have a duplicate class in my jar file. This was some other issue dealing with multiple loading of the same jar or something. The classpath and the list of Referenced Libraries looked appropriate. After some flailing around, some combination of the following fixed it:
I was using a different external jar that was also local in the directory. I removed it from the build-path and re-added it from the local jar instead.
I removed all external jars and re-added them one at a time making sure they were the right ones.
I removed the .classpath file in my project as well as the bin and gen directories.
I cleaned the project in Eclipse, forcing the files to be regenerated.
I also shuffled around the jar file above the gen directory in the build order.
Some combination of the above seemed to fix the issue. If it happens again, I will be more careful to see if I can reproduce it.
I had written a blog post about one possible cause of this error and its solution here. Hope this helps.
i guess that you put your jar in folder for example library and then, build path from this folder. You just remove this jar file and try select property from project, then Java build path -> Add external jars files. It will works fine.
I had this problem because I put the .jar under my src/ directory, so Eclipse copied it to the bin/ directory and tried to link it from both places. Moving it from src/ to libs/ fixed the problem.
My problem was due to having the same project references also in library projects. A few updates ago this was normal behaviour, but since the change in library handling, I now needed to remove the references from my projects and have only one of the libraries reference it.
This always happened to me after I did a custom build using a custom command using proguard.
I solved this problem by emptying the bin directory of my eclipse project directory and then cleaning the project (Eclipse menu "project" --> "clean...")
Obviously proguard makes a mess in this directory by which Eclipse gets confused...
I get really mad with this problem trying to do all the posible solutions, but none worked for me: Clean project, Re-build, erasing libraries, linking again the libraries, updating proguard, editing proguard files...
Finally the solution was much more easy: Project, Android Tools, Fix project propieties.
Now I can export the apk.
Right click the src and gen folders and select Build Path > Remove from Build Path.
then
Right Click > Build Path > Use as Source Folder
i got that from time to time when i tried to run code in an incompatible version of android (ie 2.2 when 4.0 was needed for a particular library to work)

Categories

Resources