关于realarm210 realarmTest.apk不能直接安装问题解决方法
在使用real210開發(fā)板時(shí)可能會(huì)遇到這個(gè)問題,realarmTest.apk無法通過adb、手機(jī)助手、從SD卡安裝。
用adb方式安裝時(shí)出現(xiàn)這樣的錯(cuò)誤Failure [INSTALL_FAILED_INVALID_INSTALL_LOCATION]
用手機(jī)助手和從SD安裝時(shí)是無法發(fā)送和無法安裝的錯(cuò)誤。
這樣安裝不行的原因是,realarmTest.apk是要使用系統(tǒng)權(quán)限,android對于底層調(diào)用比較嚴(yán)格,所以這個(gè)apk無法使用常規(guī)方法安裝。
解決方法是不使用adb install命令安裝,換成adb push命令安裝,adb push命令格式為:adb push 要發(fā)送的文件名 開發(fā)板的文件目錄,要實(shí)現(xiàn)安裝需要push到system/app目錄下。
舉例說:加入在pc端當(dāng)前目錄下要發(fā)送realarmTest.apk文件,那么命令是adb push realarmTest.apk /system/app,發(fā)送完成后,android系統(tǒng)會(huì)自動(dòng)安裝這個(gè)應(yīng)用。
相對于adb install安裝這里只是改成了adb push方式,并沒有增加什么工作量。
下面說下兩種編譯這個(gè)realarmTest.apk目標(biāo)文件的方法。
一個(gè)是在原目錄樹下使用mm命令編譯。關(guān)于mm命令參考博客http://blog.csdn.net/wang_shuai_ww/article/details/21379403
realarmTest.apk的源碼在源目錄樹下/packages/apps/realarmTest,首先進(jìn)入該源碼目錄,cd?/packages/apps/realarmTest然后使用mm命令進(jìn)行編譯即可,編譯完成后會(huì)在out/target/product/generic/system/app/這個(gè)路徑下生成需要的apk文件。
如果你用的是沒有動(dòng)過的源碼,那么out/target/product/generic/system/app/這個(gè)路徑下應(yīng)該會(huì)有兩個(gè)文件,一個(gè).apk一個(gè)是.odex文件,用資源管理器打開apk時(shí)發(fā)現(xiàn)里面缺少文件classes.dex,當(dāng)然了這個(gè)apk也是無法安裝的。
解決方式是,打開/build/core/package.mk文件找到這一行LOCAL_DEX_PREOPT := true,然后修改成LOCAL_DEX_PREOPT := false即可,重新編譯即可得到我們需要的完整apk了(注意要?jiǎng)h除out/target/product/generic/system/app目錄下之前的apk文件,否則不會(huì)生成新的完整apk的)。
另外 一個(gè)方法就是使用eclipse來進(jìn)行編譯了
該方法能夠通過編譯,但是安裝后顯示是不太正常的,推薦使用上一中方法。
這里貼上顯示問題的圖片:
另外使用該方法還需要使用系統(tǒng)簽名工具,所以挺麻煩的,用mm命令在目錄樹下編譯還方便些。
下面給出在eclipse下搭建該工程以及設(shè)置,并解決上面的顯示問題。
首先找到該realarmTest.apk源碼,位置/packages/apps/realarmTest,把realarmTest整個(gè)目錄拷貝到用戶的目錄,然后打開eclipse使用file->import命令選擇導(dǎo)入android外部的代碼工作目錄,如下圖:
然后瀏覽到剛才拷貝的源碼目錄點(diǎn)擊finish即可。
添加完成后eclipse應(yīng)該會(huì)創(chuàng)建一些其他的folder,其中有一個(gè)是我們工程不需要的如下圖所示,并按照下圖所示的操作把該folder刪除,不刪除會(huì)報(bào)錯(cuò)
之后就可以編譯了。完成后在realarmTest/bin下就有打包的apk文件了,當(dāng)然這個(gè)apk是不能使用的,對android工程的AndroidManifest.xml這個(gè)文件需要修改,添加一行代碼,如下圖所示
即添加<supports-screens android:largeScreens="true"/>這一行,原因是開發(fā)板的屏幕在android看來屬于高分辨率,所以這里的largeScreens屬性設(shè)置為true,那么android系統(tǒng)就會(huì)正確識(shí)別圖片并能按預(yù)定的比例正確顯示了。
修改完成后,重新編譯,在bin目錄下得到apk文件。前面說了,該apk需要系統(tǒng)權(quán)限,所以需要進(jìn)行系統(tǒng)簽名才可正常使用。下面說明怎么對這個(gè)apk進(jìn)行系統(tǒng)簽名。
要用到的工具為signapk.jar位置在/out/host/linux-x86/framework/。有了這工具我們還需要兩個(gè)簽名文件platform.pk8和platform.x509.pem,位置在build\target\product\security然后把要簽名的apk、簽名工具、platform.pk8和platform.x509.pem都放到一個(gè)目錄下,在終端輸入命令:java -jar signapk.jar platform.x509.pem platform.pk8 ./realarmTest.apk ./realarmTest_sign.apk即可完成簽名,得到的realarmTest_sign.apk即可通過push命令安裝在開發(fā)板上了。
為了方便我做了一個(gè)文件和一個(gè)腳本,在終端直接運(yùn)行腳本即可在我做的這個(gè)文件夾下得到簽名后的apk,如果連接了開發(fā)板的話,把該腳本的最后一行打開即可直接安裝。
文件下載地址為:http://yunpan.cn/QIsqBv2vbXIqz
當(dāng)出現(xiàn)這個(gè)提示時(shí):Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.請檢查下圖所示部分是否刪除:
總結(jié)
以上是生活随笔為你收集整理的关于realarm210 realarmTest.apk不能直接安装问题解决方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4.0 编译apk中无classes.d
- 下一篇: 编译tslib1.4出现错误undefi