- 浏览: 96693 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
sincerehui:
android二维码的编码与解码(图片解码与摄像头解码) -
nyh1006:
学习一下!
UIScrollView循环滚动 -
bravewly:
为啥扫不出结果呢?是我扫的方式不对么?
android二维码的编码与解码(图片解码与摄像头解码) -
messigoogle:
我说您这个也是跟eoe上的差不多吧,加载的Assert中的图片 ...
android瀑布流 -
gundumw100:
LazyScrollView是偶写的。欢迎使用。呵呵。http ...
android瀑布流
1. 基本配置
eclipse 下建立 android 工程,就会生成 proguard.cfg 和 project.properties,在后面的文件追加 proguard.config=proguard.cfg 即可让前面的配置文件在 export 时生效。默认的那个文件有一些内容,这里给一个更通用点的。
##—————Begin: proguard configuration common for all Android apps ———-
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keepattributes *Annotation*
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
# 以下两个命令配合让类的路径给删除了
-allowaccessmodification
-repackageclasses ”
# 记录生成的日志数据,在 proguard 目录下
-dump class_files.txt
-printseeds seeds.txt
-printusage unused.txt
-printmapping mapping.txt
# 异常都可以忽略就打开
#-dontwarn
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-dontnote com.android.vending.licensing.ILicensingService
-keepnames class * implements java.io.Serializable
# Explicitly preserve all serialization members. The Serializable interface
# is only a marker interface, so it wouldn’t save them.
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject (java.io.ObjectOutputStream);
private void readObject (java.io.ObjectInputStream);
java.lang.Object writeReplace ();
java.lang.Object readResolve ();
}
# Preserve all native method names and the names of their classes.
-keepclasseswithmembernames class * {
native ;
}
-keepclasseswithmembernames class * {
public (android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembernames class * {
public (android.content.Context, android.util.AttributeSet, int);
}
# Preserve static fields of inner classes of R classes that might be accessed
# through introspection.
-keepclassmembers class **.R$* {
public static ;
}
# Preserve the special static methods that are required in all enumeration classes.
-keepclassmembers enum * {
public static **[] values ();
public static ** valueOf (java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
# 如果你的工程是对外提供方法调用就打开
#-keep public class * {
# public protected *;
#}
##—————End: proguard configuration common for all Android apps ———-
2. 解决 export 打包的报错
这个时候 export 提示“conversion to Dalvik format failed with error 1”错误,网上说法有好多种,最后我还是把 proguard 从4.4升级到4.8就解决了。官方地址是 http://proguard.sourceforge.net。上面的配置文件参数可以在这里查阅。
升级办法很简单,就是把 android sdk 目录下的 tool/proguard 目录覆盖一下即可。
3. 打包出来的程序如何调试
一旦打包出来,就不能用 eclipse 的 logcat 去看了,这里可以用 android sdk 中 ddms.bat 的 tool 来看,一用就发现和 logcat 其实还是一个东西,就是多了个设备的选择。
4. 使用 gson 需要的配置
当 Gson 用到了泛型就会有报错,这个真给郁闷了半天,提示“Missing type parameter”。最后找到一个资料给了一个解决办法,参考:http://stackoverflow.com/questions /8129040/proguard-missing-type-parameter。
另外我又用到了 JsonObject,提交的 Object 里面的 members 居然被改成了a。所以上面给的东西还不够,还要加上
# 用到自己拼接的 JsonObject
-keep class com.google.gson.JsonObject { *; }
我个人建议减少这些依赖包混淆带来的麻烦,干脆都全部保留不混淆。例如
-keep class com.badlogic.** { *; }
-keep class * implements com.badlogic.gdx.utils.Json*
-keep class com.google.** { *; }
5. 使用 libgdx 需要的配置
参考 http://code.google.com/p/libgdx-users/wiki/Ant
6. 验证打包效果
我是利用了 apktool 的反编译工具,把打包文件又解压了看了一下,如果包路径、类名、变量名、方法名这些变化和你期望一致,那就 OK 了。命令:
apktool.bat d xxx.apk destdir
总结
这个东西用起来也不是很简单,特别是你程序用到的高级特性多,就更容易出问题。另外 proguard 的参数看起来确实也有点不好理解,打包过程慢,测试也比较浪费时间。东西虽好,但真不是那么容易上手。
发表评论
-
实现ScrollView的嵌套
2012-12-27 10:39 2162今天忽然需要写两个ScrollView嵌套,如: &l ... -
Android4.0新的SDK新特性 (汉化)
2012-10-31 15:40 1352Android 4.0 是一次重要的平台发布版,为用户和 ... -
Fragments (Android官方文档中文版)
2012-10-30 15:44 916原作者为: 苍山。感谢他分享的内容 概述 ... -
仿iphone实现两个view切换翻转动画
2012-10-26 14:59 2375看那些iPhone的view的切换效果非常帅,今天研究了一下从 ... -
android瀑布流
2012-10-26 10:54 2488今天研究了一下瀑布流,来说一下我实现它的方法。 看一下 ... -
android二维码的编码与解码(图片解码与摄像头解码)
2012-10-24 17:43 3801今天上网找了找可以从图片解析二维码 ,而不是从摄像头,找了半天 ... -
Android 连接WIF获取的信息剖析
2012-10-10 13:48 1128Android的参数大致分成两块:系统服务参数和平台系统 ... -
android使用字体库更改字体
2012-07-27 15:34 1395TextView tv = (TextView) thi ... -
给Android的音量按钮添加监听事件
2012-07-09 17:02 1370@Override public boolean onK ... -
去掉listview背景变黑和顶底部边缘模糊
2012-06-29 17:24 1183listview在滚动是背景变黑:android:cacheC ... -
Android 在OnCreate()中获取控件高度与宽度
2012-06-20 17:01 2923试过在OnCreate()中获取控件高度与宽度的童鞋都知道,g ... -
android EditText插入字符串到光标所在位置
2012-03-07 14:01 2190EditText mEditText = (EditText) ... -
android tabactivity view切换edittext不弹出软键盘的解决方案
2011-12-21 12:03 2138public void onFocusChange(View ... -
更改CheckBox的样式
2011-12-13 08:43 2393首先在styles.xml添加如下的自定义样式: <s ... -
Android中RatingBar的自定义效果
2011-11-16 10:14 1532有时候android系统提供给我们的ratingbar效果 ... -
TabHost点击按钮布局改变
2011-11-15 09:48 1064main.xml <?xml version=&quo ... -
android获得控件在屏幕中的绝对坐标
2011-11-10 12:56 2614int[] location = new int[2] ; ... -
手势识别
2011-11-10 09:29 886[功能] 何为手势识别? 比如:你在屏幕上从左至右划出的一个动 ... -
Android px和dip以及sp的区别及转换代码
2011-11-09 16:11 1633/** * 根据手机的分辨率从 dp 的单位 转成为 px ... -
android获取屏幕长宽,status bar高度,设置全屏显示
2011-11-09 16:08 1617//获取屏幕长宽 WindowManager wm = ...
相关推荐
本文将深入探讨Android代码混淆的前因后果、原理以及如何实施。 首先,我们来理解什么是代码混淆。代码混淆是将源代码转换成一种难以理解和阅读的形式,通常通过重命名变量、方法和类名,以及压缩和优化代码结构来...
本文将详细探讨Android代码混淆的原理及其实践方法。 #### 二、代码混淆的目的 1. **保护知识产权**:通过混淆处理后的代码很难被逆向工程,这有助于保护开发者的核心算法和逻辑不被盗用。 2. **减小APK大小**:...
总的来说,Android代码混淆是提高应用安全性的重要步骤,开发者应熟练掌握混淆的原理和实践,以便有效保护代码不受恶意攻击。正确地编写和配置混淆规则,既能保证应用的正常运行,又能有效防止源代码被轻易解读。
因此,了解并掌握Android的反编译和代码混淆技术对于保护应用的知识产权和用户数据至关重要。 **一、Android反编译** 1. ** Dex2Jar 和 JD-GUI**: Dex2Jar是一个将.dex文件转换为.jar文件的工具,而JD-GUI则是一个...
在这个“代码混淆实践demo”中,我们重点关注的是Swift编程语言在iOS开发中的应用,以及如何进行方法混淆。 Swift是苹果公司推出的一种现代化、类型安全的编程语言,用于开发iOS、macOS、watchOS和tvOS应用程序。它...
本文将深入探讨两种防止Android应用被反编译的策略:代码混淆和使用安全工具。 首先,我们来了解一下什么是代码混淆。代码混淆是一种通过改变代码的可读性来增加其复杂性的技术,主要是通过对变量名、函数名和类名...
总的来说,代码混淆是Android应用开发中必不可少的安全实践,通过合理配置和使用混淆工具,可以有效地保护应用的知识产权,防止代码被恶意利用。同时,了解并熟悉反编译工具,有助于开发者更好地调试和理解他人的...
### Android Java代码混淆工具:ProGuard的深度解析与实践 #### 概述 在软件开发领域,代码混淆是一项重要的安全措施,特别是在移动应用开发中,它能够保护源代码不被轻易逆向工程,从而增强应用的安全性。在...
Android应用的Smali代码混淆是保护移动应用安全的重要技术手段,尤其在面对日益增多的恶意攻击时显得至关重要。本文主要探讨了一种针对Smali代码的混淆策略,旨在增强Android应用的安全性,防止恶意篡改。 首先,...
Android APK和导出JAR包的代码混淆,自己实践的结果 ,很详细
ProGuard是Android官方提供的一个强大的代码混淆、优化和压缩工具,它能够将Java字节码转换为难以理解的形式,同时保留必要的功能,确保应用运行正常。 在"Android-混淆分享"中,我们可以期待学习到以下几点核心...
ProGuard是Android和Java平台上的一个强大的开源工具,它能实现代码混淆、优化、压缩以及预校验等功能。本文将深入探讨ProGuard的工作原理、配置与应用。 ### 1. ProGuard概述 ProGuard是一款免费的Java字节码混淆...
在Android开发过程中,为了保护应用源代码的安全,开发者通常会使用代码混淆技术。混淆可以将原始的、可读性强的类名、方法名和变量名转换为无意义的短名称,使得逆向工程变得困难。Android Studio作为Android开发的...
《Android代码大全7》是针对Android开发的一份综合资源,涵盖了...通过《Android代码大全7》,开发者可以系统学习和实践Android开发的各个方面,不断提升自己的技术水平,构建高效、稳定、用户体验良好的Android应用。
代码混淆是软件开发中的一个重要环节,尤其是在Java和Android应用开发中,为了保护源代码的安全性、减少反编译的风险,开发者通常会使用ProGuard工具对代码进行混淆。ProGuard是一款免费的Java字节码混淆器、优化器...
开发者需要理解混淆的基本原理,熟练掌握ProGuard的使用,并结合最佳实践,以确保应用的代码混淆效果和稳定性。同时,随着技术的发展,开发者也需要持续关注新的混淆技术和反逆向工程策略,以应对不断升级的安全挑战...
**ProGuardGUI:Java代码混淆的艺术** 在Java开发领域,代码安全是不可或缺的一环,特别是在发布应用程序时。为了保护源代码不被轻易反编译和理解,开发者常常采用代码混淆技术,而`ProGuardGUI`就是一款强大的Java...
总之,代码混淆是Android应用程序安全措施的重要一环,通过合理设置混淆规则,可以有效降低源代码被反编译的风险。同时,开发者还应结合其他安全实践,如代码签名、权限管理以及服务器端验证,以全面保护应用程序的...
总之,"Android so加固混淆源码"为Android开发者提供了一个学习和实践SO库安全保护的起点。通过学习这些资料,开发者不仅能理解混淆技术的基本原理,还能掌握如何在自己的项目中实施混淆,从而提升应用程序的安全性...
在Android应用开发中,安全性和性能优化是至关重要的环节,其中混淆(Proguard)就是一种常用的优化手段。本文将深入探讨“android2.3 ...同时,注意混淆也会带来一定的学习成本,需要不断实践和调试,才能掌握其精髓。