我正在尝试从源代码构建Android Permission Explorer。我查看了svn checkout http://android-permission-explorer.googlecode.com/svn/
。结账后我在项目中添加了一个基本build.xml
,然后放入终端:
$ /usr/local/bin/ant release
...
-compile:
[javac] Compiling 14 source files to .../android-permission-explorer/bin/classes
[javac] .../android-permission-explorer/src/com/carlocriniti/android/permission_explorer/ApplicationDetail.java:7: error: unmappable character for encoding UTF-8
[javac] * Activit� d'affichage du d�tail d'une application
...
错误为unmappable character for encoding UTF-8
。
以下是ApplicationDetail.java
中的违规行(自评论以来对我没有意义):
/*
* Projet : Permission Explorer
* Auteur : Carlo Criniti
* Date : 2011.06.10
*
* Classe ApplicationDetail
* ActivitÈ d'affichage du dÈtail d'une application
* avec les permissions qu'elle utilise
*/
这样有多个错误。如果/usr/local/bin/ant release 2>&1 | grep -i error | wc -l
是准确的,则其中有103个。
问题:为什么评论中的字符会影响构建?
我在Writing a Simple Buildfile和Property Task处理过ant的文档,但是如果我能弄清楚如何设置源文件语言那该死的。
问题:如何在build.xml
中设置源文件语言?
答案 0 :(得分:1)
即使它们在注释中,无效字符也会导致编译器错误:源代码通常在转换为字节码之前预处理,并且编译器刚刚遇到未映射到其的字符字符集。
最简单的方法是编辑源文件并以UTF-8编码保存。由于这是一个评论,因此删除角色也可能不会受到伤害。
答案 1 :(得分:1)
Manouti为Java没有忽略评论的原因提供了答案。关于我可以对Java说的所有内容是: 愚蠢的想法 。他们用不应该编译的东西打破了编译过程。
要解决此问题,javac
需要通过java.encoding
指定的编码。最简单的方法如下:
$ /usr/local/bin/ant -Djava.encoding=ISO-8859-1 release
Buildfile: …/android-permission-explorer/build.xml
-set-mode-check:
-set-release-mode:
-release-obfuscation-check:
[echo] proguard.config is ${proguard.config}
-pre-build:
-check-env:
[checkenv] Android SDK Tools Revision 24.0.2
[checkenv] Installed at /opt/android-sdk-macosx
-setup:
[echo] Project Name: Permission Explorer
[gettype] Project Type: Application
-build-setup:
[getbuildtools] Using latest Build Tools: 21.1.2
[echo] Resolving Build Target for Permission Explorer...
[gettarget] Project Target: Android 2.2
[gettarget] API level: 8
[echo] ----------
[echo] Creating output directories if needed...
[mkdir] Created dir: …/android-permission-explorer/bin/rsObj
[mkdir] Created dir: …/android-permission-explorer/bin/rsLibs
[echo] ----------
[echo] Resolving Dependencies for Permission Explorer...
[dependency] Library dependencies:
[dependency] No Libraries
[dependency]
[dependency] ------------------
[dependency] API<=15: Adding annotations.jar to the classpath.
[echo] ----------
[echo] Building Libraries with 'release'...
[subant] No sub-builds to iterate on
...
-dex:
[dex] input: …/android-permission-explorer/bin/classes
[dex] input: /opt/android-sdk-macosx/tools/support/annotations.jar
[dex] Pre-Dexing /opt/android-sdk-macosx/tools/support/annotations.jar -> annotations-b850151b30962160fb610e078fc74448.jar
[dex] Converting compiled files and external libraries into …/android-permission-explorer/bin/classes.dex...
[dx] Merged dex A (37 defs/57.7KiB) with dex B (2 defs/1.1KiB). Result is 39 defs/66.6KiB. Took 0.1s
...
release:
BUILD SUCCESSFUL
Total time: 4 seconds
另一个有效的解决方案是使用以下内容修改项目的build.xml
文件。
<project>
...
<property name="java.encoding" value="ISO-8859-1" />
</project>