我有一个bash脚本,基本上调用蚂蚁编译Android应用程序源码树,然后使用adb在连接的Android设备上安装和启动应用程序。建立Android与Mac OS X下的蚂蚁和“应用程序未安装”
bash脚本有很多选项,但它基本上编辑AndroidManifest.xml和strings.xml来更改软件包和应用程序名称,然后发出“android更新项目”。最后是“蚂蚁释放”。下面是相关片段:
if [ "$NEWPACKAGENAME" != "" ] ; then
echo >> AndroidManifest.xml # the loop below looses the last line,
# so we ensure that's a useless line
cat AndroidManifest.xml |
(while read ROW ; do
IS_PACKAGE_ROW=`echo $ROW | grep 'package=' | wc -l` ;
if [ $IS_PACKAGE_ROW -gt 0 ] ; then
echo " package=\"$NEWPACKAGENAME\"" >> AndroidManifest-np.xml
else
echo "$ROW" >> AndroidManifest-np.xml
fi ;
done
)
mv AndroidManifest-np.xml AndroidManifest.xml
fi
if [ "$APPNAME" != "" ] ; then
echo >> res/values/strings.xml # the loop below looses the last line,
# so we ensure that's a useless line
cat res/values/strings.xml |
(while read ROW ; do
IS_NAME_ROW=`echo $ROW | grep '<string name="app_name">' | wc -l` ;
if [ $IS_NAME_ROW -gt 0 ] ; then
echo "<string name=\"app_name\">$APPNAME</string>" >> res/values/strings-nn.xml
else
echo "$ROW" >> res/values/strings-nn.xml
fi ;
done
)
mv res/values/strings-nn.xml res/values/strings.xml
fi
rm -f bin/*.ap_* bin/*.apk*
$ANDROID update project -p .
$ANT release
该脚本在GNU/Linux的伟大,它创建的apk文件,它安装通过亚行的文件,同样的apk文件可以通过复制或手动安装在设备上将其下载到设备(开发人员选项中的未知来源显然已经激活)。
但是,在MacOS X下它有一个问题:只有通过“adb install”(由脚本本身或手动运行)安装,才能生成apk文件。如果我尝试手动将apk文件复制或下载到Android设备,我的意思是在MacOSX下运行时由脚本生成的apk文件,设备会询问常见的确认信息,但接着显示“应用程序未安装”。
我已经阅读了关于“应用程序未安装”问题的几个问题,答复似乎指向AndroidManifest.xml方向(重复活动等),但我不明白这是怎么回事在我的情况下,因为脚本与Linux下一样,并且在发布“adb install”命令时也可以在MacOS X下工作(所以apk必须是有效的)。
其他的东西已经尝试过/验证:
- 尝试安装新的 版本之前移除从设备上的应用程序
- 签名密钥始终是相同的,而不是调试一个 (但是设备前面的情况下,抱怨我用不同的 签名)
- 下载APK从http或作为电子邮件附件
- 跳舞片剂周围有祖传运动同时试图安装...
第四次工作了一次(令我惊讶)。但只有一次,那么再也不会。我不知道我那时做了什么不同,祖先跳舞。啊,是的,我已经删除完全无关的应用程序,然后再安装它...删除了一些它们。不用说,删除不相关的应用程序对其他时间没有帮助。除此之外,我再也没有重新安装过它们......
有什么建议吗?