解決 Delphi XE5 寫Android程序的No resource identifier found for attribute... 錯誤【轉】


原文: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的編程吧~~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM