【问题标题】:app-inventor: install apps onto SD cardapp-inventor:将应用程序安装到 SD 卡上
【发布时间】:2012-07-10 17:38:27
【问题描述】:

[在提问一周后编辑显示当前游戏状态]

我深入研究了应用程序发明者,因为我的孩子(10 岁和 12 岁)即将获得他们的第一部 Android 手机,并且已经完成了一些拖放编程(游戏制作者),所以我认为这对他们来说可能是一个很好的切入点.

我现在已经自己和应用程序发明者一起编写了 5 个应用程序,并在我的手机上安装了 4 个,但我无法安装第 5 个,因为我显然“内存不足”,尽管 SD 卡上有 3 个免费演出电话。

好的,怎么回事?设置->应用程序->管理应用程序并没有削减它,因为“移动到 SD 卡”选项在 appinventor 应用程序上是灰色的。

我将我的第 5 个应用程序打包为 apk,然后将其解压缩以查看 AndroidManifest.xml,但它不是纯文本:-/

不适合我的解决方案:

(1) “等待”

(2)“根您的手机,然后...”

(3)“从你的手机内存中删除一些东西”[解决方法,而不是解决方案]

(4)“购买此产品然后...”


好的,这里有一个更新。我仍然没有设法解决这个问题。这是我到目前为止所做的。

1) 我在 appinventor 中创建了一个名为“test123”的应用程序,带有一张图片和一个按钮(什么都不做)。

2) 我创建了一个 apk,并将其粘贴在我的网站上:您可以在 this link 看到它。任何想要下载并在手机上运行它的人,只要他们的手机上有 4 兆左右的可用内存即可。据我所知,他们无法将其下载到他们的 SD 卡上。因此,让我澄清一下,挑战在于将链接中的那个应用程序安装到手机 SD 卡上。

好的,让我们试试吧!

3)我把apk放在一个linux盒子上,下载apktool,然后运行

apktool d test123.apk

经过一点点 baksmaling,我现在有了一个目录 test123 。

4) 我移动到目录 test123 ,在其中找到了一个文件 AndroidManifest.xml 。我编辑了这个文件;前几行是

<?xml version="1.0" encoding="utf-8"?>
<manifest android:versionCode="3" android:versionName="1.5" package="appinventor.ai_************.test123"
  xmlns:android="http://schemas.android.com/apk/res/android">

[我用 ***s 审查了我的 gmail 地址]

我把它们改成了

<?xml version="1.0" encoding="utf-8"?>
<manifest android:versionCode="3" android:versionName="1.5" package="appinventor.ai_************.test123"
  xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal">

5)我进入旧apk所在的目录(即包含目录test123的目录)并输入

apktool b test123

经过一些小动作后,程序终止了。

6) 我换了目录

test123/dist

我在其中找到了一个新的 .apk 文件,也称为 test123.apk 。我把它放在我的网站here 上。请注意,apk 的“之前 apktools”和“之后 apktools”版本具有完全相同的名称 - test123.apk 。

7) 我现在将“after”文件(由 apktool b 创建的版本)下载到 Windows 机器上,并用 7-Zip 打开它(切换到 Windows 只是为了使用建议的精确程序答案)。我找不到建议我删除的文件。我明白了

AndroidManifest.xml
classes.dex
resources.arsc
assets/smallkez.png
res/drawable/ya.png

就是这样。


总之,我似乎在 DarkXphenomenon 解决方案的第 5 步失败了(在撰写本文时)。如果我将“after”文件下载到手机上并尝试安装它,我会收到令人难以置信的信息错误“!未安装应用程序”,我唯一的选择是单击“完成”。

不幸的是,我仍然不知道我是否在尝试做不可能的事情,即谷歌搜索是否会导致人们找到过去有效但不再有效的解决方案,或者我是否只是错过了一些愚蠢的事情。

这对我来说是一个根本性的问题!我的手机开箱即用,有大约 21 兆的可用内存,而我的 sd 卡有千兆字节和千兆字节。

【问题讨论】:

  • DarkXPhenomenon 的回答显示了我哪里出错了。使用 apktools 重新打包 apk 后,需要签名。我设法用 sign+ 签名,现在我的 SD 卡上安装了一个 appinventor 应用程序。非常感谢 DarkXPhenomenon。

标签: android android-sdcard app-inventor


【解决方案1】:

问题本身: 移动到 sd 卡选项显示为灰色。

解决方案:

目前,app-inventor 本身还不支持安装到外部 SD 功能。 因此,您面临的问题是显示此内容的应用程序。

这种方法确实有效。我测试过了!我还将我使用的所有工具上传到我的 Google Drive 帐户以便于下载。

test_orig.apk 是来自 app-inventor 的原始文件。

