zoukankan      html  css  js  c++  java
  • Android代码混淆和项目宣布步骤记录器

    原本放在一起Android项目与发布的文件相混淆。我突然想到,为什么不写博客,分享。有这篇文章的情况下,。

    Android代码混淆及项目公布步骤记录

    一、清理代码中的调试信息,如Log、System.out

    二、在清单文件里改动版本号为当前版本号,假设须要更新数据库,则须要在配置类或配置文件里改动程序数据库版本号。

    三、在清单文件里将项目的debugable设置为false

    四、创建签名证书keystore文件

    五、在项目中的project.properites文件里加入语句proguard.config=proguard-project.txt来指定混淆规则文件

    六、配置proguard-project.txt文件

    七、假设项目引用了Library Project。则Eclipse应该会在project.properties文件里自己主动生产android.library.reference.1..n=../LibraryProjectName

    八、假设项目中包括svntmp(通常位于项目的bin目录下)。在打包时应及时删除,否则会导致打包失败。

    九、项目打包,安装測试(最好是使用现有生成包进行升级測试)

     

    附:演示样例proguard-project.txt文件及对应说明:

    # This is a configuration file for ProGuard.

    # http://proguard.sourceforge.net/index.html#manual/usage.html

     

    # Optimizations: If you don't want to optimize, use the

    # proguard-android.txt configuration file instead of this one, which

    # turns off the optimization flags. Adding optimization introduces

    # certain risks, since for example not all optimizations performed by

    # ProGuard works on all versions of Dalvik. The following flags turn

    # off various optimizations known to have issues, but the list may not

    # be complete or up to date. (The "arithmetic" optimization can be

    # used if you are only targeting Android 2.0 or later.) Make sure you

    # test thoroughly if you go this route.

    -optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*

    -optimizationpasses 5

    -allowaccessmodification

    -dontpreverify

    #-dontoptimize

     

    # The remainder of this file is identical to the non-optimized version

    # of the Proguard configuration file (except that the other file has

    # flags to turn off optimization).

    -dontusemixedcaseclassnames

    -dontskipnonpubliclibraryclasses

    -keepattributes Signature

    -verbose

     

    -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

     

    -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$* {

        *;

    }

    # 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.

     

    -keep class * extends android.view.View{*;}

    -keep class * extends android.app.Dialog{*;}

    -keep class * implements java.io.Serializable{*;}

     

    #-ignorewarnings

    -libraryjars libs/locSDK_4.1.jar

    -libraryjars libs/pinyin4j-2.5.0.jar

    -libraryjars libs/libammsdk.jar

    -libraryjars libs/WebtrendsAndroidClientLib.jar

    #-libraryjars libs/afinallib.jar

    #-libraryjars libs/stickylistheaders_lib.jar

     

    -keep class android.support.v4.** {*;}

    -keep class com.emilsjolander.** {*;}

    -keep class org.kobjects.** {*;}

    -keep class org.kxml2.** {*;}

    -keep class org.xmlpull.** {*;}

    -keep class net.tsz.** {*;}

    -keep class com.hp.** {*;}

    -keep class com.baidu.** {*;}

    -keep class net.sourceforget.** {*;}

    -keep class com.tencent.** {*;}

    -dontwarn demo.**

    -keep class demo {*;}

     

    -keep class com.wly.xxx.bean.** {*;}

     

    -keep class com.wly.xxx.tool.DbModelUtils{*;}

    -keep class com.wly.xxx.tool.JsonUtils{*;}

     

    -keep class com.wly.xxx.activity.InsuranceQuotesActivity

    -keep public class com.wly.xxx.activity.InsuranceQuotesActivity$MyJavaScriptInterface

    -keep public class * implements com.wly.xxx.activity.InsuranceQuotesActivity$MyJavaScriptInterface

    -keepclassmembers class com.wly.xxx.activity.InsuranceQuotesActivity$MyJavaScriptInterface {

        public *;

           private *;

    }

     

    文件说明:

    0.以上文件拷贝自笔者如今开发的项目。出于项目保护的目的,已将project包名替换com.wly.xxx,读者能够依据自己的项目加以改动!

    1.蓝色内容具有通用性质,能够复制黏贴;

    2.橙色内容用于指定程序中用到的jar文件(能够看到引用的Library Project不需包括,由于他们已经在project.properties文件里指定了)。

    3.红色内容用于表示保留(不混淆)引用的jar包中的内容。

    4.草绿色内容用于表示保留本地的bean文件下的实体类不被混淆。

    5.紫色内容用于表示保留本地涉及反射的类不被混淆。

    6.绿色内容用于特别处理Web JS当地土著调用进程不应被组件之间的混淆。

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序实现继承
    [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序处理并发
    [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序使用异步及存储过程
    [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序更新相关数据
    [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序读取相关数据
    [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序创建更复杂的数据模型
    [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的Code First迁移和部署
    [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的连接恢复和命令拦截
    centos常用命令集
    .NET Best Practices
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4710048.html
Copyright © 2011-2022 走看看