V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
HEROLiX
V2EX  ›  Android

APP 开发怎么去管理正式地址和测试地址?

  •  
  •   HEROLiX · 2017-04-12 12:05:57 +08:00 · 9943 次点击
    这是一个创建于 2774 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如何将正式地址隐藏,只开放开发地址, Android Studio 开发
    25 条回复    2017-04-16 21:24:05 +08:00
    PPTing
        1
    PPTing  
       2017-04-12 12:47:35 +08:00 via iPhone
    没看懂楼主的意思,或者你可以设置个 baseUrl ?打包编译 release 版的时候替换掉
    ghui
        2
    ghui  
       2017-04-12 12:57:14 +08:00 via Android
    gradle 的 buildvariant
    HEROLiX
        3
    HEROLiX  
    OP
       2017-04-12 13:01:07 +08:00
    @PPTing 现在我们是设置的 baseurl , 现在我们是想让其他开发人员看不到我们的正式接口路径,平时开发只用 demo 的环境,防止出现 正式环境误操作
    HEROLiX
        4
    HEROLiX  
    OP
       2017-04-12 13:02:52 +08:00
    @ghui 我们是想 隐藏正式路径,比如正式路径放到一个 jar 里面,好像不确认在 app 的 build.gradle 中时候可以直接访问 jar
    HEROLiX
        5
    HEROLiX  
    OP
       2017-04-12 13:04:38 +08:00
    还有一个方案 就是 新增一个 url.properties 不放到 代码管理里面,正式地址直接去读这个文件,但是这种就限定了只有部分人可以打 release 包
    SeanChense
        6
    SeanChense  
       2017-04-12 13:26:33 +08:00
    可以写一个 secret_config 文件, Git 忽略它
    ihipop
        7
    ihipop  
       2017-04-12 13:34:42 +08:00
    我用 ros+capsman 放了多个热点, 其中一个名字是 test 的 WIFI , 然后做了 dns 劫持和流量劫持,任何设备连接这个 wifi 自动走 test 接口,平台和方案透明。
    HEROLiX
        8
    HEROLiX  
    OP
       2017-04-12 13:37:01 +08:00
    @SeanChense 这个就是我上面说的 那打正式包 只能我来打了。。
    HEROLiX
        9
    HEROLiX  
    OP
       2017-04-12 13:38:06 +08:00
    @ihipop 我们也做了这个操作,但是不排除开发人员在不注意的情况下 连接其他 wifi 或者使用移动网络
    shuax
        10
    shuax  
       2017-04-12 13:38:51 +08:00
    公司内部路由器劫持 dns 解析。
    ihipop
        11
    ihipop  
       2017-04-12 13:43:47 +08:00
    @HEROLiX 这个就看怎么实施以及实施目的是啥了,一般的测试场景都能覆盖,除了一些检测是不是移动网络的 case
    连错 wifi 这事情,谁也控制不了,但是小规开发模测试的话,还是是比较方便的了。
    nicevar
        12
    nicevar  
       2017-04-12 14:47:38 +08:00
    一般就 dns 做处理,另外就是工程代码里面配置,用 gradle 配置不同环境的,已经完全能解决问题了,你都没描述明白自己的需求是什么
    lyragosa
        13
    lyragosa  
       2017-04-12 14:54:18 +08:00
    我提供一个我之前的方案

    默认是正式环境,打开 app 之后,进入关于页面,连续按下 10 次某个地方(没有任何 UI ,一片空白的地方,要连续 10 次所以肯定不会误触),弹出对话框,输入一段字符,开启调试模式,此时就已经切到了测试环境,并且在退出测试模式之前,关闭 app 再打开也是在测试环境
    zongren
        14
    zongren  
       2017-04-12 15:09:16 +08:00
    没啥办法,除非你能控制打包这个流程
    flyingghost
        15
    flyingghost  
       2017-04-12 15:24:23 +08:00
    不限制打包人,但限制打包机器。
    代码里放默认测试环境。开发过程中开发人员在自己电脑打 debug 包 release 包都不受影响。
    打 release 包使用专门的机器,如果有做 CI 的机器更好。
    生产地址放在这台机器的环境变量里,或者 CI 传参。 gradle 里做替换。
    celerysoft
        16
    celerysoft  
       2017-04-12 16:07:54 +08:00
    lz 我觉得你的需求很奇怪

    首先你的第一个需求其他开发人员看不到我们的正式接口路径,这个其实按你说的,把正式接口的地址放在一个文件里在版本控制里忽略即可,但这个方案又让你发出了正式包只能你来打了的感叹。

    我想请问,这些『其他开发人员』连正式接口的地址都不让知道,你还打算让他们来打 release 包?
    racechao
        17
    racechao  
       2017-04-12 16:14:08 +08:00
    程序员果然越来越懒了
    chairuosen
        18
    chairuosen  
       2017-04-12 16:16:09 +08:00
    打包只在 CI 机器打
    xxstop
        19
    xxstop  
       2017-04-12 16:36:20 +08:00
    自己写一个配置,然后根据打包的常量。加载不同的配置,当初我就是这么干的。
    vjnjc
        20
    vjnjc  
       2017-04-12 16:49:22 +08:00
    用好 gradle 的变量替换嘛。
    最后 output release 的时候,你要么限定打包人,要么限定打包机器。
    如果什么都不限定的话,是无法控制别人访问 release 环境的
    HEROLiX
        21
    HEROLiX  
    OP
       2017-04-12 18:48:49 +08:00
    @celerysoft 公司要求我也很尴尬
    HEROLiX
        22
    HEROLiX  
    OP
       2017-04-12 18:49:17 +08:00
    好吧,多谢提供思路,我再与领导协商协商
    ghui
        23
    ghui  
       2017-04-12 19:35:00 +08:00   ❤️ 1
    thinkfeed
        24
    thinkfeed  
       2017-04-13 11:42:17 +08:00
    build variants 就可以啊
    janus77
        25
    janus77  
       2017-04-16 21:24:05 +08:00
    我直接写在 buildType 里面的……
    不过你们的这种情况还是放在 productFlavor 里面比较好……
    不同的 productFlavor 使用不同的签名文件,不同的密码,这样是比较安全的做法
    http://www.jianshu.com/p/60095eb8801d
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2575 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 01:37 · PVG 09:37 · LAX 17:37 · JFK 20:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.