【问题标题】:Not able to get large Android App downloaded from Google-Play无法从 Google-Play 下载大型 Android 应用程序
【发布时间】:2015-05-12 23:54:10
【问题描述】:

我正在开发一个 Android 应用程序(或者我认为我是),其中包含 1,200 种植物的植物描述和照片。该数据导致应用程序约为 250 Meg。当我开始发布应用程序时,我发现应用程序必须分成两部分:主程序和大部分数据。分解程序花了大约一周时间,编写自己的文件系统很烦人,但事情就是这样。 (据我所知,Google 让 Zip 文件与 URI 一起使用的程序不适用于 Webview。)

然后我解决了将下载器放入我的程序以从 Google-Play 读取数据的问题。执行此操作的说明毫无意义。在研究了一天之后,我终于阅读了关于 Android 的 Wikipedia 文章,其中解释了 Android 开发最近从 Eclipse 开发系统切换到了 Android Studio。这些说明是针对 Eclipse 开发系统的。没有针对 Android Studio 的说明。

让下载软件运行的第一个任务是链接到 Extras 包中的库。经过几天的研究,我得出的结论是,不仅没有关于如何执行此操作的说明,而且无法完成。链接到库似乎是在 Android Studio 中的 File->Project Structure->Dependencies 弹出窗口中完成的(尽管我从未发现任何有关使用 Android Studio 链接到库的有用文档)。在此弹出窗口中,可以通过三种方式在“+”符号下添加“依赖项”。经过几个小时的用餐,我得出结论,您无法链接到 Extras 包。

我在 user/AppData/Local/sdk/extras/google/play_licensing 和 play_apk_expansion 目录系统中搜索了一个 .jar 文件(不知道 .jar 是什么,但感觉它可能有用),但没有找到。我没有在这一点上放弃(合乎逻辑的事情),而是将所有 play_licensing 和 play_apk_expansion 程序、子例程和相关的东西都移到了我的应用程序中。经过一天更改包含语句后,我能够编译所有内容。

我并不清楚如何将所有这些东西链接到我的程序中,但我猜测如果我将 Google 的 SampleDownloaderActivity 作为我的启动程序并将我的简单启动内容添加到他们的示例程序。该应用程序现在可以在我的开发系统上运行。

为了使用 Google-Play 对其进行测试,我支付了 25 美元并填写了大量文件,最终能够上传我的应用程序。当它运行时它崩溃了。一天后,我意识到我没有上传我的 .obb 文件。似乎没有任何方法可以在不上传应用程序的情况下上传 .obb 文件,并且您无法在不滚动版本号的情况下上传应用程序。这里只是一个关于滚动版本号的注释。为整数的版本号必须保持为整数。如果您将其设置为 1.0001,则开发系统会在某处崩溃,而不会给您合理的诊断信息。如果您使用的是 Development Studio,则版本号不在文档所述的“清单”中,而是在“build.gradle (Module:app)”文件中。上传新应用后,您立即上传您的 .obb 文件,该文件(我认为)必须与应用具有相同的版本号。因此,将应用的版本号放入程序中引用 .obb 文件的每个位置。

将我的应用程序和带有正确版本号的 .obb 文件上传到各处后,我发现我的应用程序从开发系统运行,但从 Google-Play 下载时总是崩溃。下载前可能需要删除您的开发版本。有一次,我不知道为什么,Google-Play 下载了 App 和 .obb 文件。它仍然崩溃了。消息总是“对不起,您的程序已停止。好吗?”它似乎在 Google 的库程序中崩溃了。

此时我不知道如何调试 Google 的软件。显然是我的错。然而,如果能收到一条消息告诉我我做错了什么,那就太好了。 Google Play 似乎已放弃下载我的应用,但这可能是因为我需要继续上传新版本并等待一天才能下载到我的 Nexus5。

在花了几个月的时间开发这个应用程序之后,我的结论是我认输了。当我想做的是开发应用程序时,开发下载程序和文件系统来管理数据对我来说毫无意义。此外,谷歌拥有大量包含错误下载软件的应用程序的政策是愚蠢的。希望 Google 的某个人能够获得他们的 Google-Play 商店,以便它能够可靠地下载人们编写的应用程序。

也许有人可以很快看出我做错了什么(除了明显的错误,那就是浪费了我的时间来制作 Android 应用程序)。关于如何继续调试这种混乱的建议也会有所帮助。抱歉让我有点不开心。

【问题讨论】:

  • 呃...有 tl;dr 版本吗?
  • 您介意将您的问题简化为要点吗?要经历很多事情。
  • 我对您的建议是将您的数据压缩到 50Mb apk 限制以下,这样您就不必担心下载扩展包,如果这是您的应用程序太复杂和麻烦第一个安卓项目。将 x 和 y 中所有图片的分辨率减半应该会减少 75% 的大小,然后将 JPEG 压缩率提高 5%,然后您将大小从 250 Mb 减少到 50。作为奖励,您的用户会感谢您使用更少的文件空间。

标签: android android-studio android-download-manager download-manager


【解决方案1】:

如果您使用最新的 Android 软件 (Lollipop),目前无法从 Google-Play 商店下载大小超过 50Meg 的应用程序。此故障的一个症状是消息

“IllegalArgumentException:服务意图必须是明确的”

当您的应用崩溃时,在转储顶部附近。

您可以通过在许可/util/LicenseChecker 中大约第 159 行找到 Intent 代码来解决此问题。将该代码更改为:

     Intent serviceIntent = new Intent(
     new String(Base64.decode("Y29tLmFuZHJvaWQudmVuZGluZy5saWNlbnNpbmcuSUxpY2Vuc2luZ1NlcnZpY2U=")));
     serviceIntent.setPackage("com.android.vending");

     boolean bindResult = mContext
             .bindService(
               serviceIntent,
               this, // ServiceConnection.
               Context.BIND_AUTO_CREATE);

有关此更改的信息可在此网络文章中找到:
https://code.google.com/p/android-developer-preview/issues/detail?id=1674

这可能不是唯一的问题。但这至少是一个问题。

【讨论】:

    【解决方案2】:

    您做错的第一件事就是将所有数据粘贴到您的应用中。它应该从网上下载,缓存到文件系统。将这么多数据下载给所有用户是荒谬和不合理的。

    第二个问题——你似乎不想写软件。你似乎想成为一名设计师。您想抛开所有真正的问题,让您的梦想神奇地实现为“应用程序”。你似乎没有意识到所有的脏活都是每个应用程序所做的 99%。

    第三,你似乎没有弄清楚 logcat。每当您收到“应用程序已停止”消息时,都会将导致它的异常写入 logcat。它会准确地告诉您它在哪条线路上崩溃以及为什么。如果你没有发现你对 android 环境进行了零研究,因为它是任何关于如何调试 android 的教程中提到的第一件事。

    【讨论】:

      最近更新 更多