1、右击工程->Run As->Android Application 方式build出来的apk不是混淆;
2、右击工程->Android Tools->Export unsigned Application Package方式build出来的apk是混淆的;
如何让方式一达到方式二的效果?

解决方案 »

  1.   

    目前eclipse的插件ADT不支持Release版本的Run As,而adt的build.xml是不支持build出debug版本的apk。
      

  2.   

    android 代码混淆
    1 proguard.cfg,这就是混淆所需的proguard脚本。
     
    其代码如下:
     
     
    view plain
    -optimizationpasses 5 
    -dontusemixedcaseclassnames 
    -dontskipnonpubliclibraryclasses 
    -dontpreverify 
    -verbose 
    -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 
    -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 com.android.vending.licensing.ILicensingService 
    -keepclasseswithmembernames class * { 
        native <methods>; 

    -keepclasseswithmembernames class * { 
        public <init>(android.content.Context, android.util.AttributeSet); 

    -keepclasseswithmembernames class * { 
        public <init>(android.content.Context, android.util.AttributeSet, int); 

    -keepclassmembers enum * { 
        public static **[] values(); 
        public static ** valueOf(java.lang.String); 

    -keep class * implements android.os.Parcelable { 
      public static final android.os.Parcelable$Creator *; 

     
     
    从脚本中可以看到,混淆中保留了继承自Activity、Service、Application、BroadcastReceiver、ContentProvider等基本组件。
    并保留了所有的Native变量名及类名,所有类中部分以设定了固定参数格式的构造函数,枚举等等。(详细信息请参考<proguard_path>/examples中的例子及注释。)
    2 在工程的"default.properties"中添加这样一句话“proguard.config=proguard.cfg”
     
     
    打包签名后的.apk就是混淆的,其实我们只要做一步就可以了就是在"default.properties"中添加这样一句话“proguard.config=proguard.cfg”就可以了。