Android рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдирд╛

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдЬреЛ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рдЬрд╛рд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред



рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдо рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдорд░реНрдерди рдкреБрд╕реНрддрдХрд╛рд▓рдпред рдпрджрд┐ рд╣рдордиреЗ рдорд╛рд╡реЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдордиреЗ рдмрд╕ рдкреЛрдо рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд▓рд┐рдЦреАрдВ рдФрд░ рднрд╛рдк рдирд╣реАрдВ рд▓реАред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдорд╛рд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЙрди рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ рдЬреЛ рдЕрд╕реЗрдВрдмрд▓реА рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдЪреАрдВрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?



рд╣рдо рдЕрдкрдиреЗ рдЬрд╛рд░ рдХреЗ рдЖрдЧреЗ рдирд┐рд░реНрднрд░рддрд╛ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЯрдХрд░рд╛рд╡ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рд╕рдорд░реНрдерди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╣реА рдПрдХ рдФрд░ред рдлрд┐рд░ рдЖрдкрдХреЛ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ред



рдЖрдк рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЬрд╛рд░ рдПрдХ рдирд┐рдпрдорд┐рдд рдЬрд╝рд┐рдк рдлрд╝рд╛рдЗрд▓ рд╣реИред рд╣рдо рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдЕрдирдкреИрдХ рдХрд░реЗрдВрдЧреЗ, .class рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ bytecode рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рдлрд┐рд░ рд╣рдорд╛рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВрдЧреЗ, рд╕рднреА .class рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдЬрдЧрд╣ рдкрд░ рд░рдЦреЗрдВрдЧреЗ рдФрд░ рдЙрдирд╕реЗ рдЬрд╛рд░ рдПрдХрддреНрд░ рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣рдорд╛рд░реЗ рдЬреИрд╕реЗ рд╣реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рджреЛ рд╕рдорд╛рди рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВред



рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЬрд╛рд░рдЬрд╝рд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рд╕рдорд░реНрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ - рд╕рднреА рд╡рд░реНрдЧ рдкреИрдХреЗрдЬ android.support.v4 рдореЗрдВ рд╣реИрдВ



рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:

java -jar jarjar.jar process <rulesFile> <inJar> <outJar> rulesFile -     inJar, outJar -   
      
      





Android.support.v4 рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдо рдмрдирд╛рдПрдБред * to inner.android.support.v4ред *

 rule android.support.v4.** inner.android.support.v4.@1
      
      



рдФрд░ rules.txt рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ



рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ

 java -jar jarjar.jar rules.txt android-support-v4.jar android-support-v4-renamed.jar
      
      





рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдкреБрдирд░реНрдирд┐рд░реНрдорд┐рдд рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЬрд╛рд░ рдорд┐рд▓рд╛ред рдЕрдЧрд▓рд╛, рд╣рдо рдирд╛рдорд╛рдВрдХрд┐рдд рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рд╕рдВрдХрд▓рди рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдЕрдирдкреИрдХ рдХрд░рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдХреЛрдб рд╣реЛрддреЗ рд╣реИрдВред



рд╣рдорд╛рд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИ, рдЬреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рдЬрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкреНрд░рдпреБрдХреНрдд рд╡рд░реНрдЧреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдкрд░ рдЖрд╡реЗрджрди рдХрд░реЗрдВред



рдФрд░ рдЕрдВрдд рдореЗрдВ, рдПрдХ рдЫреЛрдЯреА рд╕реА рдЧреНрд░реЗрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛ рдпрд╣ рд╕рдм рдХрд░рддреА рд╣реИ



 apply plugin: 'java' defaultTasks 'proguard' task unpackJars(dependsOn: compileJava) { //    file('libs').listFiles().each { File file -> if (file.name.endsWith('.jar')) { copy { from(zipTree(file.path)) into('build/classes/main') } } } // jar' tasks.jar.execute() } task proguard(type: proguard.gradle.ProGuardTask, dependsOn: unpackJars) { injars 'build/libs/library.jar' outjars 'build/libs/proguard_library.jar' libraryjars '/Applications/my/Android Studio.app/sdk/platforms/android-10/android.jar' //        keep 'class com.CasualSoftware.classloader.library.**' } dependencies { compile 'com.google.android:android:2.2.1' compile fileTree(dir: 'libs', include: ['*.jar']) }
      
      





рд╣реЙрд╡реЗрд▓ рдФрд░ рд╕рднреА, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ proguard_library.jar рдорд┐рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдорд░реНрдерди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рдбреНрд░реЙрдкрдмреЙрдХреНрд╕ рдПрд╕рдбреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рд╡рдЬрди 50 рдХреЗрдмреА рд╣реИред



рдЙрд╕реА рддрд░рд╣, рдЖрдк рдЕрдкрдиреЗ рдПрдкреАрдХреЗ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдкреИрдХреНрдб рдЗрди .classes рдФрд░ рд▓рд╛рдЧреВ рдкреНрд░реЛрдЧрд╛рд░реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рдлрд┐рд░ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдЕрдкреНрд░рдпреБрдХреНрдд рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ред рддреЛ рдЖрдк рдПрдкреАрдХреЗ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рдбрд░ рдХреЗ рдмрд┐рдирд╛ рднрд╛рд░реА рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ



All Articles