我根据说明创建了一个Phonegap项目,将其检入SVN,检查出来然后发现我无法再运行构建命令 - 必须将更改复制到每个平台.Mac OS X中的终端显示以下错误:
[错误:当前工作目录不是基于Cordova的项目.]
Android中的许多功能都需要在清单中设置使用权限.然后,这些值确定哪些设备将在Market中看到它们.但是,如果该功能是可选的,应该怎么做...如果它可以在许多设备上运行,但只需要几个许可?
例如:让我们说一个具有多种功能和大量内容的应用程序 - 它提供了一个按钮来呼叫公司.这是一个很好的方便功能,而不是写下数字或将其复制并粘贴到手机应用程序中.然而,这并不重要.
如果使用该功能和电话的权限被添加到应用程序,那么这一切都很好的手机 - 但没有平板电脑会在市场上看到的应用程序.
这个问题的一般解决方案是什么?
可以使用不同的权限制作多个应用程序,但是这种方法存在一些问题(额外的开发时间,难以保持维护一致,评论和评级分散在不同的应用程序中,以及是否存在多种不同类型的可选权限而不是不同的每个组合可能需要应用程序).
该应用程序可以以编程方式检查该功能是否可用并根据设备启用或禁用该功能.问题是,如果应用程序没有权限,那么如果它尝试使用该功能它将崩溃 - 如果它确实拥有权限,则某些设备将无法在该应用程序中找到该应用程序.市场.
在某些情况下,可以完全从应用程序中删除不重要的功能以避免该问题.这也不是一个很好的解决方案,因为这些功能在支持它的设备上"很高兴".
是的,我知道Android中是否可以拥有"可选"权限?是一个类似的问题.我希望有更新的信息以及人们发现的其他解决方法,如果有的话...这个问题的解决方案是什么?除了我上面列出的那些之外,有没有其他方法?
我有一个屏幕,其中多个按钮使用相同的背景Drawable.我有可重用的代码,我在各种项目中使用它来添加一个OnTouch监听器,在触摸按钮时添加灰色滤色器.这通常可以正常工作,但在这种情况下,当按下任何按钮时,所有按钮都会着色.
我在http://developer.android.com/guide/topics/graphics/2d-graphics.html中看到了一个解释:
注意:无论您为其实例化多少个不同的对象,项目中的每个唯一资源都只能维护一个状态.例如,如果您从同一图像资源中实例化两个Drawable对象,则更改其中一个Drawable的属性(例如alpha),然后它也会影响另一个.
建议的解决方案是使用TweenAnimation,它似乎不适用于滤色器.
我还看到了Android:克隆一个drawable,以便使用过滤器创建一个StateListDrawable,建议使用drawable.getConstantState().newDrawable().这似乎没有什么区别.我猜测只要使用相同的物理图像文件,所有Drawables都会受到使用相同资源对任何其他Drawable的更改的影响.
除了创建第二个背景图像以显示按下状态之外,还有什么解决方案?有一个简单的程序化解决方案,我可以添加到我的代码并在每个项目中使用,这将是一件好事.
考虑到数据类型的各种怪癖和本地化,Web服务与应用程序之间传递货币价值的最佳方式是什么?某处有标准吗?
我的第一个想法是简单地使用数字类型.例如
"amount": 1234.56
Run Code Online (Sandbox Code Playgroud)
在使用浮点数据类型进行货币计算时,我已经看到很多关于缺乏精度和舍入误差的问题的论点 - 但是,我们只是传递值而不是计算,所以这无关紧要.
EventBrite的JSON货币规范指定如下:
{
"currency": "USD",
"value": 432,
"display": "$4.32"
}
Run Code Online (Sandbox Code Playgroud)
Bravo用于避免浮点值,但现在我们遇到另一个问题:我们可以容纳的最大数字是多少?
一条评论(我不知道它是否属实,但似乎是合理的)声称,由于数字实现在JSON中有所不同,因此您可以期待的最好的是32位有符号整数.32位有符号整数可以容纳的最大值是2147483647.如果我们表示次要单位中的值,那么是21,474,836.47美元.2100万美元似乎是一个巨大的数字,但是某些应用程序可能需要使用大于此值的值,这并不是不可思议的.对于1000个未成年单位成为主要单位的货币,或者货币价值低于美元的货币,问题会变得更严重.例如,突尼斯第纳尔分为1,000毫米.2147483647 milim,或2147483.647 TND是$ 1,124,492.04.在某些情况下,更有可能超过100万美元的价值.另一个例子:越南盾的子单位因通货膨胀而变得无用,所以让我们只使用主要单位.2147483647越南盾是98,526.55美元.我相信很多用例(银行存款,房地产价值等)远高于此.(EventBrite可能不必担心票价会那么高!)
如果我们通过将值作为字符串传递来避免该问题,那么字符串应该如何格式化?不同的国家/地区具有截然不同的格式 - 不同的货币符号,无论符号出现在金额之前还是之后,无论是否在符号和金额之间有空格,如果使用逗号或句点来分隔小数,如果逗号用作千位分隔符,括号或减号来表示负值,可能还有更多我不知道的值.
如果应用知道它正在使用的语言环境/货币,请传达类似的值
"amount": "1234.56"
Run Code Online (Sandbox Code Playgroud)
来回,并相信应用程序正确格式化金额?(另外:是否应避免使用小数值,以及以最小货币单位指定的值?或者主要和次要单位是否应列在不同的属性中?)
或者服务器应该提供原始值和格式化值?
"amount": "1234.56"
"displayAmount": "$1,234.56"
Run Code Online (Sandbox Code Playgroud)
或者服务器应该提供原始值和货币代码,并让应用程序格式化它?"amount":"1234.56""currencyCode":"USD"我假设使用的方法应该在两个方向上使用,与服务器之间进行传输.
我一直无法找到标准 - 您是否有答案,或者可以指向我定义此资源的资源?这似乎是一个普遍的问题.
作为Android开发人员,我们知道在物理设备上进行测试的重要性 - 尽可能多.鉴于预算有限,我们希望使用最受欢迎的Android手机和平板电脑进行测试,以确保我们的应用尽可能在市场中占据很大比例,这是合乎逻辑的.
是否有定期更新的资源显示最流行的手机和平板电脑?最好是在美国.信息必须在那里 - 来自制造商的报告销售,来自Android Market的统计数据等......我只是在一个地方看不到我想要的一切.
我已经在应用程序上工作了一段时间,并且已经在许多设备上进行了测试.突然,它停止了摩托罗拉Xoom系列版(Honeycomb 3.1)的工作.每次我尝试运行应用程序时,它都会在调用getExternalFilesDir()时失败,因为该调用将返回null而不是File.
根据我的研究,任何有类似问题的人要么错过WRITE_EXTERNAL_STORAGE,要么没有得到答案,要么就是在谈论Froyo中的错误.这些都不适用于此 - 再次,它在其他设备上工作正常,我有WRITE_EXTERNAL_STORAGE权限,它甚至在几分钟之前就在这个设备上工作.
知道什么可能导致这个问题,或者如何以编程方式防止它?
默认情况下,Android Pay拒绝在调试版本中工作,这使测试变得棘手.到目前为止我们所做的是将新代码实际合并到开发或修补程序分支中,这样我们的构建环境就会生成一个可以测试的签名APK.这不太理想.
https://developers.google.com/android-pay/get-started states"注意:我们的测试环境不会在FullWallet响应中返回实时,可收费的令牌,但会允许我们测试您的预购流程.您将在您的应用具有生产访问权限之前,请在Android Pay选择器上看到无法识别的应用错误." 这不太有希望.
https://developer.android.com/google/play/billing/billing_testing.html建议使用针对"保留产品ID"的特殊配置静态响应进行测试,这对设置而非真正的测试非常麻烦.他们提供的另一个选择是将应用程序发布到alpha或beta频道,当然,这将是一个签名的APK. https://stripe.com/docs/mobile/android有关于"TEST_GATEWAY_TOKEN"的建议,但在学习如何在测试中使用Android Pay方面确实没有帮助.
我们甚至与Google Developer Advocate进行了交谈,他们除了剪切和粘贴一些相同的文档外什么都没做.
有没有办法用无符号构建做一个好的测试?在本地开发人员计算机上成功测试Android Pay功能会很棒.
刷新图标太靠近标题"REFRESH".看起来很尴尬.
我知道有一种方法可以修复它来编辑图像以强制添加填充,或者将其包装在XML drawable中.
看起来我不应该在图像本身中添加空间来解决这个问题.我觉得应该有一种简单的方法来更改填充或边距属性来解决问题.我很惊讶他们在这里如此接近.
有任何想法吗?
有没有办法椭圆化NSTextField的文本内容,而不是截断?
所以代替:
The quick brown fox jumped over
Run Code Online (Sandbox Code Playgroud)
它会说:
The quick brown fox jumped ...
Run Code Online (Sandbox Code Playgroud)
我在文档中找不到任何相关内容.我错过了什么?
更新:有没有办法椭圆化和wordwrap - 换句话说,有多行和ellipsize最后?
我正在使用Android Studio 3.5 Beta1。我决定尝试“应用更改”。Instant Run出现问题,因此我们将其禁用了很多年。我希望这会更好。
如果我尝试“应用代码更改”按钮,则会在“运行”窗口中收到错误消息:
Changes were not applied.
Modifying resources requires an activity restart.
Resource 'assets/crashlytics-build.properties' was modified.
Apply changes and restart activity
Run Code Online (Sandbox Code Playgroud)
crashlytics-build.properties 有评论说
#This file is automatically generated by Crashlytics to uniquely
#identify individual builds of your Android application
Run Code Online (Sandbox Code Playgroud)
实际上,它具有一个build_id可能随Gradle每次构建而变化的属性。而且由于每当我使用“应用代码更改”或“应用更改并重新启动活动”按钮时Gradle都会运行构建,因此Gradle构建会更改文件,这会阻止Apply Run完成。
我在网上找到的与此相关的唯一信息是Reddit评论说
我了解了crashlytics + proguard中断即时运行的困难方式
因此,看来我不是唯一遇到此问题的人。删除Crashlytics并不是一种选择。我也不想在每次调试时都禁用它,然后再次重新启用它。
“应用更改并重新启动活动”按钮起作用。我正在使用的活动重新启动,并且更改可见。我尝试比较使用常规“运行”按钮的时间。“应用更改并重新启动活动”需要花费同样长的时间。唯一的好处似乎是,我不必每次都在应用程序中导航到该屏幕,而是可以保留在该屏幕上并重新加载更改。这是一个很大的好处,我只是期望更多。
我可以做些什么来使“应用更改”更有效地工作?
android ×7
android-pay ×1
api-design ×1
cocoa ×1
cordova ×1
currency ×1
json ×1
objective-c ×1
svn ×1