Android 检测该应用程序是否为Play Store中的测试版应用程序

Android 检测该应用程序是否为Play Store中的测试版应用程序,android,google-play,beta,Android,Google Play,Beta,我担心答案可能是“不可能的”,但我想知道是否有办法检测我上传到Play Store的apk是alpha/beta还是稳定频道 我想做到这一点,因为我有一个完整的菜单,导致测试功能,我想隐藏在稳定的渠道 这真的很有用,因为当我修复推送到商店的一般bug时,我不想每次都使用beta按钮或不使用beta按钮重新编译 很遗憾,我没有代码可供分享,但任何帮助或建议都将不胜感激 我觉得这个功能实际上有一个很好的用例。考虑下面的场景: 我在prod.API.example.com上有一个增加版本的API

我担心答案可能是“不可能的”,但我想知道是否有办法检测我上传到Play Store的apk是alpha/beta还是稳定频道

我想做到这一点,因为我有一个完整的菜单,导致测试功能,我想隐藏在稳定的渠道

这真的很有用,因为当我修复推送到商店的一般bug时,我不想每次都使用beta按钮或不使用beta按钮重新编译

很遗憾,我没有代码可供分享,但任何帮助或建议都将不胜感激


我觉得这个功能实际上有一个很好的用例。考虑下面的场景:

  • 我在prod.API.example.com上有一个增加版本的API
  • 我有一个独立增加版本的移动应用程序,但依赖于api
  • 在api开发人员添加或删除功能之前,他们会在不同的url上公开更改。说:beta.api.example.com
  • 我希望我的alpha或beta测试人员始终针对api的beta url工作,因为他们会发现破坏性的更改
  • 当新的api从beta版发布到prod版时,我想将我的Android应用从alpha版或beta版升级到prod版,而不增加我的移动应用版本号,如果一切正常,则需要重新构建

  • 这真的很简单,上传一个不同的APK。在您的测试版通道中,仅使用测试版功能维护不同的代码分支。重新编译不应该是一个大麻烦。您正在使用某种形式的源代码管理,对吗?

    Alpha/Beta刚刚发布,谷歌没有提到任何您想要的东西。
    如果这样的事情是可能的,那么它的位置很可能是。
    它不在那里

    可能的解决方法-

    如果您知道要从beta版转到生产版的日期,可以使用以下小技巧:将调试菜单的默认可见性设置为“已运行”,在该日期之前,将其设置为“在代码中可见”。

    我希望也有一种方法可以轻松做到这一点,但我还没有找到


    另一种选择是使用一个标志包装测试版功能,然后在将应用升级到生产版之前,使用Google Tag Manager关闭您只想在测试版上使用的功能。

    假设相同的apk通常从测试版升级到生产版,你的应用程序可以使用安卓系统读取谷歌Play store详细信息页面中你自己的应用程序id

    如果当前用户已注册Beta版,则应用程序名称将显示为“应用程序名称(Beta版)”,否则它将仅显示为“应用程序名称

    下面是如何实现此功能的示例Java代码:

    boolean isBeta=false;
    URL=新URL(“https://play.google.com/sore/apps/details?id=com.example.app");
    HttpURLConnection urlConnection=(HttpURLConnection)url.openConnection();
    试一试{
    InputStream in=new BufferedInputStream(urlConnection.getInputStream());
    扫描仪=新扫描仪(英寸);
    isBeta=(scanner.findWithinHorizon(\\s\\(Beta\\)”,650000)!=null);
    }最后{
    urlConnection.disconnect();
    }
    
    我只是想澄清一下-您希望单个APK在作为测试版部署或投入生产时具有不同的功能吗?@uval您完全理解我的需要。因此我认为您真正的意思是,如何检测当前用户是否激活了测试版频道。我同意这将是非常有用的,因为beta过程和开发控制台使自己能够持续地将相同的APK推送到生产中。因此,我们不想只为beta版构建单独的APK,但otoh我们有时需要beta版用户专有的功能,即使是在产品中,也可能是几个星期或几个月的beta版功能,甚至是像此调试菜单这样的永久性功能,这些功能在许多新的APK版本中仍然存在。我们可能希望了解新的Gradle构建系统,也它为这类事情提供了一些极好的支持。上传一个不同的APK是,是的,很简单,但如果你想“暗启动”一个功能,那么它对测试版用户来说是很长一段时间的独家。这也意味着,当你推广应用程序,然后重新发布测试版时,测试版用户会受到额外版本的冲击。这不是一个好的解决方案,因为它引入了将测试版推向生产的可能性。alpha/beta部署的想法是允许越来越多的用户访问您将发布的功能。可以将其视为众包QA。Google Play上的beta测试工作方式是将APK上传到其中一个测试通道(beta、alpha),然后将其推广到更公开的通道,直到它投入生产。我想知道您是否可以连接到G+API或Groups API,根据您的alpha/beta用户列表测试当前用户。据软件所知,beta版用户总是会得到应用程序的beta版。这似乎是可能的,但并不容易实现。OP用例意味着这些检查将永远对所有用户进行,甚至在测试结束后很长一段时间。如果您使用的是网络,您可能会发现在web服务器上使用json文件更容易,或者这段代码中的GCMFirst包含url“sore”->“store”中的键入错误。然后,如果您发送一个简单的Get请求,如下面的回答所示,那么您将从您的产品中收到通常页面的内容,而不包含任何测试文本等等。检查它,可以说这是错误的答案。