简体   繁体   English

在gradle android build中使用progaurd生成jar文件

[英]Generating jar files using progaurd in gradle android build

Usually by providing -injars and -outjars to progaurd , we can generate obfuscated jar file of filtered classes from -injars. 通常,通过向progaurd提供-injars和-outjars,我们可以从-injars生成过滤的类的模糊jar文件。

is there any way in gradle android build by using proguardFile attribute, to generated obfuscated jar file of filtered classes from group of project classes . gradle android build中有什么方法可以通过使用proguardFile属性从项目类组中生成过滤类的混淆jar文件。 These filtered jar files are in addition to gradle android build binary. 这些过滤的jar文件是gradle android build binary的补充。

You will probably have to create a new library module in your project and refactor your code to move the classes you want in the jar into the new library module. 您可能必须在项目中创建一个新的库模块,然后重构代码,以将jar中所需的类移到新的库模块中。

See this answer: https://stackoverflow.com/a/47444948/3501286 看到这个答案: https : //stackoverflow.com/a/47444948/3501286

and this one: https://stackoverflow.com/a/19037807/3501286 而这个: https : //stackoverflow.com/a/19037807/3501286

My requirement of generating individual obfuscated jar files based on few selected class files from single library project is achieved with below way. 我的要求是基于单个库项目中很少选择的类文件生成单个混淆的jar文件,这是通过以下方式实现的。 These individual jar files are in addition to final android binary ie, .aar file. 这些单独的jar文件是最终android二进制文件(即.aar文件)的补充。

Debug : 1. During android build, gradle moves all the compiled java files to /build/intermediates/javac/debug/compileDebugJavaWithJavac/classes folder. 调试:1.在android构建过程中,gradle将所有已编译的java文件移至/ build / intermediates / javac / debug / compileDebugJavaWithJavac / classes文件夹。

  1. In proguard file I have given -injars as above folder and -outjars as my custom path with filters. 在proguard文件中,我给了-injars作为上面的文件夹,给了-outjars作为我的带有过滤器的自定义路径。

  2. Using 'proguardFile' attribute I have passed proguard file to build.gradle 使用'proguardFile'属性,我已将proguard文件传递给build.gradle

  3. All the individual jar files specified using -injars and -outjars would be obfuscated and will be placed in -outjars path 使用-injars和-outjars指定的所有单个jar文件将被混淆,并将放置在-outjars路径中

Eg : 例如:

In debug mode : 在调试模式下:

-injars 'D:\\projectname\\build\\intermediates\\javac\\debug\\compileDebugJavaWithJavac\\classes'(**.class) -injars'D:\\ projectname \\ build \\ intermediates \\ javac \\ debug \\ compileDebugJavaWithJavac \\ classes'(**。class)

-outjars 'D:\\projectname\\build\\intermediates\\transforms\\proguard\\debug\\1.jar'(com/ui/tab/ TabWidget.class,com/ui/Tab .class) -outjars'D:\\ projectname \\ build \\ intermediates \\ transforms \\ proguard \\ debug \\ 1.jar'(com / ui / tab / TabWidget.class,com / ui / Tab .class)

-injars 'D:\\projectname\\build\\intermediates\\javac\\debug\\compileDebugJavaWithJavac\\classes'(**.class) -injars'D:\\ projectname \\ build \\ intermediates \\ javac \\ debug \\ compileDebugJavaWithJavac \\ classes'(**。class)

-outjars 'D:\\projectname\\build\\intermediates\\transforms\\proguard\\debug\\1.jar'(com/ui/CollapsibleWidget.class) -outjars'D:\\ projectname \\ build \\ intermediates \\ transforms \\ proguard \\ debug \\ 1.jar'(com / ui / CollapsibleWidget.class)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM