zoukankan      html  css  js  c++  java
  • 解决 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:ProgramToolsadt-bundle-windows-x86_64-20130917sdkuild-tools17.0.0aapt.exe" package -f -M "C:UsersxxxDesktopD_XE5_Android_BrowserAndroidDebugHadesAndroidBrowserAndroidManifest.xml" -F "C:UsersxxxDesktopD_XE5_Android_BrowserAndroidDebugHadesAndroidBrowserinHadesAndroidBrowser-unsigned.apk" -I "G:ProgramToolsadt-bundle-windows-x86_64-20130917sdkplatformsandroid-7android.jar" -S "C:UsersxxxDesktopD_XE5_Android_BrowserAndroidDebugHadesAndroidBrowser es" -A "C:UsersxxxDesktopD_XE5_Android_BrowserAndroidDebugHadesAndroidBrowserassets" "C:UsersxxxDesktopD_XE5_Android_BrowserAndroidDebugHadesAndroidBrowserlibrary" "C:UsersxxxDesktopD_XE5_Android_BrowserAndroidDebugHadesAndroidBrowserclasses"' (Error 1)

    这是从XE5的Build输出里输出的,我过去一看,没有生成apk(这不是废话...生成了还报错...)

    但是,它没给原因啊,于是,我就复制到CMD中亲自执行了一下,发现报错如下:

     
    1 C:UsersxxxDesktopD_XE5_Android_BrowserAndroidDebugHadesAndroidBrowserAndroidManifest.xml:20: error: No resource identifier found for attribute 'largeHeap' in package 'android'
    2 C:UsersxxxDesktopD_XE5_Android_BrowserAndroidDebugHadesAndroidBrowserAndroidManifest.xml:23: error: No resource identifier found for attribute 'restoreAnyVersion' in package 'android'
    3 C:UsersxxxDesktopD_XE5_Android_BrowserAndroidDebugHadesAndroidBrowserAndroidManifest.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的编程吧~~~

  • 相关阅读:
    lua module
    lua require
    lua io
    lua table2
    lua table1
    【leetcode】魔术排列
    【leetcode】速算机器人
    【leetcode】黑白方格画
    【leetcode】根据数字二进制下 1 的数目排序
    【leetcode】插入区间
  • 原文地址:https://www.cnblogs.com/tc310/p/3934229.html
Copyright © 2011-2022 走看看