2017-10-18 102 views
0

我们正在开发android应用程序,并且有两个不同的环境需要单独指出。可以说它的分期和生产,但由于合规性要求,我们需要提供一个apk文件,并且应该有一种方法来在需要时更改环境 ,以便他们可以确保同一文件在生产中进行测试。使用一个APK更改为两个环境

我们将url详细信息保存在string.xml中,通常我们给出两个指向两个不同环境的apks。

所以我们只是漫步是否有任何工具或任何其他方法,我们可以更改apk中的string.xml值。以便他们可以使用该工具在 需要时更改网址。

+1

使用共享偏好设置来保存env并根据它进行加载。你必须从用户那里获得使用运行时环境的输入。 –

回答

1

使用这种方式来分隔的URL,

buildTypes { 
debug { 
    buildConfigField "Boolean", "IS_DEBUG", 'true' 
    buildConfigField "String", "URL", 'https://appsgit.com/debugurl' 
} 

release { 
    buildConfigField "Boolean", "IS_DEBUG", 'false' 
    buildConfigField "String", "URL", 'https://appsgit.com/releaseurl' 
} 

}

请更多的信息检查此blog post ..

如果此解决方案不起作用。你可以尝试Gradle BuildFlavor

加入产品清单如下(免费&付费)。

productFlavors { 
free { 
    applicationId "com.appsgit.freeapp" 
    buildConfigField 'boolean', 'IS_PAID', 'false' 
    buildConfigField 'boolean', 'URL', 'http://freeversion.com' 
    applicationVariants.all { variant -> 
     variant.outputs.each { output -> 
      output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace("app-release.apk", "app-free-" + defaultConfig.versionName + ".apk")) 
     } 
    } 
} 

paid { 
    applicationId "com.appsgit.paidapp" 
    buildConfigField 'boolean', 'IS_PAID', 'true' 
    buildConfigField 'boolean', 'URL', 'https://paidversion.com' 
    versionCode 1 
    versionName "1.0" 
    applicationVariants.all { variant -> 
     variant.outputs.each { output -> 
      output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace("app-release.apk", "app-paid-" + defaultConfig.versionName + ".apk")) 
     } 
    } 
} 

}

而创建的代码库喜欢这里,

enter image description here

不要忘记Main共享给所有的味道。

+0

这里的问题是我们需要生成两个指向调试和发布的apks,但我们只需要发送一个apk – Suranga

+0

现在检查更新的答案 –

+0

解决了你的问题? –

0

由于你的apk中的strings.xml将会被更改,所以它将是两个不同的apk用于分段和制作(不同的sha256总和)。

如果不是问题,那么你可以在两种不同的环境中使用“风味”。

https://developer.android.com/studio/build/build-variants.html#flavor-dimensions

如果有必要只有一个分期和生产的apk,那么你可以添加某种KILLSWITCH的。例如,它可能是一个具有特殊名称的文件。如果文件存在于设备上,则apk以其他方式使用分段路径apk使用生产方式。

希望它对您有所帮助。

0

您应该让用户在运行时选择环境。

为此,您应该从共享首选项中读取环境选项。

最简单的方法是创建一个Preferences Activity,其中有一个复选框可以选择是使用生产环境还是登台环境。然后,将逻辑映射为在复选框被选中时使用适当的基本URL。