如何混淆加密源码

Q:android2.3以上版本如何保护源码?

  • eclipse新建2.3版本以上的项目时,工程已经没有了default.properties文件,已被Google合并成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此处为你新建项目时配置的target

    • 如何让project.properties起作用,将# proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt前面的#号去掉,${sdk.dir}就是sdk配置的目录,请注意proguard-android.txt文件里面的内容,如下所示:
    • # This is a configuration file for ProGuard.
      # http://proguard.sourceforge.net/index.html#manual/usage.html
      
      -dontusemixedcaseclassnames
      -dontskipnonpubliclibraryclasses
      -verbose
      
      # Optimization is turned off by default. Dex does not like code run
      # through the ProGuard optimize and preverify steps (and performs some
      # of these optimizations on its own).
      -dontoptimize
      -dontpreverify
      # Note that if you want to enable optimization, you cannot just
      # include optimization flags in your own project configuration file;
      # instead you will need to point to the
      # "proguard-android-optimize.txt" file instead of this one from your
      # project.properties file.
      
      -keepattributes *Annotation*
      -keep public class com.google.vending.licensing.ILicensingService
      -keep public class com.android.vending.licensing.ILicensingService
      
      # For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
      -keepclasseswithmembernames class * {
          native <methods>;
      }
      
      # keep setters in Views so that animations can still work.
      # see http://proguard.sourceforge.net/manual/examples.html#beans
      -keepclassmembers public class * extends android.view.View {
         void set*(***);
         *** get*();
      }
      
      # We want to keep methods in Activity that could be used in the XML attribute onClick
      -keepclassmembers class * extends android.app.Activity {
         public void *(android.view.View);
      }
      
      # For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
      -keepclassmembers enum * {
          public static **[] values();
          public static ** valueOf(java.lang.String);
      }
      
      -keep class * implements android.os.Parcelable {
        public static final android.os.Parcelable$Creator *;
      }
      
      -keepclassmembers class **.R$* {
          public static <fields>;
      }
      
      # The support library contains references to newer platform versions.
      # Don't warn about those in case this app is linking against an older
      # platform version.  We know about them, and they are safe.
      -dontwarn android.support.**
    •     我们从脚本中可以看出,默认的情况下,混淆默认情况是保留com.google.vending.licensing.ILicensingService、com.android.vending.licensing.ILicensingService、View、Activityandroid.os.Parcelable等等
    • 在项目开发中,会引用第三方架包,此时利用android tools导出项目时,会出现一系列的错误。这里就ksoap2-android-assembly-3.0.0-RC.1-jar-with-dependencies.jar为例子,在上述文件末端加上如下脚本:(为什么要加这些脚本,就是混淆时保留这些类,以免出现其他架包的引用问题)
    • -dontwarn org.kobjects.**
          -dontwarn org.ksoap2.**
          -dontwarn org.kxml2.**
          -dontwarn org.xmlpull.**
    • 最后按照步骤导出apk,大功告成。

        看看效果

    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 1
      评论
    评论 1
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值