Android Studio配置debug下使用正式签名调试
2015-08-28 19:44
543 查看
今天在集成微信分享功能的时候,按照官方文档一步一步来写。这是向微信发送我们想要分享的内容,各类的方法大家去看文档,代码如下:
写到这里,可以说算是写完了。如果我们想知道我们是否发送成功,可以这样写。
好吧,代码写完了,万事大吉。可是测试微信直接拒绝,errcode_deny直接吐司show出来。这可把我郁闷了。这是为什么,继续检查一遍代码,确定没有问题,因此想到微信该死的应用签名,说实话,我还是挺喜欢这签名,毕竟对于应用的安全性有了很大的提高。我靠,突然发现,曾经的生成的签名文件xxx.jks已经丢了。好吧,我错了,重新生成一个更换应用签名提交审核。唉。。。等了几个小时。终于审核通过。我兴冲冲的在build.gradle文件中配了以下的代码配置,注意我这里的.jks文件拷贝了app的根目录下:
测试,失败,我的心也是拔凉拔凉的。风萧萧兮易水寒,壮士一去兮不复返。收拾旧河山,重新打个正式包。继续测试:
OK ,通过。
突然波澜不惊。因为觉得这都通不过,我应该卸甲归田了。我想的是我们平常都在debug模式下调试的,也就是我用的正式的应用签名,跟我调试用的debug签名是不一样的。那我岂不是每次调试我得去打包,显然这是不合理的。于是乎我这样写了:
好的,测试,debug模式下通过,好吧。基本完成微信分享功能,这是为什么呢? signingConfig signingConfigs.release相当于重新命名了apk,在debug下使用正式签名。是不是有点移花接木的味道啊。
总结:集成第三方的东西关键在于细心,过程不难,但是往往细节决定成败。
IWXAPI api = MyApplication.getInstance().getWxApi(); if (!api.isWXAppInstalled()) { ToastFactory.getToast(activity, "您还未安装微信客户端").show(); return; } WXWebpageObject webpage = new WXWebpageObject(); webpage.webpageUrl = notice.getUrl(); WXMediaMessage msg = new WXMediaMessage(webpage); msg.title = notice.getDesc(); msg.description = notice.getDesc(); Bitmap thumb = BitmapFactory.decodeResource(activity.getResources(), R.drawable.umeng_socialize_wechat); msg.setThumbImage(thumb); SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = String.valueOf(System.currentTimeMillis()); req.message = msg; req.scene = SendMessageToWX.Req.WXSceneSession; api.sendReq(req);
写到这里,可以说算是写完了。如果我们想知道我们是否发送成功,可以这样写。
public class WXEntryActivity extends Activity implements IWXAPIEventHandler { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_wxentry); IWXAPI iwxapi = HHcookApp.getInstance().getWxApi(); iwxapi.handleIntent(getIntent(),this); } @Override protected void onResume() { super.onResume(); finish(); } @Override public void onReq(BaseReq baseReq) { } @Override public void onResp(BaseResp resp) { String result = ""; switch (resp.errCode) { case BaseResp.ErrCode.ERR_OK: result = "errcode_success"; break; case BaseResp.ErrCode.ERR_USER_CANCEL: result = "errcode_cancel"; break; case BaseResp.ErrCode.ERR_AUTH_DENIED: result = "errcode_deny"; break; default: result = "errcode_unknown"; break; } ToastFactory.getToast(this,result).show(); } }
好吧,代码写完了,万事大吉。可是测试微信直接拒绝,errcode_deny直接吐司show出来。这可把我郁闷了。这是为什么,继续检查一遍代码,确定没有问题,因此想到微信该死的应用签名,说实话,我还是挺喜欢这签名,毕竟对于应用的安全性有了很大的提高。我靠,突然发现,曾经的生成的签名文件xxx.jks已经丢了。好吧,我错了,重新生成一个更换应用签名提交审核。唉。。。等了几个小时。终于审核通过。我兴冲冲的在build.gradle文件中配了以下的代码配置,注意我这里的.jks文件拷贝了app的根目录下:
signingConfigs { release { keyAlias 'xxx' keyPassword 'xxxx' storeFile file('./xxx.jks') storePassword 'xxx' } config { keyAlias 'xxx' keyPassword 'xxx' storeFile file('./xxx.jks') storePassword 'xxx' } }
测试,失败,我的心也是拔凉拔凉的。风萧萧兮易水寒,壮士一去兮不复返。收拾旧河山,重新打个正式包。继续测试:
OK ,通过。
突然波澜不惊。因为觉得这都通不过,我应该卸甲归田了。我想的是我们平常都在debug模式下调试的,也就是我用的正式的应用签名,跟我调试用的debug签名是不一样的。那我岂不是每次调试我得去打包,显然这是不合理的。于是乎我这样写了:
defaultConfig { applicationId "xxx.xxx.xxx" minSdkVersion 9 targetSdkVersion 23 versionCode 1 versionName "1.0" signingConfig signingConfigs.release } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' debuggable true signingConfig signingConfigs.release } debug { signingConfig signingConfigs.release } }
好的,测试,debug模式下通过,好吧。基本完成微信分享功能,这是为什么呢? signingConfig signingConfigs.release相当于重新命名了apk,在debug下使用正式签名。是不是有点移花接木的味道啊。
总结:集成第三方的东西关键在于细心,过程不难,但是往往细节决定成败。
相关文章推荐
- Android开发中ANR问题出现及解决
- 消息传递之:IOS NSNotificationCenter,Android EventBus;
- Android虚拟机无法正常工作几例及解决办法
- android移动开发环境搭建与配置
- Android-Activity的四状态、七生命周期、和四启动模式
- (七)android开发中两种方式监听短信的原理和实现
- Unexpected namespace prefix "xmlns" found for tag LinearLayout——android开发之xml布局文件
- Android核心服务解析篇(一)——下载Android源代码
- Android通过PHP连接MySQL数据库(插入)
- Attribute is missing the Android namespace prefix——android开发之xml布局文件
- Android应用程序用户界面(三)
- Android Studio 获取证书指纹SHA1
- Android GridView中设置了Button以后就不能响应OnItemClick()
- Android百度地图定位demo
- android ListView 左滑和IOS一样的效果
- 导入Github上Android studio 项目
- 来自官方的Android数据绑定(Data Binding)框架②
- android 友盟自动更新
- 在 Android studio 中 配置Gradle 做到 “根据命令行提示符生成指定versionCode, versionName,指定apk的打包输出路径”
- Android布局在android:gravity 和 android:layout_Gravity差别