您的位置:首页 > 移动开发 > 微信开发

基于微信api Android程序签名+代码混淆

2014-08-15 14:20 567 查看
微信开放平台真是独特啊!!!

微信的ap调用确实别新浪微博,人人,QQ互联这些方便很多,也不用判断绑定什么的,让人眼前一亮。但是到代码混淆这一步,我真瞎了,网上关于微信签名混淆资料讲的让人摸不着头脑,捣鼓了很久终于弄明白了。

第一步:

申请APP_ID,然后还需要填那个“应用类型” ---下载地址地址无关紧要;重点是应用签名,接下来会讲,先空着;包名,顾名思义就算你的Android应用的包名

第二步:

在程序中调用微信api,具体步骤,微信开放平台的android上手指南讲的很清楚。

第三步:

调试api,为了方便我们可以先用微信提供的demo。重点:1、找到demo根目录下的debug.keystore文件  2、选择Eclipse顶部菜单Window->Preferences,选择Android目录下的Build    3、指定Custom debugkeystore选项的路径为sdk demo工程目录中的debug.keystore文件  确定OK  (第一步保证了微信的SDK demo可以正常使用了)

第四步:

选择自己的程序,右键运行到手机,然后http://open.weixin.qq.com/download/sdk/gen_signature.apk

下载签名应用,在手机中运行,根据提示输入程序的包名获得一个apk签名字符串,最后将这个字符串填到第一步的应用签名栏处。保存OK  可以正常调试应用了  (这一步微信的SDK Demo都已经处理好的,所以我们自己应用需要单独处理)

第五步:

调试结束后,我们该签名打包了,顺便把代码混淆也做了。代码混淆配置步骤网上一搜就有。按照SDK说明在proguard.cfg中添加

-keep class com.tencent.mm.sdk.openapi.WXMediaMessage {*; }

-keep class com.tencent.mm.sdk.openapi.** implements com.tencent.mm.sdk.openapi.WXMediaMessage$IMediaObject {*; }

附上我的  proguard.cfg内容:

-optimizationpasses 2

-dontusemixedcaseclassnames

-dontskipnonpubliclibraryclasses

-dontpreverify

-ignorewarnings

-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 * extends android.app.backup.BackupAgentHelper

-keep public class * extends android.preference.Preference

-keep public class com.android.vending.licensing.ILicensingService

-keepclasseswithmembers class * {

    native ;

}

-keepclasseswithmembers class * {

    public (android.content.Context, android.util.AttributeSet);

}

-keepclasseswithmembers class * {

    public (android.content.Context, android.util.AttributeSet, int);

}

-keepclassmembers enum * {

    public static **[] values();

    public static ** valueOf(java.lang.String);

}

-keepclassmembers class * extends android.app.Activity {

  public void *(android.view.View); 

}

-keep class * implements android.os.Parcelable {

  public static final android.os.Parcelable$Creator *;

}

-keepclassmembers class **.R$* {

    *;

}

-keepclassmembers class * {

  public (org.json.JSONObject);

}

-keep public class com.android.mydemo.R$*{

    public static final int *;

}

-keepclassmembers class * implements java.io.Serializable {

    static final long serialVersionUID;

    private static final java.io.ObjectStreamField[] serialPersistentFields;

    private void writeObject(java.io.ObjectOutputStream);

    private void readObject(java.io.ObjectInputStream);

    java.lang.Object writeReplace();

    java.lang.Object readResolve();

}

-keep class android.net.http.** {*; }

-keep class android.webkit.** {*; }

-keep class com.weibo.net.** {*; }

-keep class com.tencent.mm.sdk.openapi.WXMediaMessage {*; }

-keep class com.tencent.mm.sdk.openapi.** implements com.tencent.mm.sdk.openapi.WXMediaMessage$IMediaObject {*; }

最后选择程序,右键--->android tools --->签名发布,按步骤生成一个签名keystore和一个经过签名的apk,安装该APK到手机,再重复第四步(包名改变),获得一个apk签名字符串,修改第一步中的第一步的应用签名栏,保存。  可能需要稍微等一段时间,微信服务器有时反应迟钝  大功告成!!!

第六步:

微信的签名验证真令人蛋疼,一起鄙视一下!

支持原创~

转发请附加链接,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android