解决 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的编程吧~~~
解决 Delphi XE5 写Android程序的No resource identifier found for attribute... 错误【转】的更多相关文章
- Delphi XE5开发Android程序使用自定义字体文件.
万事大吉,只欠根据字体文件(.ttf文件)切换阅读字体,通常Android系统只带三种以下字体.一般用Java/Eclipse开发的话比较简单,typeface的createFromAsset,cre ...
- Delphi XE5 for Android (八)
delphi xe5 编译的程序在启动时会有短暂的黑屏出现,这个现象产生是因为启动首个activity时会加载一些初始化数据,整个时间大约在2~3秒,如何处理? 网上有些资料,这里主要参考和整理了CS ...
- 【百度地图-安卓SDK】从头开始写android程序
[百度地图-安卓SDK]从头开始写android程序首先确保有这四个文件 安装jdk先安装android开发SDK(并不只是为eclipse服务的),即运行installer_r15-windo ...
- Delphi XE5的Android开发平台搭建[转]
Delphi XE5支持Android ARM的开发,可以在Android虚拟机里运行,因此建议将XE5安装在64bit的Windows,内存可以大于3GB Delphi XE5安装光盘中包含了最基本 ...
- Delphi XE5 for Android (一)
Delphi XE5 出来了,支持Android的开发,试用了一下,有几个问题: 1.只支持ARM7的设备,不支持Inter设备.手上刚好有一个华硕K004,很遗憾用不上,只能用手机试了. 2.要支持 ...
- Delphi XE5的Android开发平台搭建
Delphi XE5支持Android ARM的开发,可以在Android虚拟机里运行,因此建议将XE5安装在64bit的Windows,内存可以大于3GB Delphi XE5安装光盘中包含了最基本 ...
- 用C++写android程序(包含界面+发短信)
首先为什么要用C++写android程序呢?主要是因为java写的android程序太容易被发编译,相对于java编译后的dex文件,底层的native so更加不容易被反编译,所以为了安全起见,可以 ...
- No resource identifier found for attribute 'showAsAction' in package 'android'
运行一个项目时在一个menu.xml文件item属性android:showAsAction 报错 No resource identifier found for attribute 'showAs ...
- Error:(108) No resource identifier found for attribute 'style' in package 'android'
Error:(108) No resource identifier found for attribute 'style' in package 'android' 解决方案: 这是错误的写法: a ...
随机推荐
- MT【201】折线计数
甲乙两人参加竞选,结果甲得n票,乙得m票(n > m) . 则在唱票过程中,甲的累计票数始终超过乙的累计票数的概率是_____________. 答案:$\dfrac{n-m}{n+m}$
- 【转】如何在您的PCB大作上添加二维码?
开篇先给大家来段新闻截选: “8月20日,新加坡总理李显龙在国庆群众大会上演讲时,称中国移动支付(电子支付)领先全球,新加坡的移动支付还很落后,上海路边摊都有移动支付,新加坡人去上海就像乡巴佬. 这番 ...
- luogu2679 [NOIp2015]子串 (dp)
设f[i][j][k][b]表示在A串第i位.这是第j组.B串第k位.i号选不选(b=0/1) 那么就有$f[i][j][k][1]=(A[i]==B[k])*(f[i-1][j-1][k][0]+f ...
- 关于http请求时 安全协议问题 PKIX path building failed 解决办法
该问题的解决办法 1.在请求前需要将证书导入,不推荐 2.绕开安全协议处理 下面的代码时一段http请求并且绕开安全协议.可直接使用 /** * * @param url 需要请求的网 ...
- CronExpression
CronTrigger CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表.CronTr ...
- Redis的持久化数据
Redis支持两种持久化:RDB和AOF模式 一.名词解释: RDB:持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot).AOF:持久化记录服务器执行的 ...
- Dom选择器--内容文本操作
一.文本内容操作 内容: <body> <div id="i1"> 学习是我快乐? <a>晚饭吃什么</a> </div> ...
- spring cloud微服务架构 服务提供者和服务消费者
服务提供者和服务消费者 下面这张表格,简单描述了服务提供者/消费者是什么: | 名词 | 概念 | | ----- | ----------------------- | | 服务提供者 | 服务 ...
- Spark记录-本地Spark读取Hive数据简单例子
注意:将mysql的驱动包拷贝到spark/lib下,将hive-site.xml拷贝到项目resources下,远程调试不要使用主机名 import org.apache.spark._ impor ...
- unp的hello word
最近无聊,再学学unp吧.学学网络编程.下面是一个demo: intro/daytimetcpcli.c #include "unp.h" int main(int argc, c ...