android 代码proguard

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

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

在pom 中加入:


			
				
				
					org.eclipse.m2e
					lifecycle-mapping
					1.0.0
					
						
							
								
									
										
											com.jayway.maven.plugins.android.generation2
										
										
											android-maven-plugin
										
										
											[3.1.1,)
										
										
										package
											proguard
											update-version
										
									
									
										
									
								
							
						
					
				
				
					org.codehaus.mojo
					build-helper-maven-plugin
					
						
							
								${project.build.directory}/${project.artifactId}-signed-aligned.apk
								apk
								signed-aligned
							
							
								${project.build.directory}/proguard/mapping.txt
								map
								release
							
						
					
					
						
							attach-signed-aligned
							package
							
								attach-artifact
							
						
						
					      	parse-version
					      	
					        	parse-version
					      	
					    
					
				
				
					com.pyx4me
					proguard-maven-plugin
					2.0.4
					
						
							package
							
								proguard
							
						
					
					
						true
						
							
						
						${project.build.finalName}.jar
						${project.build.finalName}-small.jar
						${project.build.directory}
						
							${java.home}/lib/rt.jar
							${java.home}/lib/jsse.jar
						
						false
					
				
			
		
        
...

		        com.pyx4me
		        proguard-maven-plugin
		    
....
        




注意红色部分,代码混淆要用到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 ,代码已经被混淆了,这样被反编译的可能性就降低了。
开始时最好不要把混淆打开,因为混淆会,如果代码报错,是定位不到代码行的,显示的事混淆以后的代码,都是小字母了
如果有更好的方式,或者不对的地方,请多指正!

你可能感兴趣的:(android,java,proguard,maven)