发布Android应用到市场前的"To Do"清单

331

我准备发布我的第一个Android应用程序到市场,想知道你们有没有任何经验可分享,超出了已有文档所提及,关于发布应用程序的任何提示。

在发布应用之前,有哪些隐藏的注意事项和/或需要注意的事项?例如,我的朋友建议我删除代码中的所有注释,以防万一别人获取了源代码,这样可以使得“代码盗窃者”更难破解代码。我认为这是个明智的建议。

在将应用发布到Android市场之前,需要做哪些事情?

12个回答

355
希望不太晚,这里是一些建议:
  • 在一周的最后一天(通常是星期四下午)发布您的应用程序。为什么呢?因为没有公司希望在周末前只有1.5天发布应用程序,这太危险了(如果有需要快速反应的问题)。

  • 对您的应用程序使用Proguard(通常只需在default.properties文件中添加此行:proguard.config=proguard.cfg)。这将优化、缩小和混淆您的代码,非常有用,可以防止代码被盗。您不必删除任何注释,它们会在编译时自动删除。

  • 优化您的图像(使用Paint.NETPNGCrushOptiPNG)。

  • 为大多数屏幕尺寸优化您的布局。您可以通过在AndroidStudio或Eclipse中编辑布局时简单地更改屏幕大小来实现此目的。

  • 在UI上捕获所有异常,并显示一个简单的toast,指示用户发生了错误。同时,使用Crashlytics或类似工具检索错误。

  • 不要使用过多的.jar库,而是优先使用库项目(优化代码大小),并使用gradle添加它们。

  • 优先使用矢量图像,因为它将减小APK大小并在所有设备上正确适配。

  • 不要使用Android首选项窗口->虽然这符合Android指南,但并不是很美观,请考虑制作自己的设置页面。但如果您仍然使用Android首选项,请考虑添加图标和颜色。

  • 不要在主屏幕上显示应用程序的标题(this.requestWindowFeature(Window.FEATURE_NO_TITLE);):好的品牌不需要占据屏幕上太多的空间来被识别(在菜单或某个不总是可见的地方显示一些图标或标题),并且在处理游戏和非常沉浸式内容时考虑使用全屏模式(this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);)。

  • 使用Google AnalyticsFabric AnswersFlurry进行未来的分析->尝试获取尽可能多的信息,但不要获取任何违反客户匿名身份的信息。不要忘记检索发生在用户端的异常(错误和堆栈跟踪)。

  • 请朋友做猴子测试,从用户那里学习通常会带来许多好处(例如优先级和新想法)。

  • 在完成所有功能之前考虑发布您的应用程序(仅发布最重要的功能),您不知道除了主要功能之外,用户还需要或想要什么。

  • 在您的应用程序中添加一个“更多应用程序”或“来自开发者的更多内容”部分,这是免费的广告。

  • 添加一个“发送反馈”部分,让用户有可能要求新功能或报告某些错误。

  • 通过在Web上提供strings.xml(例如Crowdin)来要求用户翻译您的应用程序。

  • 使用模拟器在每个Android版本上尝试您的应用程序->这种方法可以检测到


2
如果您在Eclipse中测试不同模拟器时遇到问题,可以使用Genymotion模拟器,它速度更快。此外,优化PNG图像可以选择www.tinypng.com。 - Arash
2
非常有用,但请记住,为了提供良好的用户体验,您最好有充分的理由去全屏。例如,如果您希望用户专注于一个单一元素并消除其他干扰因素。 - whizzkid
1
一旦您发布应用程序,就无法重置applicationId。很多时候它包含您不想透露的单词(比如您的用户名)。请在Android Studio项目的build.gradle文件中设置它。 - gsinha
9
我来到StackOverflow寻求问题的答案。我的问题是“在发布Android应用程序之前我应该做什么?” 这是一个非常有用的答案,而且我想还可能有许多其他答案,所以将问题标记为“不具建设性”似乎并不是很有建设性。 - user872985
2
谢谢你的建议。我还想知道一个问题,如果有人在Play商店打开我的应用程序,我希望显示我的应用程序作为建议,例如“开发者的其他应用程序”,有办法实现吗? - Geethu

47

不要费心去除代码注释。您的源代码不会传输到用户的手机上,只有编译后的代码才会传输,而这并不包含任何对您的注释的引用。

Android用户倾向于欣赏尽可能小的应用程序,因此请仔细检查您的应用程序中是否只包含仍在使用中的资源(图像等)。对应用程序中的任何.png图像使用OptiPNG/PNGCrush - 这可以将图像文件大小减少约10%,这可能是您整个应用程序大小的重要部分。

此外,请使用音频编辑器(例如Audacity)尽可能减小任何音频的大小。选择单声道OGG Vorbis文件通常是最好的选择,并且在手机上听起来足够好。


1
如果我没记错的话,我记得在某个地方读到过,当.apk被打包时,代码并没有被编译。我一直以为.apk包含了所有的源文件,就像你去Eclipse项目工作区文件夹看到的那样.....而Dalvik会在手机上运行时即时编译代码??我希望我是完全错误的,因为即使在阅读文章时,我也在自言自语,“这不安全。”我还是xda-developers.com的成员,他们似乎经常发布已解压的应用程序apk文件。 - dell116
16
不,原始源代码不会被发送。APK 文件只是一个伪装成 ZIP 文件的文件,因此请将其重命名并查看。/assets 和 /res/raw 中的所有内容都原样发送,以及 /res 中的可绘制对象。/res 中的 XML 文件已被修改(也许这里有人知道它们是加密还是仅压缩了?)。您的源代码将被编译成 classes.dex。如果您在记事本中打开它,您将发现它包含了许多来自源代码的字符串(例如方法和变量名称等),但没有您的注释。 - teedyay
7
XML文件被编译以优化它们的解析和导航。有工具可以对其进行反编译。 - bigstones
@bigstones 我们在谈论什么类型的编译程序? - Robert Massaioli
@RobertMassaioli 只需要用 AAPT,在构建时自动完成。 - bigstones

