Originally put together the Android project was confused with the published file. I suddenly thought, why not write blog, share. There are cases of this article.
Android code obfuscation and project announcement step record
First, clean up the debugging information in the code, such as log, System.out
Second, change the version number in the manifest file to the current version number, if you need to update the database, you need to change the program database version number 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 the 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
Suppose the project References library project. Then eclipse should actively produce android.library.reference.1 in the project.properties file itself. N=. /libraryprojectname
Eight, Suppose the project includes svntmp ( usually in the bin directory of the project ) . It should be removed in a timely manner , or it will cause packaging to fail.
Nine, the project packaging, installation test ( preferably using an existing build package for the upgrade Test )
Attached: Demo 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 today. For project protection purposes, the project package name has been replaced with com.wly.xxx, and readers can change it based on their own projects!
1. The blue content has the general nature, can copy the paste;
2. The orange content is used to specify the jar files in the program (the library project that can see the references 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 of Web JS local native call processes should not be confused between components.
Copyright notice: This article blog original article. Blogs, without consent, may not be reproduced.
Android code obfuscation and project announcement step recorder