原文:http://www.hxhlb.cn/article/32142aaeb67bbc05379369c3.html
那一天,我裝上了RAD Studio XE5.
當天晚上,我就寫了一個小小的Android程序.
但是,苦於沒有好手機,沒辦法進行測試.
今天,下載了一晚上,終於把Android所有的sdk都安裝上了,配置進XE5中
唉,用這么龐大的XE5來編寫Android SDK 2.1版本的程序,我都覺得害羞...
廢話不多說,下面我們來解決問題.
XE5自帶的SDK,是SDK4.2,我把在4.2版本下寫的程序放到2.1版本上進行編譯發布,理所當然的報錯了.
首先,是這么一個錯誤:(我把我路徑的一部分替換掉了,大家理解一下意思即可)
1 |
[PAClient Error] Error: E2312 Unable to execute '"G:\ProgramTools\adt-bundle-windows-x86_64-20130917\sdk\build-tools\17.0.0\aapt.exe" package -f -M "C:\Users\xxx\Desktop\D_XE5_Android_Browser\Android\Debug\HadesAndroidBrowser\AndroidManifest.xml" -F "C:\Users\xxx\Desktop\D_XE5_Android_Browser\Android\Debug\HadesAndroidBrowser\bin\HadesAndroidBrowser-unsigned.apk" -I "G:\ProgramTools\adt-bundle-windows-x86_64-20130917\sdk\platforms\android-7\android.jar" -S "C:\Users\xxx\Desktop\D_XE5_Android_Browser\Android\Debug\HadesAndroidBrowser\res" -A "C:\Users\xxx\Desktop\D_XE5_Android_Browser\Android\Debug\HadesAndroidBrowser\assets" "C:\Users\xxx\Desktop\D_XE5_Android_Browser\Android\Debug\HadesAndroidBrowser\library" "C:\Users\xxx\Desktop\D_XE5_Android_Browser\Android\Debug\HadesAndroidBrowser\classes"' (Error 1) |
這是從XE5的Build輸出里輸出的,我過去一看,沒有生成apk(這不是廢話...生成了還報錯...)
但是,它沒給原因啊,於是,我就復制到CMD中親自執行了一下,發現報錯如下:
1 |
C:\Users\xxx\Desktop\D_XE5_Android_Browser\Android\Debug\HadesAndroidBrowser\AndroidManifest.xml:20: error: No resource identifier found for attribute 'largeHeap' in package 'android' |
2 |
C:\Users\xxx\Desktop\D_XE5_Android_Browser\Android\Debug\HadesAndroidBrowser\AndroidManifest.xml:23: error: No resource identifier found for attribute 'restoreAnyVersion' in package 'android' |
3 |
C:\Users\xxx\Desktop\D_XE5_Android_Browser\Android\Debug\HadesAndroidBrowser\AndroidManifest.xml:23: error: No resource identifier found for attribute 'installLocation' in package 'android' |
哎呀,看了這個我真是一個腦袋兩個大啊.
無奈,只好去搜搜這些是什么東西去了.
先搜了第一個:largeHeap,我這個英文差啊,不知道字面上是什么意思,但是度娘說了,在android中,這表示單個進程內存分配的一個屬性.在3.0以上版本都支持.
我就明白了,我說在高版本的SDK上不報錯,在我2.1上就報錯,原來是新特性啊.
但是怎么去掉呢?
這次沒百度着,換了谷歌繼續,在官網上發現了這么一段話:(網址:http://www.embarcadero.com/starthere/xe5/mobdevsetup/android/en/preparing_an_android_application_for_deployment.html )
大概意思是說,如果你要發布你的Android程序,你就要進行一些設置,在 工程-->選項 里進行設置.
.....
RAD Studio會根據一個叫AndroidManifest.template.xml的文件,生成AndroidManifest.xm的文件
看到這里,我就去看了下AndroidManifest.xml,發現,在這個xml文件中真的有定義這些屬性:
這不就好辦了,直接刪除這幾行.
然后清理,編譯,發布.
哈哈,果然沒錯了!
程序編譯出來了.
下面就開始安裝吧!我直接插上手機,進行運行了.
但是,高興的太早了.雖然編譯成功了,但是在安裝的時候卻出錯了:
1 |
[INSTALL_PARSE_FAILED_NO_CERTIFICATES] |
這個意思是說,我的簽名好像不對.
真崩潰了,這怎么辦.還是找度娘吧.
別說,還真找出來了.在這里(http://androiddevelopertutorial.com/fixing-install_parse_failed_no_certificates-android-jdk7 )
說是,JDK1.7和Android有些不兼容.我想,哎呀真是手賤啊!
自己就是卸載的jdk1.6換的jdk1.7啊,這不是自己給自己找麻煩嘛!
他說的解決方案,是給 jarsigner加個參數.
本來我是想直接改XE5的配置的,不過找了半天沒找到,自己也懶得手動加.
然后就又去逛了一下RAD的官網,果然,又被我發現了!
RAD說,只要你選的配置為Release,就能使用沒有簽名的apk.(http://docwiki.embarcadero.com/RADStudio/XE5/en/Deploying_Your_Unsigned_Android_Application)
那好辦,反正AndroidManifest.template.xml已經修改過了,換個配置無所謂了.
果然,換了配置之后,一切都好起來了:
下圖是我安裝成功之后XE5的截圖:
可能你會看不清最右邊的配置,不過,我會提供給你我的工程代碼,你用XE5打開就知道是什么情況了!
下面是程序的截圖:
怎么樣,程序還不錯吧~~
項目下載地址: http://www.hxcarrot.com/Download/HadesAndroidBrowser_2.1.rar
一起來享受Android的編程吧~~~