繁体   English   中英

app-inventor:将应用程序安装到SD卡上

[英]app-inventor: install apps onto SD card

[被编辑为在提出问题后一周显示当前的比赛状态]

我钻研了应用发明家,因为我的孩子(10岁和12岁)即将获得他们的第一款Android手机,并且已经完成了一些拖放编程(游戏制作人)的工作,因此我认为这对他们来说可能是一个很好的切入点。

现在,我已经使用App Inventor自己编写了5个应用程序,并在手机上安装了4个应用程序,尽管手机上的SD卡上有3G可用空间,但显然我“内存不足”,因此无法安装第5个应用程序。

好的,这是怎么回事? 设置->应用程序->管理应用程序不会删除它,因为appinventor应用程序上的“移至SD卡”选项为灰色。

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

不适合我的解决方案:

(1)“等待”

(2)“先根电话,然后...”

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

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


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

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

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

好的,让我们尝试!

3)我将apk放在Linux盒子上,下载了apktool ,然后运行

apktool d test123.apk

经过一些琐碎的工作之后,我现在有了一个目录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">

[我用***审查了我的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。 我把它放在我的网站在这里 请注意,apk的“ before apktools”和“ after 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步(撰写本文时)失败了。 如果我将“之后”文件下载到手机上并尝试安装,则会收到令人难以置信的错误信息:“!未安装应用程序”,我唯一的选择是单击“完成”。

不幸的是,我仍然不知道我是否在尝试解决不可能的事情,即是否通过谷歌搜索使人们找到了曾经有效但不再可行的解决方案,或者我是否只是在失去一些愚蠢的东西。

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

问题本身 :移至sd卡选项为灰色。

问题

解:

目前,app-inventor本身尚不支持安装到外部SD功能。 因此,您遇到的问题是一个显示此问题的应用程序。

这种方法确实有效。 我测试了! 为了方便下载,我还将所有我使用过的工具上传到了我的Google云端硬盘帐户。

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

步骤1.使用apktool反编译APK。 可以使用apktool在Windows下完成。 是我在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.

最终结果:

结束

已签名的应用程序可在此处下载。

看来这是一个已知问题:

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

该线程中的某人说他们找到了解决方案,但是如果我不得不猜测,我可能会猜测他们使用的解决方案是在清单文件被混淆到apk文件之前。

不幸的是,我认为目前没有(简便)方法可以将应用程序移动到SD卡。

可能值得在MIT应用程序发明者论坛上发布此问题

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

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

我提出了一个新版本的ai4a App Inventor http://sourceforge.net/projects/ai4a-configs/files/V1.2/

它将清单保存在您的temp文件夹中,您可以在其中进行编辑,然后使用编辑后的清单重建apk。 我尚未测试过安装到sd卡上的情况(我只是将某些App Inventor应用程序放到Google TV上以查看其工作原理;-)。 如果您尝试使用ai4a服务器,请确保让我们知道。

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

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

加里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM