Android 4.3构建错误

Sam*_*Sam 11 android build

我发现在其他论坛上发布了一些相同的错误,但尚未找到解决此问题的答案.

在我新安装的Ubuntu 12.10上运行,

out/target/common/obj/PACKAGING/public_api.txt:22097: error 12: Class
android.telephony.gsm.SmsMessage changed static qualifier
prebuilts/sdk/api/18.txt:22054: error 9: Removed public constructor SmsMessage()
prebuilts/sdk/api/18.txt:22055: error 9: Removed public method    
android.telephony.gsm.SmsMessage.calculateLength
prebuilts/sdk/api/18.txt:22056: error 9: Removed public method  
android.telephony.gsm.SmsMessage.calculateLength
prebuilts/sdk/api/18.txt:22057: error 9: Removed public method  
android.telephony.gsm.SmsMessage.createFromPdu
prebuilts/sdk/api/18.txt:22058: error 9: Removed public method  
android.telephony.gsm.SmsMessage.getDisplayMessageBody
prebuilts/sdk/api/18.txt:22059: error 9: Removed public method 
android.telephony.gsm.SmsMessage.getDisplayOriginatingAddress
prebuilts/sdk/api/18.txt:22060: error 9: Removed public method 
android.telephony.gsm.SmsMessage.getEmailBody
prebuilts/sdk/api/18.txt:22061: error 9: Removed public method  
android.telephony.gsm.SmsMessage.getEmailFrom
..
..
..
Run Code Online (Sandbox Code Playgroud)

很显然,gsm.SmsMessage在构建环境中存在一些未知问题.

我试图将我的java版本从1.7切换到1.6.但它仍然无效.

有谁知道如何解决这一问题?

谢谢

mil*_*ita 16

在我的情况下,问题是由javadocOpenJDK7 引起的,当时我应该使用JDK6(Oracle).

截至目前,需要JDK7来构建Android的主分支,JDK6需要通过Kitkat(4.4.4)构建Gingerbread(2.3).

如果您有几个JDK,请确保为java/javac/javadoc选择正确的JDK.您可以使用以下命令:

$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac
$ sudo update-alternatives --config javadoc

选择的输出示例java(上面的第一个命令):

There are 3 choices for the alternative java (providing /usr/bin/java).
  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1051      auto mode
* 1            /usr/lib/jvm/java-6-oracle/jre/bin/java          1         manual mode
  3            /usr/lib/jvm/java-7-oracle/jre/bin/java          2         manual mode
Press enter to keep the current choice[*], or type selection number: 


whe*_*rom 5

经过广泛搜索后,我终于在此处找到了此错误的来源https://groups.google.com/forum/#!msg/android-building/Xw34n7PQJsA/kieneMNt4LkJ.如果重新下载源代码不起作用,请确保java,javac和javadoc使用的是版本1.6而不是1.7.显然javadoc 1.7有一些由Android AOSP构建过程触发的不稳定性.这反过来会导致奇怪的错误.


Sam*_*Sam 1

通过重新下载源代码解决了错误。

因此,如果大家遇到同样的错误,我建议您重新下载源代码。

错误应该消失了。

  • 这可能适用于原始海报,但此问题的根源大多数时候是 java、javac 或 javadoc 版本中的版本不匹配。不幸的是,Google 的文档并没有声明 javadoc 也必须是 1.6,这就是这个问题的根源 - javadoc 1.7 和 1.8 生成的 api 规范与源提供的官方版本不同。这就是构建过程抱怨更新的 api 的原因。 (2认同)