`
fonter
  • 浏览: 867465 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

android混淆(Obfuscate)

阅读更多

Obfuscate an Android application 这篇文章的作者介绍了如何在Android平台下混淆程序,并且给出antbuild.xml文件,经过自己的测试,发现里面少了一些target项,在Eclips会出错,后来结合zxing开源项目的build.xml文件,终于混淆成功,项目包减少了不少。

 

这里主要提一些注意事项,不提供源代码

1、创建build.xml文件

 直接在项目的目录下新建一个名为build.xml的文件

 

 

2、创建Ant打包方式

项目 –> properties –> builders –> new –> ant builder

 

 

接着Buildfile选择项目build.xml文件,Base Dir选择项目目录就行了,记得勾上你的builders

 

 

 

3build.xml文件修改

zxing这个文件没有加入混淆包选项,所以得做一些修改,如下示例

 

<property name="proguard-home" value="D:\\Program Files\\proguard4.2\\lib\\"/>

	<target name="optimize" depends="compile">
		<jar basedir="${outdir-classes}" destfile="temp.jar"/>
		<java jar="${proguard-home}/proguard.jar" fork="true" failonerror="true">
			<jvmarg value="-Dmaximum.inlined.code.length=32"/>
			<arg value="-injars temp.jar"/>
			<arg value="-outjars optimized.jar"/>
			<arg value="-libraryjars ${android-jar}"/>
			<!-- <arg value="-libraryjars ${library-jar}/some_lib_used.jar"/> -->
			<arg value="-dontpreverify"/>
			<arg value="-dontoptimize"/>
			<arg value="-dontusemixedcaseclassnames"/>
			<arg value="-repackageclasses ''"/>
			<arg value="-allowaccessmodification"/>
			<arg value="-keep public class com.iwidsets.WidsetsActivity"/>
			<!-- <arg value="-keep public class com.just2me.obfapp.receiver.*"/> -->
			<arg value="-optimizationpasses 7"/>
			<arg value="-verbose"/>
			<arg value="-dontskipnonpubliclibraryclasses"/>
			<arg value="-dontskipnonpubliclibraryclassmembers"/>
		</java>
		<delete file="temp.jar"/>
		<delete dir="${outdir-classes}"/>
		<mkdir dir="${outdir-classes}"/>
		<unzip src="optimized.jar" dest="${outdir-classes}"/>
		<delete file="optimized.jar"/>
	</target>


 

注意:keep public class com.iwidsets.WidsetsActivity需改成你的主Activity

 

 并修改target dex

 

	<!-- Convert this project's .class files into .dex files. -->
	<target name="dex" depends="compile,optimize">
		<echo>Converting compiled files and external libraries into ${out-folder}/${dex-file}...</echo>
		<apply executable="${dx}" failonerror="true" parallel="true">
			<arg value="--dex" />
			<arg value="--output=${intermediate-dex-location}" />
			<arg path="${outdir-classes-location}" />
			<fileset dir="${external-libs-folder}" includes="*.jar"/>
		</apply>
	</target>

 

  • 大小: 4.9 KB
  • 大小: 27.1 KB
  • 大小: 25.5 KB
  • 大小: 6.4 KB
1
3
分享到:
评论
9 楼 s123451 2013-05-30  
[list]
[*]
引用

[/list]
8 楼 fonter 2011-08-23  
caitiancai 写道
BUILD FAILED
D:\personal\eclipse\S2\build.xml:188: src 'D:\personal\eclipse\core\core.jar' doesn't exist.

请问这个怎么解决呀????

现在的android sdk已支持混淆了,直接通过eclipse就可以混了,不用再写xml了..你可以试试...   http://fonter.iteye.com/blog/942714
7 楼 caitiancai 2011-08-23  
BUILD FAILED
D:\personal\eclipse\S2\build.xml:188: src 'D:\personal\eclipse\core\core.jar' doesn't exist.

请问这个怎么解决呀????
6 楼 songfantasy 2011-04-28  
sdk8以后,google已经给提供很方便的混淆方法。

不过,楼主不错。总结的很好
5 楼 sunburst 2010-10-02  
fonter 写道
No resource found that matches the given name (at 'icon' with value '@drawable/icon').
sunburst 写道
非常感谢你的回答,现在出现了新问题,当我开始build的时候,显示下面的错误,应该如何解决?


resource-src:
     [echo] Generating R.java / Manifest.java from the resources...
     [exec] E:\Android App\sms\MyPrivateMessages\AndroidManifest.xml:26: ERROR Error: No resource found that matches the given name (at 'icon' with value '@drawable/icon').
     [exec] E:\Android App\sms\MyPrivateMessages\AndroidManifest.xml:26: ERROR Error: No resource found that matches the given name (at 'label' with value '@string/app_name').
     [exec] E:\Android App\sms\MyPrivateMessages\AndroidManifest.xml:28: ERROR Error: No resource found that matches the given name (at 'label' with value '@string/app_name').

BUILD FAILED

No resource found that matches the given name (at 'icon' with value '@drawable/icon').
在drawable没有icon吧,“No resource found that matches the given name ”这个

实际是有的,不然project本身也会报错,现在情况是不用ant是正常编译的,说明资源指向是正确的
4 楼 fonter 2010-10-01  
No resource found that matches the given name (at 'icon' with value '@drawable/icon').
sunburst 写道
非常感谢你的回答,现在出现了新问题,当我开始build的时候,显示下面的错误,应该如何解决?


resource-src:
     [echo] Generating R.java / Manifest.java from the resources...
     [exec] E:\Android App\sms\MyPrivateMessages\AndroidManifest.xml:26: ERROR Error: No resource found that matches the given name (at 'icon' with value '@drawable/icon').
     [exec] E:\Android App\sms\MyPrivateMessages\AndroidManifest.xml:26: ERROR Error: No resource found that matches the given name (at 'label' with value '@string/app_name').
     [exec] E:\Android App\sms\MyPrivateMessages\AndroidManifest.xml:28: ERROR Error: No resource found that matches the given name (at 'label' with value '@string/app_name').

BUILD FAILED

No resource found that matches the given name (at 'icon' with value '@drawable/icon').
在drawable没有icon吧,“No resource found that matches the given name ”这个
3 楼 sunburst 2010-09-30  
非常感谢你的回答,现在出现了新问题,当我开始build的时候,显示下面的错误,应该如何解决?


resource-src:
     [echo] Generating R.java / Manifest.java from the resources...
     [exec] E:\Android App\sms\MyPrivateMessages\AndroidManifest.xml:26: ERROR Error: No resource found that matches the given name (at 'icon' with value '@drawable/icon').
     [exec] E:\Android App\sms\MyPrivateMessages\AndroidManifest.xml:26: ERROR Error: No resource found that matches the given name (at 'label' with value '@string/app_name').
     [exec] E:\Android App\sms\MyPrivateMessages\AndroidManifest.xml:28: ERROR Error: No resource found that matches the given name (at 'label' with value '@string/app_name').

BUILD FAILED
2 楼 fonter 2010-09-28  
sunburst 写道
注意:keep public class com.iwidsets.WidsetsActivity需改成你的主Activity

这里只用添加主Activity?其他的不用添加?那我引用的jar包是否需要添加?

看你需不需要啊。。。比如重要的代码不想让人知道,就混淆。包的话也是这样啊。。。。
1 楼 sunburst 2010-09-28  
注意:keep public class com.iwidsets.WidsetsActivity需改成你的主Activity

这里只用添加主Activity?其他的不用添加?那我引用的jar包是否需要添加?

相关推荐

    AS混淆实例项目

    5. 代码混淆级别:ProGuard提供了三种混淆级别:简单(shrink),中级(optimize)和高级(obfuscate)。在实际项目中,通常选择最高级别的混淆,即同时进行代码压缩、优化和混淆。 6. 测试混淆后的代码:在发布前...

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

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

    maven 代码混淆.zip

    在Java开发领域,尤其是涉及到Android应用开发时,代码混淆是一个重要的步骤,用于保护源代码的安全性和优化应用程序的体积。本文将深入探讨`maven`与`代码混淆`的相关知识点,帮助开发者理解如何在Maven项目中实现...

    Android安卓安全加固反调试检测手段(java层+native层)(附代码实现).pdf

    - **混淆(Obfuscate)**:使用无意义的名称对类、字段和方法进行重命名。 - **预检(Preverify)**:对处理后的代码进行预检,主要在Java平台上进行。 Proguard工具已经内置在Android Studio中,每当创建一个新...

    proguard6.2.0.zip

    因为Java代码是非常容易反编码的,况且Android开发的应用程序是用Java代码写的,为了很好的保护Java源代码,我们需要对编译好后的class文件进行混淆。 ProGuard是一个混淆代码的开源项目,它的主要作用是混淆代码,...

    FoodObfuscator:APK后处理混淆器

    gradle clean obfuscate安装具有包装结构 -/--AndroidAppRoot/--FoodObfuscator/将此行添加到顶级Android应用包装器gradle中的依赖项maven { url uri( " ../repo " )} 对于每个单独的android应用build.gradle 最小...

    proguard6.2.2_java_proguard6.2.2_

    ProGuard提供了多种混淆策略,例如“-obfuscate”选项,它会自动重命名类、方法和字段,使得原始代码难以理解。此外,用户还可以通过配置文件自定义混淆规则,确保关键类和方法不被混淆。 其次,代码优化是ProGuard...

    proguard6.2.2.rar

    3. **混淆(Obfuscate)**:混淆是 ProGuard 的关键特性,它将类、字段和方法的名字转换为简短的、无意义的名称,使得代码难以被反编译和理解,从而增加破解的难度。这对于保护商业逻辑和防止知识产权泄露至关重要。...

    andriod studio

    此外,还可以使用Lint检查代码潜在问题,以及使用Shrink, Obfuscate, and Optimize功能减小APK大小。 通过以上步骤,开发者可以在Android Studio中创建一个功能完善的“简单音乐播放器”。整个过程涉及了Android...

    proguard 文档

    - `-obfuscate`:启动混淆,`-dontobfuscate` 可禁用混淆。 混淆选项如 `-obfuscationdictionary`、`-overloadaggressively` 和 `-useuniqueclassmembernames` 可以进一步定制混淆规则,提高混淆效果。 总的来说,...

    unity Obfuscator Pro 3.3.zip

    It feature is to obfuscate built dotNet assemblies, like assembly-csharp and assembly-unityscript for Windows/Mac/Linux Standalone Games and embedded Systems like Android and IPhone. Beta: Xbox and ...

    proguard-with-maven-example:如何使用Apache Maven进行ProGuard

    在Android开发中,ProGuard是默认集成的,用于对APK进行混淆,以防止反编译。而在Java桌面应用或者服务器端应用中,尽管不那么常见,但依然可以使用ProGuard来优化和保护代码。 Apache **Maven** 是一个项目管理和...

    ObfuscatorProv3.3.zip

    It feature is to obfuscate built dotNet assemblies, like assembly-csharp and assembly-unityscript for Windows/Mac/Linux Standalone Games and embedded Systems like Android and IPhone. Beta: Xbox and ...

Global site tag (gtag.js) - Google Analytics