我有一个上传数据到测试服务器和生产服务器的Android库。我希望使用这个库的开发人员在开发时使用测试服务器,在应用程序从Android市场下载时使用生产服务器。
应用程序可以判断自己来自哪里(市场或非市场)吗?我想可以检测签名的JAR文件是否存在。
我有一个上传数据到测试服务器和生产服务器的Android库。我希望使用这个库的开发人员在开发时使用测试服务器,在应用程序从Android市场下载时使用生产服务器。
应用程序可以判断自己来自哪里(市场或非市场)吗?我想可以检测签名的JAR文件是否存在。
可以使用签名来实现这一点。在开发过程中,您可以使用调试密钥对应用程序进行签名,并在将应用程序上传到市场时使用发布密钥进行签名,然后根据用于签名的签名检查应用程序并基于此使用测试或生产服务器。 以下是一个读取应用程序签名的小代码片段:
try {
PackageManager manager = context.getPackageManager();
PackageInfo appInfo = manager.getPackageInfo(
YOUR_PACKAGE_NAME, PackageManager.GET_SIGNATURES);
// Now test if the first signature equals your debug key.
boolean shouldUseTestServer =
appInfo.signatures[0].toCharsString().equals(YOUR_DEBUG_KEY);
} catch (NameNotFoundException e) {
// Expected exception that occurs if the package is not present.
}
YOUR_PACKAGE_NAME 必须类似于 'com.wsl.CardioTrainer' 这样的格式。它必须是你在 AndroidManifest.xml 中使用的包名。
祝你好运
要获取Android Market的包名,此帖子可能会有所帮助。检索安装了一个包的应用程序的包名称。这标识了该包来自哪个市场。
build.xml
Ant 构建脚本,以在发布和调试构建之间交换变量。我已经以这样的方式完成了配置类(用于 Facebook 和 Twitter 密钥)和资源文件(用于 Google 地图)的自动交换。 - Paul Lammertsma