15d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis/* 2ba381a314edcd57963ed1ac5910595e04faf29ccFilip Pavlis * Copyright 2018 The Android Open Source Project 35d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * 45d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * Licensed under the Apache License, Version 2.0 (the "License"); 55d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * you may not use this file except in compliance with the License. 65d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * You may obtain a copy of the License at 75d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * 84a360e3a3af230badc847867c117f605367170aaFilip Pavlis * http://www.apache.org/licenses/LICENSE-2.0 95d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * 105d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * Unless required by applicable law or agreed to in writing, software 115d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * distributed under the License is distributed on an "AS IS" BASIS, 125d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * See the License for the specific language governing permissions and 144a360e3a3af230badc847867c117f605367170aaFilip Pavlis * limitations under the License. 155d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis */ 165d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis 17ba381a314edcd57963ed1ac5910595e04faf29ccFilip Pavlispackage com.android.tools.build.jetifier.processor.transform.proguard 185d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis 195d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlisimport org.junit.Test 205d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis 215d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlisclass ProguardSamplesTest { 225d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis 235d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis @Test fun proGuard_sample() { 24e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis ProGuardTester() 255d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenPrefixes( 265d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/app/", 275d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/view/", 285d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/content/", 295d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/os/", 305d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/webkit/" 315d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 325d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenTypesMap( 335d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/app/Activity" to "test/app/Activity", 345d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/app/Application" to "test/app/Application", 355d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/view/View" to "test/view/View", 365d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/view/MenuItem" to "test/view/MenuItem", 375d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/content/Context" to "test/content/Context", 385d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/os/Parcelable" to "test/os/Parcelable", 395d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/webkit/JavascriptInterface" to "test/webkit/JavascriptInterface" 405d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 415d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .testThatGivenProGuard( 42e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "-injars bin/classes \n" + 43e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "-injars libs \n" + 44e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "-outjars bin/classes-processed.jar \n" + 45e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "-libraryjars /usr/local/java/android-sdk/platforms/android-9/android.jar \n" + 46e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "\n" + 47e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "-dontpreverify \n" + 48e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "-repackageclasses '' \n" + 49e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "-allowaccessmodification \n" + 50e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "-optimizations !code/simplification/arithmetic \n" + 51e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "-keepattributes *Annotation* \n" + 52e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "\n" + 53e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "-keep public class * extends android.app.Activity \n" + 54e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "-keep public class * extends android.app.Application \n" + 55e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis " \n" + 56e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "-keep public class * extends android.view.View { \n" + 57e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis " public <init>(android.content.Context); \n" + 58e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis " public <init>(android.content.Context, android.util.AttributeSet); \n" + 59e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis " public <init>(android.content.Context, android.util.AttributeSet, int); \n" + 60e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis " public void set*(...); \n" + 61e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "} \n" + 62e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "\n" + 63e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "-keepclasseswithmembers class * { \n" + 64e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis " public <init>(android.content.Context, android.util.AttributeSet); \n" + 65e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "} \n" + 66e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "\n" + 67e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "-keepclasseswithmembers class * { \n" + 68e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis " public <init>(android.content.Context, android.util.AttributeSet, int); \n" + 69e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "} \n" + 70e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "\n" + 71e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "-keepclassmembers class * extends android.content.Context { \n" + 72e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis " public void *(android.view.View); \n" + 73e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis " public void *(android.view.MenuItem); \n" + 74e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "} \n" + 75e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "\n" + 76e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "-keepclassmembers class * implements android.os.Parcelable { \n" + 77e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis " static ** CREATOR; \n" + 78e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "} \n" + 79e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "\n" + 80e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "-keepclassmembers class **.R\$* { \n" + 81e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis " public static <fields>; \n" + 82e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "} \n" + 83e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "\n" + 84e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "-keepclassmembers class * { \n" + 85e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis " @android.webkit.JavascriptInterface <methods>; \n" + 86e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis "} " 875d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 885d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .rewritesTo( 895d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-injars bin/classes \n" + 905d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-injars libs \n" + 915d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-outjars bin/classes-processed.jar \n" + 925d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-libraryjars /usr/local/java/android-sdk/platforms/android-9/android.jar \n" + 935d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "\n" + 945d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-dontpreverify \n" + 955d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-repackageclasses '' \n" + 965d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-allowaccessmodification \n" + 975d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-optimizations !code/simplification/arithmetic \n" + 985d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keepattributes *Annotation* \n" + 995d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "\n" + 1005d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class * extends test.app.Activity \n" + 1015d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class * extends test.app.Application \n" + 1025d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " \n" + 1035d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class * extends test.view.View { \n" + 1045d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public <init>(test.content.Context); \n" + 1055d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public <init>(test.content.Context, android.util.AttributeSet); \n" + 1065d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public <init>(test.content.Context, android.util.AttributeSet, int); \n" + 1075d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public void set*(...); \n" + 1085d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "} \n" + 1095d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "\n" + 1105d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keepclasseswithmembers class * { \n" + 1115d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public <init>(test.content.Context, android.util.AttributeSet); \n" + 1125d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "} \n" + 1135d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "\n" + 1145d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keepclasseswithmembers class * { \n" + 1155d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public <init>(test.content.Context, android.util.AttributeSet, int); \n" + 1165d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "} \n" + 1175d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "\n" + 1185d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keepclassmembers class * extends test.content.Context { \n" + 1195d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public void *(test.view.View); \n" + 1205d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public void *(test.view.MenuItem); \n" + 1215d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "} \n" + 1225d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "\n" + 1235d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keepclassmembers class * implements test.os.Parcelable { \n" + 1245d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " static ** CREATOR; \n" + 1255d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "} \n" + 1265d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "\n" + 1275d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keepclassmembers class **.R\$* { \n" + 1285d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public static <fields>; \n" + 1295d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "} \n" + 1305d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "\n" + 1315d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keepclassmembers class * { \n" + 1325d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @test.webkit.JavascriptInterface <methods>; \n" + 1335d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "} " 1345d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 1355d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis } 1365d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis 1375d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis @Test fun proGuard_sample2() { 138e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis ProGuardTester() 1395d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenPrefixes( 1405d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/support/v7/" 1415d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 1425d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenTypesMap( 1435d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/support/v7/preference/Preference" to "test/Preference" 1445d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 1455d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .testThatGivenProGuard( 1465d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class android.support.v7.preference.Preference {\n" + 1475d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public <init>(android.content.Context, android.util.AttributeSet);\n" + 1485d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "}\n" + 1495d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class * extends android.support.v7.preference.Preference {\n" + 1505d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public <init>(android.content.Context, android.util.AttributeSet);\n" + 1515d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "}" 1525d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 1535d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .rewritesTo( 1545d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class test.Preference {\n" + 1555d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public <init>(android.content.Context, android.util.AttributeSet);\n" + 1565d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "}\n" + 1575d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class * extends test.Preference {\n" + 1585d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public <init>(android.content.Context, android.util.AttributeSet);\n" + 1595d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "}" 1605d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 1615d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis } 1625d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis 1635d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis @Test fun proGuard_sample3() { 164e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis ProGuardTester() 1655d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenPrefixes( 1665d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/support/design/", 1675d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/support/v7/" 1685d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 1695d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenTypesMap( 1705d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/Fragment" to "test/Fragment", 1715d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/support/v7/widget/RoundRectDrawable" to "test/RoundRectDrawable" 1725d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 1735d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenProGuardMap( 1745d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/support/design.**" to "test/design.**", 1755d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/support/design/R\$*" to "test/design/R\$*" 1765d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 1775d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .testThatGivenProGuard( 1785d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-dontwarn android.support.design.**\n" + 1795d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep class android.support.design.** { *; }\n" + 1805d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep interface android.support.design.** { *; }\n" + 1815d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class android.support.design.R\$* { *; }\n" + 1825d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep class android.support.v7.widget.RoundRectDrawable { *; }" 1835d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 1845d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .rewritesTo( 1855d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-dontwarn test.design.**\n" + 1865d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep class test.design.** { *; }\n" + 1875d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep interface test.design.** { *; }\n" + 1885d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class test.design.R\$* { *; }\n" + 1895d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep class test.RoundRectDrawable { *; }" 1905d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 1915d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis } 1925d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis 1935d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis @Test fun proGuard_sample4() { 194e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis ProGuardTester() 1955d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenPrefixes( 1965d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/support/design/", 1975d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/support/v7/", 1985d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/support/v4/" 1995d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 2005d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenTypesMap( 2015d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/support/v7/widget/LinearLayoutManager" to "test/LinearLayoutManager", 2025d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/support/v4/view/ActionProvider" to "test/ActionProvider" 2035d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 2045d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenProGuardMap( 2055d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/support/v7/**" to "test/v7/**", 2065d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/support/v7/widget/**" to "test/v7/widget/**", 2075d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/support/v7/internal/widget/**" to "test/v7/internal/widget/**", 2085d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "android/support/v7/internal/**" to "test/v7/internal/**" 2095d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 2105d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .testThatGivenProGuard( 2115d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-dontwarn android.support.v7.**\n" + 2125d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class android.support.v7.widget.** { *; }\n" + 2135d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class android.support.v7.internal.widget.** { *; }\n" + 2145d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep class android.support.v7.widget.LinearLayoutManager { *; }\n" + 2155d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep class android.support.v7.internal.** { *; }\n" + 2165d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep interface android.support.v7.internal.** { *; }\n" + 2175d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "\n" + 2185d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep class android.support.v7.** { *; }\n" + 2195d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep interface android.support.v7.** { *; }\n" + 2205d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "\n" + 2215d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class * extends android.support.v4.view.ActionProvider {\n" + 2225d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public <init>(android.content.Context);" 2235d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 2245d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .rewritesTo( 2255d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-dontwarn test.v7.**\n" + 2265d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class test.v7.widget.** { *; }\n" + 2275d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class test.v7.internal.widget.** { *; }\n" + 2285d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep class test.LinearLayoutManager { *; }\n" + 2295d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep class test.v7.internal.** { *; }\n" + 2305d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep interface test.v7.internal.** { *; }\n" + 2315d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "\n" + 2325d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep class test.v7.** { *; }\n" + 2335d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep interface test.v7.** { *; }\n" + 2345d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "\n" + 2355d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class * extends test.ActionProvider {\n" + 2365d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public <init>(android.content.Context);" 2375d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 2385d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis } 2395d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis 2405d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis @Test fun proGuard_sample5() { 241e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis ProGuardTester() 2425d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenPrefixes( 2435d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/" 2445d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 2455d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .forGivenTypesMap( 2465d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/Activity" to "test/Activity", 2475d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/Fragment" to "test/Fragment", 2485d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "support/Annotation" to "test/Annotation" 2495d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 2505d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .testThatGivenProGuard( 2515d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class * extends support.Activity { \n" + 2525d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public static <fields>; \n" + 2535d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public !static <methods>; \n" + 2545d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public support.Fragment height; \n" + 2555d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public static <fields>; \n" + 2565d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public not.related.Type width; public support.Fragment width; \n" + 2575d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " ignoreMe; \n" + 2585d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @support.Annotation public support.Fragment get(); \n" + 259982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis "}\n" + 260982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis "-dontwarn support.**" 2615d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 2625d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis .rewritesTo( 2635d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis "-keep public class * extends test.Activity { \n" + 2645d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public static <fields>; \n" + 2655d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public !static <methods>; \n" + 2665d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public test.Fragment height; \n" + 2675d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public static <fields>; \n" + 2685d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " public not.related.Type width; public test.Fragment width; \n" + 2695d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " ignoreMe; \n" + 2705d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis " @test.Annotation public test.Fragment get(); \n" + 271982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis "}\n" + 272982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis "-dontwarn test.**" 2735d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis ) 2745d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis } 2755d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis}