美文网首页
开发环境和测试环境(配置网络请求相关地址)

开发环境和测试环境(配置网络请求相关地址)

作者: 追风z | 来源:发表于2020-10-07 16:56 被阅读0次

    我们这里项目用到的接口,就和大家访问Google一样,也有一个网址,同时在真实项目中,不同的环境,可能有不同的地址;目的是开发,和测试。我们这里只有一个,但我们会给大家演示如何配置两个。

    企业开发中通常都有三个环境,分别是dev,qa,prod分别代表开发环境,测试环境,正式环境;部分企业还有一个预上线环境。对于我们App来说他们最大的不同就是端点(endpoint)不同,所以我们这里要配置多个环境,配置有多种方法,可以使用注释,但这样容易出错;也可以将所有API,图片资源地址,一些配置Key放到一个常量类中。

    如何配置?

    可以使用Android Studio项目提供的productFlavors(产品风味)功能实现,该功能还可以实现渠道包。

    定义在哪里?
    在app/build.gradle的android方法中添加如下代码:

    android {  
    
         //默认配置
        defaultConfig {
            //应用唯一标志
            applicationId "com.ixuea.courses.mymusicold"
            minSdkVersion rootProject.ext.minSdkVersion
            targetSdkVersion rootProject.ext.targetSkVersion
            versionCode rootProject.ext.versionCode
            versionName rootProject.ext.versionName
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    
            //开启MultiDex
            //multiDexEnabled true
    
            //渠道相关   这个值versionCode是上面的对应的那个变量
            //通过这个渠道包,可以知道这个平台有多少人注册,那个平台多少人注册
            flavorDimensions "versionCode"
        }
        
        //配置不同的环境
        productFlavors{
            //开发环境
            dev {
                //API端点
                //注意:这里是可以单引号的(也可以双引号),而java语言是不能这样用的(java单引号只能一个字符)
                //'"http://api-courses-misuc.ixuea.com/"':单引号里面有个双引号,
                //包含双引号的才是他到的值,"http://api-courses-misuc.ixuea.com/"
                buildConfigField('String',"ENDPOINT",'"http://dev-my-cloud-music-api-rails.ixuea.com/"')
    
                dimension = minSdkVersion
            }
    
            //正式环境
            prod {
                //API端点
                //buildConfigField:方法  后面省略了括号
                buildConfigField 'String','ENDPOINT','"http://api-courses-misuc.ixuea.com/"'
                //minSdkVersion()  这里省略了(),原本是一个方法
                dimension = minSdkVersion
            }
        }
        
    }
    

    里定义了两个环境,一个是dev,一个是prod,真实项目中还可以添加更多的环境;在不同的环境中定义了API字段。

    如何使用?

    编译后字段会自动生成在BuildConfig类中。

    /**
     * 常量类
     */
    public class Constant {
    
        /**
         * 资源端点
         * 哪天不需要BuildConfig.ENDPOINT啦,直接更改Constant这个类就可以,这样就和BuildConfig没有关系
         * 替换更加容易
         */
        public static final String ENDPOINT = BuildConfig.ENDPOINT;
    
    

    对应的系统编译里面生成的代码

    public final class BuildConfig {
      public static final boolean DEBUG = Boolean.parseBoolean("true");
      public static final String APPLICATION_ID = "com.ixuea.courses.mymusic";
      public static final String BUILD_TYPE = "debug";
      public static final String FLAVOR = "dev";
      public static final int VERSION_CODE = 100;
      public static final String VERSION_NAME = "1.0.0";
      // Fields from product flavor: dev
      //编译后生成的字段
      public static final String ENDPOINT = "http://dev-my-cloud-music-api-rails.ixuea.com/";
    }
    

    切换环境

    在可视化Build Variants窗口中选择编译环境,命令下执行相应的任务就行了。


    在这里插入图片描述

    测试

    //测试productFlavors
    //获取ENDPOINT常量

    LogUtil.d(TAG, "initDatum:" + Constant.ENDPOINT);
    

    确保项目可以运行。

    相关文章

      网友评论

          本文标题:开发环境和测试环境(配置网络请求相关地址)

          本文链接:https://www.haomeiwen.com/subject/udrtuktx.html