如何使用Retrofit构建两个build android变体以获取两个不同的URL?

时间:2019-06-07 03:14:37

标签: java android retrofit retrofit2 build-variant

我正在开发一个Android应用程序,以为共享同一数据源的两个不同的构建变体获取两个不同的Rest API。我将产品风味用于构建变体。但是我不知道如何配置Retrofit部分以针对不同的构建变体选择不同的API。

预先感谢

2 个答案:

答案 0 :(得分:1)

您可以创建一个BuildConfig Field,根据您的产品口味向API客户端提供不同的 REST API URL

打开您的 build.gradle (应用级别)文件,并将以下几行添加到您的 android块

display:flex

现在重建项目,然后您可以访问项目中的 if (event.message.text.match(/authorize/g)) { var client_id = 'OCauEBdxUEXXXXXXXXXXXXXDnwPoKwGgESB'; var client_secret = '8zsIv2wflcITDGXqgD7YKzTYfXXXXXXXXXXXXTGNL56BkDSh5licnUxufK6fU6FmZuhEsjVVUEjXsoFFly37zdptRogmRFCMLaCLMkYW2xvGhaOk5M3InE'; var auth_url = "https://fce3c477.ngrok.io/oauth/chat-bot/"; var redirect_uri = event.configCompleteRedirectUrl; var url = auth_url +'?redirect_uri='+redirect_uri; url = url + '&client_id=' + client_id console.log(event.message); console.log(event.configCompleteRedirectUrl); return { "actionResponse": { "type": "REQUEST_CONFIG", "url": url, } }; } ,具体取决于您选择的产品风格。

答案 1 :(得分:0)

对于调试版本,您可以使用

        // setting up retrofit
        .baseUrl(if (BuildConfig.DEBUG) {
            "https://debug.server"
        } else {
            "https://release.server"

        })

想要品尝,可以尝试

        // setting up retrofit
        .baseUrl(if (BuildConfig.FLAVOR == "test") {
            "https://debug.server"
        } else if(BuildConfig.FLAVOR == "staging"){
            "https://staging.server"
        } else {
            "https://release.server"
        })

This question describes how to define flavors