36

不必担心评论。如果您担心您的应用程序遭受恶意解析,那么请使用类似于ProGuard的混淆器对其进行处理。

我提供的其他提示:

  • 提前准备好所有图形和促销材料。
  • 战略性地选择发布时间,在生活中没有太多其他事情要做(比如周末前)这样你就有时间快速回应,如果最初的一些用户开始出现问题。 早期的低评级可能会使您失败,但快速的电子邮件响应和修复可以完全挽救客户对您的应用程序的看法。
  • 我同意之前的评论,尽可能减小图像大小。
  • 如果尚未完成,请将您的代码放入源代码控制中。 您肯定需要在某个时候发布更新和修补程序,而源代码控制可以在其中扮演重要角色。

4
如果你有时间快速修复问题,那么我支持你发布!(+1表示赞同) - teedyay
谢谢您的回复。我相信其他人也会感激。我正在使用Eclipse Galileo制作我的应用程序,Stack Overflow上的另一个线程说Subversive for Eclipse是最容易适应的源代码控制工具之一。在这方面,Eclipse网站有一个版本的Subversive可供下载,但我只看到了Helios版本的链接。您或其他人知道这个插件是否适用于Galileo吗? - dell116
其实我不知道。我没有将我的版本控制集成到Eclipse中,因为我懒得设置。当我在Windows上时,我使用TortoiseSVN,在Linux上时则使用Subversion命令行工具。 - Blumer
说到更新,是否只需要将更新的文件重新打包成应用程序,并用具有不同版本号的新应用程序替换市场上的旧.apk文件就可以了呢?我记得曾经试图在现有安装的应用程序之上重新安装我的应用程序(而不是卸载应用程序来模拟“更新”),但失败了,这让我想到当我发布更新时可能会发生这种情况。但是,为了论证,我在旧安装中安装的“更新”.apk文件在清单中没有不同的版本号。再次感谢您的任何建议! - dell116
1
当您上传新的.apk到市场时,它会检查版本号是否自上次以来已经增加。在设备上安装更新时,我认为它不会检查版本号,而是安装您告诉它要安装的内容。但是,如果旧版本和新版本签名使用的密钥不同,则安装更新的.apk将失败。您需要先卸载旧版本,然后再安装更新。 - Blumer
你能帮我处理源代码控制的事情吗? - Hammad Nasir

34

不确定您以前是否看过这个,但是您应该使用Monkey测试您的UI - 我的应用程序仅崩溃了一次,但如果我先用Monkey进行测试,它就不会出现任何问题。


18

我会补充一个显而易见但重要的建议:将你的签名密钥保存在安全的地方,并进行备份。如果让Eclipse来管理这个过程,请注意它创建密钥库的位置,并保存其备份副本。并且不要忘记密钥库或个别签名密钥的密码。

为什么:您需要使用与原始签名相同的证书对应用程序进行更新。如果丢失该证书(或无法访问),则无法更新应用程序。您将不得不在Android市场中创建新的清单。


1
我差点在电脑恢复过程中丢失了我的密钥...幸运的是,我备份了它! - Ruchir Baronia

18

我经常容易忘记的一些要点:

  • 在清单文件中双重检查您的minSdkVersion
  • 使用与您的minSdkVersion相同的模拟器测试您的应用程序
  • 让您的朋友测试您的应用程序,以确定它是否易于理解

如果您要在您的应用程序中提供更新:

  • 您可能需要添加某种“此版本中的新内容”对话框
  • 备份您的旧版本!
  • 不要忘记在您的清单文件中增加versionCodeversionName

7
好建议,如果你的应用程序使用SQLite数据库,请确保你的表格创建和升级程序都正常运作。 - Blumer

13

别忘了在你的清单文件中将debuggable=false。这个问题让我遇到了几次。

虽然不是完全确定,但我认为这会包括许多使代码黑客的生活变得更轻松的信息。

我记得很多年前,我不小心删除了一个java项目的源代码,吓坏了!我使用了一个叫做jad的实用工具来反编译生产服务器上的jar文件,它保留了所有变量并且几乎完美。我不记得注释是否还在那里了,但那个时候我没有放很多注释 :) 这是因为我在编译时包含了符号。


2
android:debuggable的默认值根据Google文档为false。请在http://developer.android.com/guide/topics/manifest/application-element.html上搜索“android:debuggable”获取更多信息。 - The Original Android

11

除了上面的建议外,考虑使用Flurry进行移动应用程序分析。 我在最初发布应用程序时并不知道这一点,但现在我已经更新了它们以包含该功能,我很喜欢了解用户实际使用应用程序的情况。 这可以为用户难以找到或对用户而言不太有趣/有用的功能提供有价值的反馈和指导。


8
据我所知,评论以任何形式都未包含在应用程序中。
对于开发人员来说,在提交应用程序期间唯一的“陷阱”是您可以向市场提供的各种图形。请准备好拍摄多个屏幕截图,并创建多个应用程序图标尺寸以及促销图形。
好的一面是,请准备好您的应用程序立即出现在商店中 - Android Market应用程序无需经过批准流程。

7
我还会确保您有某种错误报告,以便了解有多少用户遇到了错误。在更新应用程序时,您可能需要保留旧版本的副本,以防需要回滚。此外,编译一个特定于您的应用程序的清单也很好,这样每次都可以检查。

另外,为了减小文件大小(因为手机空间非常有限),您可能希望使用修剪器删除未使用的代码片段。您还可以对代码进行混淆以获得额外的保护。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接