Android 4.3构建错误

时间:2013-09-13 02:47:05

标签: 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
..
..
..

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

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

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

由于

6 个答案:

答案 0 :(得分:16)

就我而言,问题是由OpenJDK7中的javadoc导致的,当时我应该使用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: 

答案 1 :(得分:5)

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

答案 2 :(得分:3)

我可以在触摸文件后重新修复它们。

$ touch frameworks/opt/telephony/src/java/android/telephony/gsm/SmsManager.java
$ touch frameworks/opt/telephony/src/java/android/telephony/gsm/SmsMessage.java

$ make

答案 3 :(得分:1)

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

因此,如果您遇到任何相同的错误,我建议您重新下载源代码。

错误应该消失了。

答案 4 :(得分:1)

如果您更改了Android中的源代码,则需要在“make otapackage”之前发出“make update-api”来更新您所做的api更改

答案 5 :(得分:1)

问题恰恰在于1.7的javadoc,但是真正错误的是在从oracle将其更改为1.6之后" make clean"它没有帮助。删除和下载源有帮助。我正在寻找像#34; make distclean"或者"制作mrproper"避免重新加载耗时的源。我一无所获。