如何让 Android 应用程序自动配置调试与发布值?
我正在开发一款 Android 应用程序,特别是使用 Facebook Android SDK 的应用程序。在开发模式下,我正在使用一个使用一个 ID 的测试 Facebook 应用程序。但是,在发布模式下,该应用程序将与具有不同 ID 的第二个 Facebook 应用程序一起使用。
我想知道这里的大多数 Android(或 Java 可能是一个足够合适的知识领域)开发人员如何使用调试与发布值自动构建他们的应用程序。理想的解决方案在构建之前不涉及手动切换(例如:将 public static Final DEBUG = false;
切换到 true
)。
I'm working on an Android app, specifically one that uses the Facebook Android SDK. In development mode, I'm working with a test Facebook app that goes by one ID. However, in release mode, the app will be working with second Facebook app with a different ID.
I'm wondering how most Android (or Java might be a suitable enough realm of knowledge) developers here go about having their app automatically build with debug vs. release values. An ideal solution does not involve a manual switch (e.g.: switching public static final DEBUG = false;
to true
) before building.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
你问这个问题已经有一段时间了,但我想我应该分享一下我是如何做的。
就像 Sebastian 暗示的那样,Ant 脚本可以为您处理该更改并生成您正在寻找的静态最终常量。您可以配置 IntelliJ 或 Eclipse 以使其几乎无缝。
我试图详细说明我在这里采取的不同步骤,如果可以的话请告诉我有帮助。我知道在发布之前我永远不需要进行任何手动更改,这是一个很好的缓解!
It's been a while since you asked but I thought I'd share how I'm doing it.
Like Sebastian hinted, an Ant script can handle that change for you and generate the static final constants that you're looking for. You can configure IntelliJ or Eclipse to make it almost seamless.
I tried to detail the different steps I took over here, let me know if it helps. I know I never have to make any manual changes before releasing, and it's a nice relief!
在 eclipse ADT 17.0 及更高版本中,有一个新功能。检查使用您的代码自动构建的 BuildConfig.DEBUG。
有关详细信息,请参阅 http://developer.android.com/sdk/eclipse-adt.html
In eclipse ADT 17.0 and above there is a new feature for this. Check the BuildConfig.DEBUG that is automatically built with your code.
For more information see http://developer.android.com/sdk/eclipse-adt.html
我不推荐 IMEI 方法...它的主要问题是并非所有 Android 设备都有 IMEI。更好的方法是检查用于签署 .apk 的签名。
I can't recommend the IMEI method... the main problem with it is that not all Android devices will have IMEIs. A better way is to examine the signature used to sign the .apk.
我使用稍微普通的方法(如果您仍然对解决方案感兴趣)。
在应用程序启动时,我的应用程序检查 /sdcard/ 中是否存在存储的文本文件。我的每个应用程序都会查找特定的文件,例如“applicationdebug.txt”。如果该文件存在,那么应用程序将进入调试模式,并开始使用详细的日志语句并使用我的调试 Facebook 密钥等。
然后我只需在设备上删除(或重命名)该文件即可查看应用程序在发布中的执行情况模式。
I use a slightly more mundane method (in case you're still interested in solutions).
At application launch my application checks for the existence of a text file stored in /sdcard/. Each application I have looks for a specific file like "applicationdebug.txt". If the file exists, then the application goes into debug mode and starts being verbose with log statements and using my debug Facebook key, etc.
Then I simply remove (or rename) the file to on the device to see how the application performs in release mode.
通常您只会使用 1 或 2 个设备进行调试。那么可以根据Devices来设置DEBUG开关吗?所以你可以简单地使用 IMEI。
向您的项目添加一个新的
Application
类并让它初始化该字段(怀疑将其放入 Const 类中)。在您的应用程序 onCreate 方法中,调用
Const.setupDebug(getApplicationContext());
像这样实现 setupDebug
公共类常量{
从常量字段切换到常量方法。
Const.isDebug()
Usually you will use 1 or 2 devices for debugging only. So you can set the DEBUG switch based on the Devices? So you can simply use the IMEI.
add a new
Application
class to your project and have it initialize the field (suspect to put it in a Const class).In your Applications onCreate method, call
Const.setupDebug(getApplicationContext());
Implement the setupDebug like this
public class Const {
Switch from constant field to constant Method.
Const.isDebug()
使用 Eclipse,我在工作区中创建了 3 个项目:
这是一个库项目
包含所有源代码
在values/refs.xml中,我添加
使用ApplicationProject
覆盖 AndroidManifest 和其他 xml 文件
开发特定配置
在values/refs.xml中,我添加
使用ApplicationProject
覆盖 AndroidManifest 和其他 xml 文件
生产特定配置
在values/refs.xml中,我添加了
我从该项目签名的APK以将其放在商店中
With Eclipse I create 3 projects in the workspace :
It is a library project
Contain all source code
In values/refs.xml I add
Use ApplicationProject
Overide AndroidManifest and other xml file with
developement specific config
In values/refs.xml I add
Use ApplicationProject
Overide AndroidManifest and other xml file with
production specific config
In values/refs.xml I add
I signe APK from this project to put on the store