微信開放平台真是獨特啊!!!
微信的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相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11