{"id":510,"date":"2018-03-26T14:24:51","date_gmt":"2018-03-26T19:24:51","guid":{"rendered":"http:\/\/jebware.com\/blog\/?p=510"},"modified":"2018-08-16T11:18:25","modified_gmt":"2018-08-16T16:18:25","slug":"how-proguard-works-links","status":"publish","type":"post","link":"https:\/\/jebware.com\/blog\/?p=510","title":{"rendered":"How ProGuard Works &#8211; Links"},"content":{"rendered":"<p><iframe id=\"ytplayer\" src=\"https:\/\/www.youtube.com\/embed\/F9ymcWoDEtc\" width=\"640\" height=\"360\" frameborder=\"0\"><\/iframe><\/p>\n<p>Thanks for watching my talk, How ProGuard Works, at <a href=\"http:\/\/www.droidcon-boston.com\/\">Droidcon Boston<\/a> or <a href=\"http:\/\/androidsummit.org\/\">Android Summit<\/a>. Here are some of the links that I mentioned in my slides, as well as links to some of my blog posts including the diagrams I used.<\/p>\n<ul>\n<li><a href=\"https:\/\/www.guardsquare.com\/en\/proguard\/manual\/usage\">ProGuard Manual<\/a><\/li>\n<li><a href=\"https:\/\/sourceforge.net\/p\/proguard\/code\/ci\/default\/tree\/\">ProGuard source code<\/a><\/li>\n<li><a href=\"https:\/\/www.guardsquare.com\/en\/proguard\/manual\/versions\">ProGuard v6 Release Notes<\/a> (new options like -addconfigurationdebugging)<\/li>\n<li><a href=\"https:\/\/jakewharton.com\/sinking-your-teeth-into-bytecode\/\">Jake Wharton &#8211; Sinking Your Teeth into Bytecode<\/a> at Droidcon UK 2017<\/li>\n<\/ul>\n<p>R8:<\/p>\n<ul>\n<li><a href=\"https:\/\/android-developers.googleblog.com\/2017\/08\/next-generation-dex-compiler-now-in.html\">D8 \/ R8 &#8211; initial announcement<\/a><\/li>\n<li><a href=\"https:\/\/r8.googlesource.com\/r8\">R8 project source code<\/a><\/li>\n<li><a href=\"https:\/\/issuetracker.google.com\/issues?q=componentid:326788\">R8 issue tracker<\/a><\/li>\n<\/ul>\n<p>My posts:<\/p>\n<ul>\n<li><a href=\"http:\/\/jebware.com\/blog\/?p=440\">Most of the Apps on My Phone Aren&#8217;t Obfuscated<\/a><\/li>\n<li><a href=\"http:\/\/jebware.com\/blog\/?p=484\">Reading ProGuard&#8217;s Outputs<\/a><\/li>\n<li><a href=\"http:\/\/jebware.com\/blog\/?p=418\">Distinguishing Between the Different ProGuard Keep Directives<\/a><\/li>\n<li><a class=\"row-title\" href=\"http:\/\/jebware.com\/blog\/?p=498\" aria-label=\"\u201cFeeding ProGuard\u2019s inputs: where are all of these rules coming from?\u201d (Edit)\">Feeding ProGuard\u2019s inputs: where are all of these rules coming from?<\/a><\/li>\n<li><a class=\"row-title\" href=\"http:\/\/jebware.com\/blog\/?p=434\" aria-label=\"\u201cProGuard pro-tip: Don\u2019t use ProGuard\u2019s \u201c-include\u201d with Gradle builds\u201d (Edit)\">ProGuard pro-tip: Don\u2019t use ProGuard\u2019s \u201c-include\u201d with Gradle builds<\/a><\/li>\n<li><a href=\"http:\/\/jebware.com\/blog\/?p=517\">Best Practices for Enabling ProGuard<\/a><\/li>\n<\/ul>\n<p>Gradle snippet for forcing a particular version of ProGuard:<\/p>\n<pre class=\"p1\"><span class=\"s1\">buildscript {<\/span>\r\n<span class=\"s1\"><span class=\"Apple-converted-space\">\u00a0 <\/span>...<\/span>\r\n<span class=\"s2\"><span class=\"Apple-converted-space\">\u00a0 <\/span><\/span><span class=\"s1\">configurations<\/span><span class=\"s3\">.all {<\/span>\r\n<span class=\"s1\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>resolutionStrategy {<\/span>\r\n<span class=\"s3\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 <\/span>force<\/span> <span class=\"s1\">'net.sf.proguard:proguard-base:6.0.1'<\/span>\r\n<span class=\"s1\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>}<\/span>\r\n<span class=\"s1\"><span class=\"Apple-converted-space\">\u00a0 <\/span>}<\/span>\r\n<span class=\"s1\">}<\/span><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Thanks for watching my talk, How ProGuard Works, at Droidcon Boston or Android Summit. Here are some of the links that I mentioned in my slides, as well as links to some of my blog posts including the diagrams I used. ProGuard Manual ProGuard source code ProGuard v6 Release Notes (new options like -addconfigurationdebugging) Jake &hellip; <a href=\"https:\/\/jebware.com\/blog\/?p=510\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;How ProGuard Works &#8211; Links&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"twitterCardType":"summary","cardImageID":0,"cardImage":"http:\/\/jebware.com\/blog\/wp-content\/uploads\/2018\/01\/proguard-steps.png","cardTitle":"","cardDesc":"","cardImageAlt":"","cardPlayer":"","cardPlayerWidth":0,"cardPlayerHeight":0,"cardPlayerStream":"","cardPlayerCodec":""},"categories":[4,16],"tags":[],"_links":{"self":[{"href":"https:\/\/jebware.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/510"}],"collection":[{"href":"https:\/\/jebware.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jebware.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jebware.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jebware.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=510"}],"version-history":[{"count":6,"href":"https:\/\/jebware.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/510\/revisions"}],"predecessor-version":[{"id":536,"href":"https:\/\/jebware.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/510\/revisions\/536"}],"wp:attachment":[{"href":"https:\/\/jebware.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=510"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jebware.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=510"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jebware.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=510"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}