我有一个Android应用程序,有两种形式:试用版和付费"专业版".这两个版本在Android Market中共存,并且具有不同的包名称(我们称之为com.app.trial和com.app.pro).它们共享相同的代码库.当我必须在Eclispe中的试用版和专业版之间切换时,每次编辑代码时我都要花费不少于20分钟来构建正确的版本.我的程序看起来像这样:
在AndroidManifest.xml中重命名包名称(也重命名app versionName和versionCode).
单击主程序包名称"com.app.pro"(如果pro是最新的构建,现在我想进行试验构建)并选择Refactor-> Rename(选中'Update references'和'Rename subpackages')并让Eclipse重命名.
在此之后出现了困难的部分:在我的代码中,许多文件仍导入"旧"软件包名称"com.app.pro",而不是自动更改为"com.app.trial".在某些情况下,Eclipse在重命名期间添加了这些引用,没有明显的原因(在给定的Java文件中没有对此特定包的引用).我必须手动编辑所有实例.
我的问题是:
如何减少耗时?我也一直在使用NetBeans,它提供了对#ifdefs(aka Abilities)的方便支持,它真正使构建之间的切换变得轻而易举.遗憾的是,#ifdefs不支持Eclipse(至少没有内置支持).
任何建议将不胜感激.
PS作为参考,我使用的是Eclipse Ganymede 3.4.2版,但也尝试了更新的版本,它也是如此.
我在iTunes商店有一个应用程序,其分发证书(在密钥链访问中)将于明天到期.它是在一年前生成的,即使我最近更新了我的iPhone开发者计划,但我还没有更新任何证书或签名.
当我将测试设备(iPod touch)日期设置为几天之后并尝试在其上运行应用程序时,它显示"由于配置文件已过期,无法打开应用程序**".
这是否意味着购买我的应用程序的所有人都会在一天内收到此消息?或者只是我?
换句话说,当分发证书/配置文件未更新并设置为过期时,在此日期之前购买的应用程序是否也将停止在所有用户设备上运行?我非常关心依赖这个应用程序的用户.在这种情况下,应用程序是否会自动从商店中删除,或者我必须将其删除并重新提交?
我最关心的是当前的用户.Apple"程序续订"页面没有提及我还应该更新商店中的所有应用程序.困惑.
在我的iPhone应用程序中,我有以下逻辑:
启动CLLocationManger(用户可以向定位管理器提供精度和距离滤波器参数,因为在我的情况下不需要最高精度,100-300米会很好,我想在此节省电池).
通过LocationManager获取GPS修复后(仅当获得此修复时),我创建并显示地图.CLLocationManager和MKmapView都是同一个ViewController的一部分.要显示当前位置,我设置mapView.showsUserLocation:YES,以显示蓝点.我开始的locationManager仍在继续工作,获得GPS更新.
Apple文档说明这在MKMapView上显示了UserLocation:
将此属性设置为YES会导致地图视图使用Core Location框架来查找当前位置.只要此属性为YES,地图视图就会继续跟踪用户的位置并定期更新.
没有关于MKMapView当前位置使用的准确度或距离滤波器的说法.它在我看来,在这一点上,我有自己开始的locationManager和mapView自己的locationManager两个更新位置!
请记住,我想通过设置精度和距离滤波器来节省一些电量?这些参数是否会被mapView的locationManager所尊重?
此外,这两个位置管理器是否会与另一个位置管理器同步?我更新了地图,使其与我原来的locationManager获得的新GPS坐标居中.但我也希望在地图的中心可以看到蓝点.是否每次都会更新,因为我将mapView的showsUserLocation设置为TRUE?
我很感激任何有线索的人.
我试图弄清楚GPS标准的setCostAllowed()设置的含义.Android文档说"表明提供商是否被允许产生金钱成本."
谁在乎提供者是否承担任何费用?我从来没有在移动账单上看到过"gps收费".有没有人被指控过这个?
如果没有,为什么不把它永远设置为'真'而忘记?
理想情况下,这是我想让最终用户控制的东西,但是将此选项放在应用程序GUI中可能只会引发更多我自己没有答案的问题.有没有人对此设置有解释?