发布android应用程序到市场之前的“待办事项”清单
我只是准备发布我的第一个应用程序到Android市场,虽然我已经通过了一大堆已经发布的应用程序的线程,我想知道你是否有任何关于任何经验,你可能会提示在发布超出显而易见且已经logging的应用程序方面遇到过困难。
任何隐藏的警告和/或想法之前,应用程序发布到市场上将不胜感激。 例如,我的一个好友build议我删除我的代码中的所有注释,以防万一有人得到源代码,从而使代码将更难以破译。 我认为这是一个明智的build议。
这个线程不应该限制在源代码的build议。 任何和所有关于将应用程序发布到android市场的build议不仅会受到我的赞赏,还有其他的nooobs可能会将他们的第一个应用程序发布到市场上,并在SO上研究此主题。
如果没有这个社区的帮助,我在这么短的时间内就不会得到这么多。 我将永远感谢你们所提供的所有帮助。
希望不是太晚,这里有一些build议:
-
为什么会这样?在周末推出你的应用程序(周四下午通常是一个好时机)。 好吧,没有公司愿意在周末结束前1.5天发布应用程序 – >太危险(万一有问题需要快速反应)
-
在你的应用程序上使用proguard(通常,你只需要在default.properties文件中添加这一行:
proguard.config=proguard.cfg
),这将优化,缩小和混淆你的代码,对于防止代码窃听器非常有用。 您不必删除任何注释,编译时自动删除 -
优化您的图像(使用Paint.NET , PNGCrush或OptiPNG )
-
优化大部分屏幕尺寸的布局。 您可以通过在AndroidStudio或eclipse中编辑布局时简单地更改屏幕大小来实现此目的
-
尝试/赶上用户界面上的所有exception,并显示一个简单的吐司,指示用户发生了什么错误。 同时,用Crashlytics或类似的东西来获取错误
-
不要使用太多的.jar库,更喜欢库项目(优化代码大小)并使用gradle添加它们
-
更喜欢使用vector图像,因为它会减lessAPK的大小,并正确适合所有设备
-
不要使用Android偏好窗口 – >即使它在Android的指导方针,也不是很漂亮,更喜欢做自己的设置页面。 但是,如果你保持Android偏好:考虑添加图标和颜色。
-
不要在主屏幕上显示你的应用程序的标题(
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
):好的品牌不需要在屏幕上占用太多的空间来识别(显示一些图标或标题在菜单或某处并不总是可见的地方),并考虑使用全屏模式(this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
)当处理游戏和非常身临其境的内容 -
使用Google Analytics(分析) , Fabric Answers或Flurry进行未来分析 – >尝试获取尽可能多的信息,但不要抓取任何违反客户匿名身份的内容。 不要忘记检索用户端发生的exception(错误和堆栈跟踪)
-
要求你的朋友做猴子testing,从用户那里学习通常会带来很多好东西(比如优先级和新想法)
-
考虑在完成所有function(仅限最重要的function)之前发布您的应用程序,除了主要function之外,您还不知道用户需要或需要什么
-
在您的应用中添加“更多应用”或“更多来自开发者”部分,即免费广告
-
添加“发送反馈”部分,让用户有可能要求新function或报告一些错误
-
通过在Web上提供诸如Crowdin之类的strings.xml来请求用户翻译您的应用
-
用模拟器在每个Android版本上尝试你的应用程序 – >将会以这种方式检测到许多错误或devise问题。 为此,您可以使用提供的仿真器,或者使用Genymotion (Genymotion有很多非常有用的function)
-
考虑应用程序的名称 – >您将使用什么关键字来search您的应用程序? 这些关键字应该是你的应用程序的名称(谷歌将帮助你发现这种方式)。
-
考虑在应用描述中包含关键字,但采用描述性的方式(使用关键字使可理解的句子)。 不要在描述中添加关键字列表
-
成为第一个以5星评价你的应用,并要求你的家人和朋友也这样做 – >这可能会影响未来的用户评分
-
考虑使用Google翻译您的应用程序,以获取描述,或者为strings.xml或两者
-
考虑在您的应用中展示广告,并使用中介来改善您的收入AdMob
-
而不是提供付费版本,考虑做应用内结算 – >用户更有可能支付应用内付款,而不是支付付费版本
-
在应用程序中添加更改日志 – >用户通常希望知道自上一版本以来发生了哪些变化
-
为帮助您的用户添加“感谢”部分 – >这会将用户引导至您的产品
-
在你的应用程序中添加一个“如果你喜欢这个应用程序,请评价”链接(到你的Android电子市场的描述) – >你会得到更多的5星级(通常是在启动popup窗口或function操作后)
-
考虑通过应用程序中的“提示”或“说明”部分来解释您的产品
-
将您的密钥库和凭据信息保存在安全的地方。 如果您丢失了密钥库,则无法为您的应用发布更新
-
让你的图标变得简单明了 该图标是第一个也是主要的最后一件事,将使用户下载你的应用程序
-
除非不可能,否则首选外部安装(AndroidManifest.xml中的
android:installLocation="preferExternal"
) -
阅读AppAnnie的提示和博客文章,它会给你提示如何改进ASO,并帮助你更好地了解你的用户。
真的,不要打扰删除代码评论。 您的源代码不会将其发送到用户的手机 – 只有编译后的代码才会到达,而且不包含任何对您评论的引用。
Android用户倾向于欣赏尽可能小的应用程序,因此仔细检查一下,您是否只包含了应用程序中仍在使用的资源(图片等)。 使用OptiPNG / PNGCrush对您的应用中的任何.png图像 – 这可以减less约10%的图像文件大小,这可能是整体应用程序大小的重要组成部分。
另外,使用Audacity等audio编辑器尽可能减小任何audio的大小。 单声道的OGG Vorbis文件通常是最好的,在手机上听起来足够好。
不要担心评论。 如果您担心恶意parsing您的应用程序,那么请通过像ProGuard这样的混淆器来运行它。
我会提供的其他技巧:
- 准备好所有的graphics和宣传材料。
- 当你的生活中没有很多事情发生时(比如在周末之前),为了让你有时间在第一批用户开始有问题的时候做出快速的反应,把你的发布时间定在战略上。 早期的低收视率可能会让你失望,但快速的电子邮件回复和修复可以完全兑换客户对你的应用的看法。
- 我会同意以前对尽可能减小图像尺寸的评论。
- 如果还没有,请将您的代码放入源代码pipe理中。 您肯定需要在某个时候发布更新和修复,而源代码pipe理可以在这方面发挥重要作用。
不知道你以前是否见过这个,但是你应该用猴子锻炼你的用户界面 – 我的应用程序只有一次崩溃,但是如果我先用猴子来testing它,那么就不会有这样的崩溃。
我将添加一个显而易见的,但重要的:将您的签名密钥保存在安全的地方,并进行备份。 如果您让Eclipse为您pipe理它,请注意它创build密钥库的位置,并保存它的备份副本。 不要忘记密钥库或个人签名密钥的密码。
原因:您需要使用与原始签名相同的证书为应用程序签名更新。 如果您失去了该证书(或无法访问该证书),则无法更新您的应用。 您将不得不在Android市场上创build一个新的列表。
我倾向于忘记的一些观点:
- 仔细检查清单中的
minSdkVersion
- 使用
minSdkVersion
在模拟器上testing您的应用程序 - 让你的朋友testing你的应用程序,看看是否是不言自明的
如果您要在应用中提供更新,请执行以下操作:
- 您可能需要添加某种“此版本中的新增function”对话框
- 备份你的旧版本!
- 不要忘记在清单中增加
versionCode
和versionName
不要忘记在你的Manifest中使debuggable = false。 这让我出了几次。
我并不完全确定,但是我认为这会包含大量的信息,使得黑客代码的生活变得更加简单。
我记得几年前我不小心删除了一个java项目的源码,惊恐中我意识到我没有备份! 我使用了一个名为jad的实用程序来反编译生产服务器上的jar文件,它具有所有的variables,并且几乎完美。 我不记得评论是否在那里,但是我没有把很多意见反馈给他们:)这是因为我编译时包含了符号。
除了上面的build议之外,还可以考虑使用Flurry进行移动分析。 当我刚开始发布我的应用程序时,我并不知道,但是现在我已经更新了它们,我喜欢看到用户实际上在使用应用程序。 这可以为用户难以find或不感兴趣/对用户有用的事物提供有价值的反馈和指导。
据我所知,评论是不包含在任何forms的应用程序。
我在应用程序提交时发现的一个开发者唯一的“陷阱”是您可以提供给市场的各种graphics。 准备采取几个截图,并创build几个应用程序图标大小以及促销graphics。
在光明的一面,准备让您的应用程序立即在商店中显示 – Android Market应用程序没有审批stream程。
我也会确保你有某种错误报告,所以你知道有多less用户遇到错误。 在更新应用程序之前,您可能需要保留旧版本的副本,以免需要回滚。 它也很好编译一个特定的清单,你可以每次都去。
另外,为了增加这个function,你可能需要使用修剪器来取出不用于减小整体文件大小的代码(因为手机空间相当有限)。 您也可能想混淆您的代码以获得额外的保护。
声明一个android:process
和android:sharedUserId
属性!
请参阅sharedUserId:安全更改应用程序已经上市时? 为什么。
- MS Visual Studio:如何从发布中排除某些项目文件夹?
- 在开发者控制台上需要一些关于beta / alphatesting的说明
- Web部署任务失败。 (“Microsoft.Web.Deployment.DeploymentManager”的types初始值设定项引发exception。)
- 什么是“不完整的对象”?
- 使用gradle将artifact上传到artifactory
- API自动将apk上传到Google Play?
- POST请求不考虑NSMutableURLRequest超时间隔
- PHP:可能自动获取所有的POST数据?
- 结构发布XCode 6.3 codesign xcodeselect