EDIT : MY PROGUARD VERSION IS 4.7
Today I tried include jsoup (version 1.7.1)
in my android application, but it is causing me a lot of troubles. When I exported the signed apk
with proguard
turned on everytime my application was facing force close issues, then i disabled proguard
and exported the apk
and it ran perfectly. Please help me. How can I solve the error? The stacktrace is as below:
java.lang.RuntimeException: An error occured while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:278) at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) at java.util.concurrent.FutureTask.setException(FutureTask.java:124) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) at java.util.concurrent.FutureTask.run(FutureTask.java:137) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:107 6) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:56 9) at java.lang.Thread.run(Thread.java:856) Caused by: java.lang.ExceptionInInitializerError at org.jsoup.nodes.Document$OutputSettings.<init>(Unknown Source) at org.jsoup.nodes.Document.<init>(Unknown Source) at org.jsoup.parser.TreeBuilder.void initialiseParse(java.lang.String,java.lang. String,org.jsoup.parser.ParseErrorList)(Unknown Source) at org.jsoup.parser.TreeBuilder.org.jsoup.nodes.Document parse(java.lang.String, java.lang.String,org.jsoup.parser.ParseErrorList)(Unknown Source) boolean process(org.jsoup.parser.Token) at org.jsoup.parser.HtmlTreeBuilder.org.jsoup.nodes.Document parse(java.lang.Str ing,java.lang.String,org.jsoup.parser.ParseErrorList)(Unknown Source) boolean process(org.jsoup.parser.Token) boolean process(org.jsoup.parser.Token,org.j soup.parser.HtmlTreeBuilderState) void transition(org.jsoup.parser.HtmlTreeBui lderState) org.jsoup.parser.HtmlTreeBuilderState state( ) void framesetOk(boolean) void maybeSetBaseUri(org.jsoup.nodes.Element ) org.jsoup.nodes.Element insert(org.jsoup.par ser.Token$StartTag) org.jsoup.nodes.Element insert(java.lang.Str ing) void insert(org.jsoup.parser.Token$Comment) void insert(org.jsoup.parser.Token$Character ) boolean isElementInQueue(org.jsoup.helper.De scendableLinkedList,org.jsoup.nodes.Element) void popStackToClose(java.lang.String[]) void insertOnStackAfter(org.jsoup.nodes.Elem ent,org.jsoup.nodes.Element) void replaceInQueue(java.util.LinkedList,org .jsoup.nodes.Element,org.jsoup.nodes.Element) boolean inSpecificScope(java.lang.String,jav a.lang.String[],java.lang.String[]) boolean inSpecificScope(java.lang.String[],j ava.lang.String[],java.lang.String[]) boolean inScope(java.lang.String,java.lang.S tring[]) void insertInFosterParent(org.jsoup.nodes.No de) at org.jsoup.parser.Parser.org.jsoup.nodes.Document parse(java.lang.String,java. lang.String)(Unknown Source) at org.jsoup.Jsoup.org.jsoup.nodes.Document parse(java.lang.String)(Unknown Sour ce) at com.my.package.name.BalCheck.void doLogin(java.lang.String,java.lang .String)(Unknown Source) void checkBal() void echo(java.lang.String) at com.my.package.name.BalCheck.void doCheckBalance(java.lang.String,ja va.lang.String)(Unknown Source) at com.my.package.name.SmsPage$CheckUltooBalance.java.lang.Void doInBac kground(java.lang.Void[])(Unknown Source) void onPostExecute(jav a.lang.Void) at com.my.package.name.SmsPage$CheckUltooBalance.java.lang.Object doInB ackground(java.lang.Object[])(Unknown Source) at android.os.AsyncTask$2.call(AsyncTask.java:264) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) ... 5 more Caused by: java.lang.ExceptionInInitializerError at org.jsoup.nodes.Entities$EscapeMode.<clinit>(Unknown Source) ... 18 more Caused by: java.lang.NullPointerException at java.util.Properties.load(Properties.java:246) at org.jsoup.nodes.Entities.java.util.Map loadEntities(java.lang.String)(Unknown Source) at org.jsoup.nodes.Entities.<clinit>(Unknown Source) ... 19 more
The solution posted by @Erdem in a comment above seems to be the best one. I'm reposting it as an answer for visibility.
Add the line below to your proguard file
-keeppackagenames org.jsoup.nodes
This seems to be enough
You can go to jsoup with proguard to find answer, which is to add the following to proguard-project.txt
:
-keep public class org.jsoup.** { public *; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With