步骤 1. 使用 apktool 反编译 APK。它可以在windows下使用apktool完成。 This是我在windows下使用的存档。无需对源进行解码即可编辑清单。因此,使用的命令是apktool d -s test_orig.apk

第 2 步。 这将在包含 apktool 的同一目录中创建名为 test_orig 的文件夹。此目录中是文件夹AndroidManifest.xml。在文本编辑器中打开它并更改以下行。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"  ...android:installLocation="preferExternal">

第 3 步。 是时候使用 apktool b test_orig 重新编译 apk

第 4 步。 现在,是时候签署它了。使用Sign+ 可以轻松签名。 只需添加 apk,它就会输出一个签名副本。不需要做其他任何事情。

第 5 步。 您已签名的 apk 已准备好安装。 记得卸载你的旧apk,否则你会看到一个错误,上面写着Application Not Installed: An existing package with a conflicting signature exists.

END结果:

签名的应用程序可供下载here

【讨论】:

  • 这个答案显然是在赢得比赛的路上很好,但它还没有为我解决问题。首先,您在上面写的内容有错别字,或者我误解了一些东西:“apktool -s xyz.apk”是语法错误,我认为我们想要“apktool d -s xyz.apk”。其次,在 AndroidManifest.xml 中根本没有提到 android:installLocation 。我将 xml 文件的第二行从 '
  • apktool d xyz.apk 应该可以正常工作。我已经改变了我的答案。现在应该可以工作了。
  • @KevinBuzzard 当您收到“未安装应用程序”时,您是否在设备上安装了以前版本的 apk?如果是这样,请尝试不使用,这两个 apk 可能使用不同的密钥签名,这将导致此错误。
  • @Tim:是的,可能!尽管有 3 个孩子,但有时间考虑应用程序时会回复您:-/
  • 好吧,还在苦苦挣扎:-/ 我制作了一个新的虚拟应用程序,它只显示了一张图片。我做了步骤 1--4 。我假设新的 apk 是出现在我解压旧 apk 时出现的文件夹的 dist 子目录中的那个。但是使用 7-zip 打开(甚至解压缩)它似乎表明没有 META-INF 文件夹。顺便说一句,还有其他人设法真正让它发挥作用吗?
【解决方案2】:

这似乎是一个已知问题:

http://code.google.com/p/app-inventor-for-android/issues/detail?id=186

这个帖子中有人说他们找到了解决方案,但如果我不得不猜测,我猜他们使用的解决方案是在 apk 文件中的清单被混淆之前。

很遗憾,我认为目前没有(简单的)方法可以将应用程序移至 SD 卡。

可能值得在MIT app inventor forums 上发布此问题

【讨论】:

  • 是的,这是一个已知问题,但在我看来,在该线程上询问如何解决它并不像在这个论坛上询问如何解决它那样富有成效! Tim——你如何看待 DarkXphenomenon 使用 apktool 的想法?我还没有让它工作,但你认为这听起来合理吗?我不知道是坚持下去还是等待更多的cmets/answers。
  • 这对我来说似乎是合理的,但我从未尝试过,所以我不能确定。
  • 我终于有时间尝试了,但我失败了 :-/ 我有点惊讶这对更多人来说并不是更高的优先级。还是没有人使用appinventor??其他 10 岁的极客是如何编写 Android 应用程序的??
  • @KevinBuzzard 我喜欢 AppInventor 的想法。我只用过几次,但如果我和那个年龄段的孩子一起工作,我肯定会用它。如果他们设法将它带到您可以使用 AppInventor 构建的位置,然后将项目导入 eclipse 并对其进行更改,我会全力以赴。因为这是不可能的,我认为它主要局限于教育环境,而且大多数时候我认为将应用程序移动到 SD 卡等问题并不重要。不过我确实认为这是一个很好的问题,我希望 DarkXphenoms 的新答案能为您解决!
【解决方案3】:

我需要经常挂在这里...

有两个第三方应用程序可让您编辑 mainfest。他们通过拆开 apk 并获取清单来完成您的工作,以便您对其进行编辑。

我发了新版ai4a App Inventor http://sourceforge.net/projects/ai4a-configs/files/V1.2/

它将清单保存在您的临时文件夹中,您可以在其中对其进行编辑,然后使用您编辑的清单重建 apk。我还没有测试安装到 sd 卡上(我在 Google TV 上放了一些 App Inventor 应用程序只是为了看看它是否工作 ;-))。如果您在 ai4a 服务器上试用,请务必告知我们。

这里是我们谈论服务器的地方https://groups.google.com/forum/?hl=en#!forum/ai4a

这里是支持https://groups.google.com/forum/?hl=en#!forum/usgsuacwai

加里

【讨论】:

猜你喜欢
  • 2013-01-11
  • 1970-01-01
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
  • 2013-03-05
  • 1970-01-01
  • 2011-12-12
  • 1970-01-01
相关资源
最近更新 更多