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