将 Android 应用程序推向市场之前的“待办事项”列表[关闭]
Posted
技术标签:
【中文标题】将 Android 应用程序推向市场之前的“待办事项”列表[关闭]【英文标题】:"To Do" list before publishing Android app to market [closed] 【发布时间】:2011-07-04 10:15:36 【问题描述】:我正准备将我的第一个应用发布到 android 市场,我想知道你们是否有任何关于发布超越显而易见并且已经记录在案。
在将应用发布到市场之前,有什么隐藏的警告和/或想法吗?例如,我的一个朋友建议我删除代码中的所有 cmets,以防有人访问源代码,从而使潜在的“代码劫持者”更难破译代码。我认为这是一个明智的建议。
在将他们的应用发布到 Android 市场之前需要做些什么?
【问题讨论】:
【参考方案1】:希望还不算太晚,这里有一些建议:
在周末启动您的应用程序(星期四下午通常是个好时间)。为什么这样?好吧,没有公司愿意在周末前 1.5 天发布应用程序 -> 太危险了(以防出现需要快速反应的问题)。
在您的应用程序上使用 proguard(通常,您只需在 default.properties
文件中添加此行:proguard.config=proguard.cfg
)。这将优化、缩小和混淆您的代码,对于防止代码窃贼非常有用。您不必删除任何 cmets,它们会在编译时自动删除。
优化您的图像(使用Paint.NET、PNGCrush 或OptiPNG)。
针对大多数屏幕尺寸优化布局。您只需在 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 Analytics、Fabric Answers 或Flurry 进行未来分析 -> 尝试获取尽可能多的信息,但不要获取任何违反客户匿名身份的信息。不要忘记检索发生在用户端的异常(错误和堆栈跟踪)。
请你的朋友做猴子测试,向用户学习通常会带来很多好处(例如优先事项和新想法)。
考虑在完成所有功能(仅最重要的功能)之前发布您的应用程序,您不知道您的用户除了您的主要功能之外会想要或需要什么。
在您的应用中添加“更多应用”或“来自开发者的更多”部分,即免费广告。
添加“发送反馈”部分,让用户可以要求新功能或报告一些错误。
请您的用户翻译您的应用,方法是在网络上的某处提供 strings.xml,例如 Crowdin。
使用模拟器在每个 Android 版本上试用您的应用程序 -> 通过这种方式可以检测到许多错误或设计问题。为此,您可以使用提供的模拟器,或者改用Genymotion(Genymotion 有很多非常有用的功能)。
想想应用程序的名称 -> 你会使用什么关键字来搜索你的应用程序?这些关键字应该是您的应用程序的名称(Google 将帮助您以这种方式被发现)。
考虑在应用说明中包含关键字,但要以描述性的方式(使用关键字制作易于理解的句子)。切勿按说明添加关键字列表。
成为第一个给您的应用评分 5 星的人,并要求您的家人和朋友也这样做 -> 这可能会影响未来的用户评分。
考虑使用 Google 为您的应用翻译描述,或为 strings.xml 或两者兼而有之。
考虑在您的应用中展示广告并使用中介来提高您的收入AdMob。
考虑进行应用内结算,而不是提供付费版本 -> 用户更有可能在应用内付费而不是付费版本。
在应用程序中添加更改日志 -> 用户通常想知道自上一个版本以来发生了什么变化。
为帮助您的用户添加“感谢”部分 -> 这将吸引用户使用您的产品。
在您的应用中添加“如果您喜欢这个应用,请给它评分”链接(在您的 Google Play 描述中) -> 您将获得更多 5 星(通常是启动时的弹出窗口,或功能操作后) )。
考虑通过应用中的“提示”或“说明”部分来解释您的产品。
将您的密钥库和凭据信息保存在安全的地方。如果您丢失了密钥库,您将无法为您的应用发布更新。
让您的图标非常简单明了。图标是促使用户下载您的应用的第一件事,也是最后一件。
除非不可能,否则首选外部安装(AndroidManifest.xml 中的android:installLocation="preferExternal"
)。
阅读 AppAnnie 提示和博客文章,它将为您提供有关如何改进 ASO 并帮助您更好地了解用户的提示。
【讨论】:
如果你在eclipse中对不同模拟器的测试有问题,你可以得到genymotion模拟器,速度很快。同时优化png图片www.tinypng.com是不错的选择 非常有用,但请记住,为了提供适当的 UX 体验,您最好有充分的理由全屏显示。就像您希望用户专注于一个元素并消除途中的所有其他干扰一样。applicationId
在您发布应用后无法重置。很多时候,它包含您不想透露的字词(例如您的用户名)。将其设置在 Android Studio 项目的 build.gradle
文件中。
我来 *** 寻求问题的答案。我的问题是“在发布 android 应用程序之前我应该做什么?”这是一个非常有用的答案,我想可能还有很多其他人因此结束这个问题,因为“不具建设性”似乎不是很有建设性。
感谢您的提示.. 我还想知道一件事,如果有人在 Play 商店中打开我的应用程序,我想将我的应用程序显示为“来自开发人员的更多信息”之类的建议,有什么方法可以这样做【参考方案2】:
真的,不要费心删除代码 cmets。您的源代码无法到达用户的手机 - 只有编译后的代码才能到达那里,并且不包含对您的 cmets 的任何引用。
Android 用户倾向于将应用程序做得越小越好,因此请仔细检查您是否只包括仍在您的应用程序中使用的资源(图片等)。在应用中的任何 .png 图像上使用 OptiPNG/PNGCrush - 这可以将图像文件大小减少约 10%,这可能是整个应用大小的重要组成部分。
另外,使用Audacity 等音频编辑器尽可能减小任何音频的大小。选择单声道 OGG Vorbis 文件通常是最好的,而且在手机上听起来足够好。
【讨论】:
如果我没记错的话,我想我在某处读到,当.apk 被打包时,代码没有被编译。我一直假设 .apk 包含所有源文件,就像您在 Eclipse 的项目工作区文件夹中看到的那样......并且 Dalvik 在运行时即时编译代码通话中??我希望我错了,因为即使我在阅读这篇文章时,我也在对自己说,“那不安全。”我也是 xda-developers.com 的成员,他们似乎一直在发布应用程序的 deodexed apk 文件。 不,原始源没有发货。 .apk文件只是变相的.zip文件,所以重命名一下看看。 /assets 和 /res/raw 中的任何内容都不会改变,/res 中的可绘制对象也是如此。 /res 中的 xml 文件以某种方式被破坏(也许这里的其他人知道它们是加密的还是只是压缩的?)。你的源代码被编译成 classes.dex。如果您在记事本中打开它,您会发现它包含来自您的源代码(方法和变量名称等)的许多字符串,但没有您的 cmets。 xml 文件被编译以优化它们的解析和导航。有工具可以反编译它们。 @bigstones 我们在这里讨论什么样的编译程序? @RobertMassaioli AAPT,它在构建时自动完成。【参考方案3】:不用担心 cmets。但是,如果您担心应用程序遭到恶意剖析,请务必通过 ProGuard 之类的混淆器运行它。
我会提供的其他提示:
提前准备好所有图形和宣传材料。 策略性地为您的发布时间安排在您生活中没有其他事情发生的时候(例如周末之前),这样如果第一批用户开始遇到问题,您就有时间快速响应。早期的低评分可能会杀死您,但快速的电子邮件回复和修复可以完全挽回客户对您应用的看法。 我同意早期的 cmets 尽可能减小图像大小。 如果尚未将您的代码纳入源代码管理。您肯定需要在某些时候发布更新和修复,源代码管理可以在其中发挥重要作用。【讨论】:
+1 用于在您有时间快速解决问题时发布! 感谢您的回复。我相信其他人也会感激不尽。我正在使用 Eclipse Galileo 来制作我的应用程序,SO 上的另一个线程说 Subversive for Eclipse 是最容易习惯的源代码控制工具之一。在这方面,Eclipse 网站有一个 Subversive 版本可供下载,但我只看到 Helios 版本的链接。你或其他人知道这个插件是否可以与 Galileo 一起使用? 其实我不知道。我没有与 Eclipse 集成我的版本控制,因为我没有费心去设置它。我在 Windows 中使用 TortoiseSVN,在我的 Linux 机器上使用 Subversion 命令行工具。 说到更新,是不是就像用更新的文件重新打包应用程序并用具有不同版本号的新的.apk 替换市场上的旧.apk 一样简单?我记得尝试在预先存在的安装之上重新安装我的应用程序(不卸载应用程序来尝试模拟“更新”),但它失败了,这让我想到当我发布更新时可能会发生这种情况.但是,为了争论,我在旧安装之上安装的“更新”.apk 在清单中没有不同的版本号。再次感谢您的任何建议! 当您将新的 .apk 上传到市场时,它会检查以确保版本号自上次以来有所增加。在设备上安装更新时,我相信它不会检查版本号,而是安装您告诉它的内容。我知道安装更新的 .apk 会失败,但是,如果旧版本和新版本的签名密钥不同。您必须先卸载旧版本,然后再安装更新。【参考方案4】:不确定您以前是否见过这种情况,但您应该使用 monkey 来锻炼您的 UI - 我的应用只发生过一次崩溃,但如果我使用它进行测试,它就不会出现任何崩溃猴子优先。
【讨论】:
【参考方案5】:我容易忘记的几点:
仔细检查清单中的minSdkVersion
使用您的minSdkVersion
在模拟器上测试您的应用程序
让您的朋友测试您的应用,看看它是否一目了然
如果您要在应用中提供更新:
您可能想要添加某种“此版本中的新功能”对话框 备份您的旧版本! 不要忘记在清单中增加versionCode
和 versionName
【讨论】:
好点,同样的思路,如果您的应用使用 SQLite 数据库,请确保您的表创建和升级过程都处于正常工作状态。【参考方案6】:我将添加一个明显但重要的内容:将您的签名密钥保存在安全的地方,并进行备份。如果您让 Eclipse 为您管理它,请注意它在哪里创建您的密钥库,并保存它的备份副本。并且不要忘记密钥库或个人签名密钥的密码。
原因:您需要使用与原始签名相同的证书对应用的更新进行签名。如果您丢失了该证书(或无法访问它),您将无法更新您的应用程序。您必须在 Android 市场中创建一个新列表。
【讨论】:
我在进行计算机恢复时差点丢失了密钥...幸运的是,我有备份!【参考方案7】:不要忘记在您的清单中设置 debuggable=false。这让我有好几次都被抓到了。
我不完全确定,但我认为这将包含大量信息,使代码黑客的生活更轻松。
我记得几年前我不小心删除了一个 java 项目的源代码,我惊恐地意识到我没有备份!我使用了一个名为 jad 的实用程序来反编译生产服务器上的 jar 文件,它具有完整的所有变量并且几乎是完美的。我不记得 cmets 是否存在,但无论如何我并没有在其中放很多 cmets :) 这是因为我在编译时包含了符号。
【讨论】:
android:debuggable 默认值为 false 根据 Google developer.android.com/guide/topics/manifest/… 。搜索文本“android:debuggable”。【参考方案8】:除了上述很好的建议外,考虑使用Flurry 进行移动分析。当我第一次开始发布我的应用程序时,我并不知道这一点,但现在我已经更新了它们以包含它,我喜欢看到用户实际使用该应用程序做了什么。这可以为用户可能难以找到或对用户不感兴趣/无用的事物提供有价值的反馈和指导。
【讨论】:
【参考方案9】:据我所知,cmets 不以任何形式包含在应用程序中。
我在应用提交过程中发现的唯一“问题”是您可以向市场提供的各种图形。准备好截取多个屏幕截图并创建多个应用图标大小以及宣传图形。
从好的方面来说,准备好让您的应用立即出现在商店中——Android Market 应用无需经过审批流程。
【讨论】:
【参考方案10】:我还会确保您有某种错误报告,以便了解有多少用户遇到错误。在更新应用程序时,您可能需要保留旧版本的副本,以防您需要回滚。为您的应用编写一个特定的清单也很好,您可以每次都查看。
此外,您可能还想使用修剪器删除未使用的代码片段以减少整体文件大小(因为手机空间非常有限)。您可能还想混淆您的代码以获得额外的保护。
【讨论】:
【参考方案11】:为了得到一个清晰的想法..通过这个.. http://bewithandroid.blogspot.in/2012/05/publishing-android-application-on.html
【讨论】:
【参考方案12】:声明一个android:process
和android:sharedUserId
属性!
请参阅sharedUserId: safe to change when app is already in market? 了解原因。
【讨论】:
以上是关于将 Android 应用程序推向市场之前的“待办事项”列表[关闭]的主要内容,如果未能解决你的问题,请参考以下文章