当前位置: 代码迷 >> Android >> Android Studio配置debug下使用正式签字调试
  详细解决方案

Android Studio配置debug下使用正式签字调试

热度:36   发布时间:2016-04-27 23:14:15.0
Android Studio配置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下使用正式签名。是不是有点移花接木的味道啊。

总结:集成第三方的东西关键在于细心,过程不难,但是往往细节决定成败。

版权声明:本文为博主原创文章,未经博主允许不得转载。

  相关解决方案