首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android中使用App应用程序的定制版本

在Android中使用App应用程序的定制版本
EN

Stack Overflow用户
提问于 2014-12-14 23:44:17
回答 1查看 510关注 0票数 3

我试图在Android应用程序中使用非默认的app应用程序版本。默认的app应用程序版本是1,我已经上传了一个新的版本2,并希望使用Android应用程序来测试它。

app实例的默认根路径如下:

代码语言:javascript
复制
xxx.appspot.com

这两个实例都可以使用以下方法访问(或应该是):

代码语言:javascript
复制
https://1.xxx.appspot.com    // version 1
https://2.xxx.appspot.com    // version 2

第一个问题是通过浏览器进行测试。在Chrome中,您不能测试它,因为错误消息Your connection is not private。看起来像*.appspot.com的证书颁发

代码语言:javascript
复制
NET::ERR_CERT_COMMON_NAME_INVALID

您可以使用Firefox解决这个问题,并将给定的站点作为可信站点添加。因此,假设第二个版本是通过浏览器测试的,那么就需要使用Android应用程序来测试它了。

我更改了端点根URL,将新URL传递给构建器:

代码语言:javascript
复制
builder.setRootUrl(https://2.xxx.appspot.com);

但以下几个方面都没有做到:

代码语言:javascript
复制
java.io.IOException: Hostname '2.xxx.appspot.com' was not verified
     at com.android.okhttp.Connection.upgradeToTls(Connection.java:1026)
     at com.android.okhttp.Connection.connect(Connection.java:963)
     at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:405)

快速搜索,就会有一个快速而肮脏的解决方案(我不会在生产中使用这个,甚至不会测试这个应用程序)。当然,应该执行主机名检查,例如使用默认验证器,如果默认值使用我的后备验证器返回false ):

代码语言:javascript
复制
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
    @Override
    public boolean verify(String hostname, SSLSession session) {
        return true;
    }
});

最后的结果是:

代码语言:javascript
复制
com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 Not Found
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(ProGuard:113)
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.set(ProGuard:40)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(ProGuard:312)

无论我使用哪个版本,它都以404结尾。唯一有效的网址是https://xxx.appspot.com,我确信我试图调用的方法存在于端点上,因为我可以使用火狐调用它。

对于如何用Android应用测试新的app应用版本,有什么建议吗?证书验证失败是一个错误,还是*.appspot.com只匹配xxx.appspot.com但不匹配x.xxx.appspot.com的正确行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-15 07:29:44

显然,解决方案是在文档中找到的:

请注意,2013年4月,谷歌停止为托管在appspot.com (即..appspot.com)的双通配符域颁发SSL证书。如果您依赖这样的URL来访问您的应用程序,请将任何应用程序逻辑更改为使用"-dot-“而不是”“。例如,要访问应用程序"myapp“的版本"1”,请使用"https://1-dot-myapp.appspot.com“而不是”https://1.myapp.appspot.com“。如果您继续使用"https://1.myapp.appspot.com“,则证书将不匹配,这将导致期望URL和证书完全匹配的任何用户代理都会出现错误。

简而言之,我不得不用2.替换2-dot-

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27475447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档