【转】Android 工程在4.0基础上混淆
- Android现在对安全方面要求比较高了,我今天要做的对apk进行混淆,用所有的第三方工具都不能反编译,作者的知识产权得到保障了,是不是碉堡了。
一,首先说明我这是在4.0基础上进行的。先看看project.properties 这个文件。# This file is automatically generated by Android Tools.# Do not modify this file -- YOUR CHANGES WILL BE ERASED!## This file must be checked in Version Control Systems.## To customize properties used by the Ant build system edit# "ant.properties", and override values to adapt the script to your# project structure.## To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):# proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt# Project target.target=android-17#proguard.config=proguard.cfgproguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt先把proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 的注释去掉。其实混淆的难点就是项目引进了第三方包,如果没有引入第三方包,直接把上面的东西注释掉就可以混淆了,如果引入了第三方包就比较麻烦,请看下面。再把第三方包进行添加,注意,一般第三方jar已经混淆过了,所以不能再次混淆。下面是我把第三方jar包过滤掉的操作。一般方在最下面。这个文件proguard-project.txt# To enable ProGuard in your project, edit project.properties# to define the proguard.config property as described in that file.## Add project specific ProGuard rules here.# By default, the flags in this file are appended to flags specified# in ${sdk.dir}/tools/proguard/proguard-android.txt# You can edit the include path and order by changing the ProGuard# include property in project.properties.## For more details, see# http://developer.android.com/guide/developing/tools/proguard.html# Add any project specific keep options here:#-keep class packagename.** {*;}# If your project uses WebView with JS, uncomment the following# and specify the fully qualified class name to the JavaScript interface# class:#-keepclassmembers class fqcn.of.javascript.interface.for.webview {# public *;#}-keepclasseswithmembernames class * {native <methods>;}-keepclasseswithmembers class * {public <init>(android.content.Context, android.util.AttributeSet);}-keepclasseswithmembers class * {public <init>(android.content.Context, android.util.AttributeSet, int);}-keepclassmembers class * extends android.app.Activity {public void *(android.view.View);}-keepclassmembers enum * {public static **[] values();public static ** valueOf(java.lang.String);}-keep class * implements android.os.Parcelable {public static final android.os.Parcelable$Creator *;}-dontwarn com.umeng.**-dontwarn org.apache.commons.**-dontwarn com.tencent.weibo.sdk.**-keepattributes *Annotation*-keep class com.umeng*.** {*; }-keep public class [your_pkg].R$*{public static final int *;}-keep class com.tencent.open.TDialog$*-keep class com.tencent.open.TDialog$* {*;}-keep class com.tencent.open.PKDialog-keep class com.tencent.open.PKDialog {*;}-keep class com.tencent.open.PKDialog$*-keep class com.tencent.open.PKDialog$* {*;}-keep class com.tencent.mm.sdk.openapi.WXMediaMessage {*;}-keep class com.tencent.mm.sdk.openapi.** implements com.tencent.mm.sdk.openapi.WXMediaMessage$IMediaObject {*;}-libraryjars /libs/achartengine-1.1.0.jar-dontwarn achartengine.**-keep class achartengine.** { *;}-libraryjars /libs/android-support-v4.jar-dontwarn android.support.v4.**-keep class android.support.v4.** { *;}-libraryjars /libs/jpush-sdk-release1.4.0.jar-dontwarn jpush.sdk.release.**-keep class jpush.sdk.release.** { *;}-libraryjars /libs/umeng_sdk.jar-dontwarn umeng.sdk.**-keep class umeng.sdk.** { *;}-libraryjars /libs/umeng_social_sdk.jar-dontwarn umeng.social.sdk.**-keep class umeng.social.sdk.** { *;}-libraryjars /libs/universal-image-loader.jar-dontwarn universal.image.loader.**-keep class universal.image.loader.** { *;}-libraryjars /libs/ShareSDK-SinaWeibo-2.1.2.jar-dontwarn cn.sharesdk.sina.weibo.**-keep class cn.sharesdk.sina.weibo.** { *;}-libraryjars /libs/ShareSDK-TencentWeibo-2.1.2.jar-dontwarn cn.sharesdk.tencent.weibo.**-keep class cn.sharesdk.tencent.weibo.** { *;}-libraryjars /libs/ShareSDK-Wechat-Moments-2.1.2.jar-dontwarn cn.sharesdk.wechat.moments.**-keep class cn.sharesdk.wechat.moments.** { *;}这些对应上面的jar包,防止再次混淆。-braryjars libs/nineoldandroids-2.4.0.jar----指明lib包的在工程中的路径而-dontwarn com.xx.bbb.**和-keep class com.xx.bbb.** { ;}这两个参数用来保持第三方库中的类而不乱,将-dontwarn和-keep 结合使用,意思是保持com.xx.bbb.*这个包里面的所有类和所有方法而不混淆,接着还叫ProGuard不要警告找不到com.xx.bbb.**这个包里面的类的相关引用。-libraryjars ..\第三方库的工程名-dontwarn 包名.**-keep class 包名.** { *;}最后打包签名,成功。
【转】Android 工程在4.0基础上混淆的更多相关文章
- Android 工程在4.0基础上混淆
Android现在对安全方面要求比较高了,我今天要做的对apk进行混淆,用所有的第三方工具都不能反编译,作者的知识产权得到保障了,是不是碉堡了. 一,首先说明我这是在4.0基础上进行的. 先看看pro ...
- Unity3D 解决用Unity导出的Android工程在6.0及以上设备会弹出一串权限对话框的问题
解决用Unity导出的Android工程在6.0及以上设备会弹出一串权限对话框的问题 <meta-data android:name="unityplayer.SkipPermissi ...
- xarmain使用Forms编译android工程出现support_r19.0.1.zip支持包错误
第一次使用xarain下载Forms程序,提示一下错误. C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.t ...
- Android多画面幻灯片:ViewPager基础上,利用与PagerTabStrip出生缺陷(源代码)
近期使用ViewPager.读了几个人说是不是很清晰的信息,干脆自己写demo总结下. 样例非常easy.Activity里有三个界面能够滑动.每个界面都有一个button并设置好了监听.PagerT ...
- 我的Android进阶之旅】GitHub 上排名前 100 的 Android 开源库进行简单的介绍
GitHub Android Libraries Top 100 简介 本文转载于:https://github.com/Freelander/Android_Data/blob/master/And ...
- Android程序开发0基础教程(一)
程序猿学英语就上视觉英语网 Android程序开发0基础教程(一) 平台简单介绍 令人激动的Google手机操作系统平台-Android在2007年11月13日正式公布了,这是一个开放源码的操 ...
- ArcGIS Runtime for Android开发教程V2.0(4)基础篇---MapView
原文地址: ArcGIS Runtime for Android开发教程V2.0(4)基础篇---MapView - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http:/ ...
- ArcGIS Runtime for Android开发教程V2.0(3)基础篇---Hello World Map
原文地址: ArcGIS Runtime for Android开发教程V2.0(3)基础篇---Hello World Map - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NE ...
- 【Xamarin开发 Android 系列 6】 Android 结构基础(上)
原文:[Xamarin开发 Android 系列 6] Android 结构基础(上) 前面大家已经熟悉了什么是Android,而且在 [Xamarin开发 Android 系列 4] Android ...
随机推荐
- FZU2126:消除类游戏(DP)
Problem Description S近期在玩一种游戏. 这样的游戏的规则是一个一个地往一个栈里放有颜色的球,当栈顶连续k个球颜色同样时.这k个球立马同一时候消失. 如今S已经往栈里放了n个球,他 ...
- Bob大叔观OO原则
Bob大叔观OO原则 上篇总结了经典的23种 设计模式,详细的解读后期会陆续的详细揭开.使用设计模式的根本原因就是为了增强代码的复用性和可维护性.而面向对象是实现代码复用的有效途径,所以这里有必要了解 ...
- 2款不同样式的CSS3 Loading加载动画 附源码
原文:2款不同样式的CSS3 Loading加载动画 附源码 我们经常看到的Loading加载很多都是转圈圈的那种,今天我们来换一种有创意的CSS3 Loading加载动画,一种是声波形状的动画,另一 ...
- 错误 4 自定义工具错误: 无法生成服务引用“DepartMentService”的代码。请检查其他错
原文:错误 4 自定义工具错误: 无法生成服务引用"DepartMentService"的代码.请检查其他错 问题: 错误 4 自定义工具错误: 无法生成服务引用" ...
- ORA-07445: :一个意料之外的问题发生了 核心转储 [ldxsnf()+625] [SIGSEGV
ALERT登录错误消息: Mon Jan 20 15:03:22 2014 Incremental checkpoint up to RBA [0x442f.abd.0], current log t ...
- NYNU_省赛选拔题(8)
题目描述 一天萌萌哒孟孟学长去博物馆参观,他想看到更多的东西.博物馆可以表示为N × M细胞的一个矩形区域. “.”表示为路,“*”表示为墙壁,每个墙壁上面都挂有美丽的画卷.孟孟学长可以看到与他所在位 ...
- javascript系列之变量对象
原文:javascript系列之变量对象 引言 一般在编程的时候,我们会定义函数和变量来成功的构造我们的系统.但是解析器该如何找到这些数据(函数,变量)呢?当我们引用需要的对象时,又发生了什么了? 很 ...
- jQuery中的 return false, e.preventDefault(), e.stopPropagation()的区别
e.stopPropagation()阻止事件冒泡 <html><head> <title></title> <script sr ...
- 至尊快速,国产语言RPP 1.83强势来袭
以下是 R++的性能測试数据:(奔腾 1.86GHZ,測试 3 次取平均值) 执行效率: R++的内部结构和 C++大致同样,所以理论上 R++能够达到和 C++一样的执行速度,眼下 R++已开启汇编 ...
- linux通过key区别登陆的人
key区分登录用户 脚本放 /etc/profile.d,会默认登录的时候执行, 类似于 #!/bin/bash # filename: /etc/profile.d/set_log_file.sh ...