`
yi_17328214
  • 浏览: 206725 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

android 代码proguard

阅读更多
大家都知道,java 代码很容易被反编译,同样android 也是如此,android中引入了proguard 代码混淆。下面就说下怎么样在android中加入代码混淆。

Note:开发环境是Mac 系统。采用maven 开发

在pom 中加入:

<pluginManagement>
			<plugins>
				<!--This plugin's configuration is used to store Eclipse m2e settings 
					only. It has no influence on the Maven build itself. -->
				<plugin>
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
							<pluginExecutions>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>
											com.jayway.maven.plugins.android.generation2
										</groupId>
										<artifactId>
											android-maven-plugin
										</artifactId>
										<versionRange>
											[3.1.1,)
										</versionRange>
										<goals>
										<goal>package</goal>
											<goal>proguard</goal>
											<goal>update-version</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore></ignore>
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>build-helper-maven-plugin</artifactId>
					<configuration>
						<artifacts>
							<artifact>
								<file>${project.build.directory}/${project.artifactId}-signed-aligned.apk</file>
								<type>apk</type>
								<classifier>signed-aligned</classifier>
							</artifact>
							<artifact>
								<file>${project.build.directory}/proguard/mapping.txt</file>
								<type>map</type>
								<classifier>release</classifier>
							</artifact>
						</artifacts>
					</configuration>
					<executions>
						<execution>
							<id>attach-signed-aligned</id>
							<phase>package</phase>
							<goals>
								<goal>attach-artifact</goal>
							</goals>
						</execution>
						<execution>
					      	<id>parse-version</id>
					      	<goals>
					        	<goal>parse-version</goal>
					      	</goals>
					    </execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>com.pyx4me</groupId>
					<artifactId>proguard-maven-plugin</artifactId>
					<version>2.0.4</version>
					<executions>
						<execution>
							<phase>package</phase>
							<goals>
								<goal>proguard</goal>
							</goals>
						</execution>
					</executions>
					<configuration>
						<obfuscate>true</obfuscate>
						<options>
							<option>@proguard.cfg</option>
						</options>
						<injar>${project.build.finalName}.jar</injar>
						<outjar>${project.build.finalName}-small.jar</outjar>
						<outputDirectory>${project.build.directory}</outputDirectory>
						<libs>
							<lib>${java.home}/lib/rt.jar</lib>
							<lib>${java.home}/lib/jsse.jar</lib>
						</libs>
						<addMavenDescriptor>false</addMavenDescriptor>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
        <plugins>
...
<plugin>
		        <groupId>com.pyx4me</groupId>
		        <artifactId>proguard-maven-plugin</artifactId>
		    </plugin>
....
        </plugins>




注意红色部分,代码混淆要用到rt.jar 和jsse.jar 这两个jar包。但在mac 中没有这个rt.jar . 运行时候回报错,说没有这个jar。原来rt.jar 已经被包含在了classes.jar 里面了, 所以 我们就 做一个连接连过去。

Note: 也许路径会有所不同。

sudo ln -s /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsse.jar /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/home/lib/jsse.jar 

sudo ln -s /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/rt.jar /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/home/lib/rt.jar 


再次运行,刷新工程,就可以在target 文件夹下多了几个文件,progard_map.txt proguard_seeds.txt ... ok ,代码已经被混淆了,这样被反编译的可能性就降低了。
开始时最好不要把混淆打开,因为混淆会,如果代码报错,是定位不到代码行的,显示的事混淆以后的代码,都是小字母了
如果有更好的方式,或者不对的地方,请多指正!
1
0
分享到:
评论

相关推荐

    Android 4.0及以上版本 ProGuard 代码混淆

    ### Android 4.0 及以上版本 ProGuard 代码混淆详解 #### 一、ProGuard 简介 ProGuard 是一款广泛应用于 Android 开发中的代码混淆工具,它能够通过删除未使用的类、字段、方法等,从而缩小 APK 的体积,并提高...

    Android proguard.cfg

    在Android开发过程中,为了保护应用的安全性和优化代码大小,开发者通常会使用ProGuard工具进行代码混淆、优化和压缩。ProGuard是Android Studio内置的一个强大的工具,它可以将Java字节码转换为更难理解的形式,...

    Android代码-proguard-tips

    **Android代码混淆与Proguard详解** 在Android应用开发中,为了保护代码安全、减小APK体积以及提高运行效率,开发者通常会使用代码混淆工具,其中最常用的便是Proguard。Proguard是一个强大的Java字节码混淆、优化...

    如何混淆Android项目代码(ProGuard)防止反编译.rar

    为了对抗这种威胁,开发者通常会采用代码混淆技术,其中ProGuard是Android官方推荐的混淆工具。本教程将深入探讨如何使用ProGuard来混淆Android项目代码,以防止反编译。 一、ProGuard介绍 ProGuard是一款免费的...

    Android Java代码混淆工具:ProGuard简介及使用.docx

    ### Android Java代码混淆工具:ProGuard的深度解析与实践 #### 概述 在软件开发领域,代码混淆是一项重要的安全措施,特别是在移动应用开发中,它能够保护源代码不被轻易逆向工程,从而增强应用的安全性。在...

    android proguard

    在Android开发中,ProGuard是一个强大的代码混淆、优化和压缩工具。它被广泛应用于发布APK时,以保护代码安全、减小程序体积并提高运行效率。当我们遇到与jPush(极光推送)相关的混淆报错时,理解ProGuard的工作...

    Android代码混淆 proguard语法及常用

    新写的proguard代码混淆的文档 大家可以看看

    android-sdk目录下tools文件夹下的proguard文件夹

    ProGuard是Android开发中一个非常重要的工具,它主要用于优化、混淆、压缩和移除Java代码,以提升应用程序的安全性和性能。在Android SDK的`tools`文件夹下,ProGuard的相关文件提供了实现这些功能的配置和执行环境...

    Android添加Proguard混淆支持完整实例

    在Android开发过程中,为了保护应用的安全性和优化代码大小,开发者通常会使用Proguard工具进行代码混淆。Proguard是一个强大的Java类文件 shrinker、optimizer、 obfuscator 和 preverifier,它能够删除未使用的...

    Android混淆 各个版本proguard文件

    在Android应用开发中,安全性和性能优化是至关重要的环节,其中混淆(Proguard)就是一种常用的工具,用于保护代码安全并减小程序体积。本篇将详细介绍Android混淆以及各个版本的Proguard文件,帮助开发者理解其工作...

    开源bbs源码java-Android-ProGuard:Android分享:代码混淆那些事

    它可以混淆Android项目里面的java代码,对的,你没看错,仅仅是java代码。它是无法混淆Native代码,资源文件drawable、xml等。 ProGuard作用 压缩: 移除无效的类、属性、方法等 优化: 优化字节码,并删除未使用的...

    java 代码混淆 proguard

    ProGuard是一款广泛使用的Java代码混淆工具,它能有效地压缩、优化和混淆Java字节码,使其难以阅读和理解。 ProGuard的主要功能包括: 1. **压缩**:删除未使用的类、字段和方法,减小最终的APK或JAR文件大小,...

    Android 2_3 代码混淆proguard技术介绍 - Zy的技术心

    Android 2_3 代码混淆proguard技术介绍 - Zy的技术心

    ProGuard工具包,Java代码混淆

    ProGuard是Android和Java平台上的一个强大的开源工具,它能实现代码混淆、优化、压缩以及预校验等功能。本文将深入探讨ProGuard的工作原理、配置与应用。 ### 1. ProGuard概述 ProGuard是一款免费的Java字节码混淆...

    java代码混淆器proGuard

    - 对于Android应用,ProGuard是默认的代码混淆工具,防止恶意用户分析和篡改代码。 - 对于服务器端的Java应用,混淆可以增强代码的保密性,减少知识产权泄露的风险。 - 对于开源项目,混淆可以保护作者的劳动成果...

    ProGuard4.8使用proguard来保护我们的代码

    在Java和Android开发中,ProGuard是一个常用的安全措施,用于保护代码不被轻易反编译和理解。 ## 一、ProGuard的作用 1. **混淆代码**:ProGuard通过将类名、方法名和变量名替换为简短的无意义的名称,使得反编译...

    proguard7.3.0

    ProGuard 7.3.0 是一款强大的Java代码优化、混淆和压缩工具,适用于各种Java应用程序,包括Android应用。此版本是ProGuard的最新更新,旨在解决从GitHub下载速度缓慢的问题,确保用户能够快速便捷地获取和使用该工具...

    Android proguard4.5.1.rar

    **Android ProGuard 4.5.1:代码混淆与优化技术详解** 在Android开发中,保护应用程序的安全性和防止反编译是至关重要的。ProGuard是一款强大的代码混淆、优化和压缩工具,它能将Java字节码转换为难以理解的形式,...

    Android代码-ProguardDictionaryGenerator

    为了保护我们的JAVA/Android代码,我们常使用proguard对代码进行混淆(http://proguard.sourceforge.net/)。 默认情况下,proguard混淆时将类/变量/方法重命名为a,b,c,...的格式。 我们可以通过配置-...

Global site tag (gtag.js) - Google Analytics