设为首页 加入收藏

TOP

基于微信api Android程序签名+代码混淆
2014-11-24 07:34:55 来源: 作者: 【 】 浏览:0
Tags:基于 api Android 程序 签名 代码 混淆

微信开放平台真是独特啊!!!


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


第一步:


第二步:


在程序中调用微信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签名字符串,修改第一步中的第一步的应用签名栏,保存。 可能需要稍微等一段时间,微信服务器有时反应迟钝 大功告成!!!


第六步:


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


支持原创~


转发请附加链接,谢谢!


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android4.2中全屏或者取消标题栏 下一篇Android微信SDK API 调用教程

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)