我有一個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或作爲電子郵件附件
- 跳舞片劑周圍有祖傳運動同時試圖安裝...
第四次工作了一次(令我驚訝)。但只有一次,那麼再也不會。我不知道我那時做了什麼不同,祖先跳舞。啊,是的,我已經刪除完全無關的應用程序,然後再安裝它...刪除了一些它們。不用說,刪除不相關的應用程序對其他時間沒有幫助。除此之外,我再也沒有重新安裝過它們......
有什麼建議嗎?