Android code obfuscation and project release steps record
Originally compiled a copy of the Android project to confuse and publish the document, suddenly think of why not write a blog, share it, if it has this article.
Android code obfuscation and project release steps record
First, clean up the debugging information in the code, such as log, System.out
Second, modify the version in the manifest file to the current version, if you need to update the database, you need to modify the program database version in the configuration class or configuration file.
Third, set the project's debugable to False in the manifest file
Iv. creating a signing certificate KeyStore file
V. Add a statement proguard.config=proguard-project.txt to the Project.properites file in the project to specify the obfuscation rule file
Vi. Configuration of Proguard-project.txt files
Vii. if the Project References library project, eclipse should automatically produce android.library.reference.1 in the Project.Properties file. N=. /libraryprojectname
Eight, If the project contains svntmp ( typically located under the project's bin folder ) , should be removed in time when packaging , failure to do so will cause packaging to fail.
Ix. Project Packaging, installation testing ( preferably using an existing build package for upgrade testing )
Attached: sample proguard-project.txt file and corresponding instructions:
# This was 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 no all optimizations performed by
# Proguard works on all versions of Dalvik. The following flags turn
# off various optimizations known to has issues, but the list could not
# is complete or up to date. (the "Arithmetic" optimization can be
# used if you is only targeting Android 2.0 or later.) Make sure
# Test thoroughly if you go the this route.
-optimizations!code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
-optimizationpasses 5
-allowaccessmodification
-dontpreverify
#-dontoptimize
# The remainder of this file are identical to the non-optimized version
# of the Proguard configuration file (except that the other file have
# 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 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 is 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 is 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 *;
}
File Description:
0. The above documents are copied from the project I have developed now, for the purpose of project protection, the project package name has been replaced com.wly.xxx, readers can be modified according to their own projects!
1. The blue content has the general nature, may copy the paste;
2. The orange content is used to specify the jar files in the program (you can see that the referenced library project does not need to be included because they are already specified in the Project.Properties file).
3. The red content is used to represent the contents of the jar package that is reserved (not confused) for reference.
4. Green Grass content is used to indicate that the entity class under the Bean file reserved locally is not confused.
5. Purple content is used to indicate that classes that retain local reflection are not confused.
6. Green content for special handling the call process between Web JS and native native components is not confused