Failed to re-build the source code 6.0.1 M4B30Z because of API changes

263 views
Skip to first unread message

龚泽龙

unread,
Oct 3, 2017, 11:27:31 AM10/3/17
to Android Building
Checking API: checkpublicapi-last
Checking API: checkpublicapi-current
Checking API: checksystemapi-last
Checking API: checksystemapi-current
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/sun/javadoc/ClassDoc : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:803)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:442)
at java.net.URLClassLoader.access$100(URLClassLoader.java:64)
at java.net.URLClassLoader$1.run(URLClassLoader.java:354)
at java.net.URLClassLoader$1.run(URLClassLoader.java:348)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:347)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at com.google.doclava.apicheck.ApiFile.parsePackage(ApiFile.java:97)
at com.google.doclava.apicheck.ApiFile.parseApi(ApiFile.java:76)
at com.google.doclava.apicheck.ApiCheck.parseApi(ApiCheck.java:168)
at com.google.doclava.apicheck.ApiCheck.checkApi(ApiCheck.java:135)
at com.google.doclava.apicheck.ApiCheck.main(ApiCheck.java:75)

******************************
You have tried to change the API from what has been previously released in
an SDK. Please fix the errors listed above.
******************************


make: *** [out/target/common/obj/PACKAGING/checkpublicapi-last-timestamp] Error 38
make: *** Waiting for unfinished jobs....
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/sun/javadoc/ClassDoc : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:803)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:442)
at java.net.URLClassLoader.access$100(URLClassLoader.java:64)
at java.net.URLClassLoader$1.run(URLClassLoader.java:354)
at java.net.URLClassLoader$1.run(URLClassLoader.java:348)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:347)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at com.google.doclava.apicheck.ApiFile.parsePackage(ApiFile.java:97)
at com.google.doclava.apicheck.ApiFile.parseApi(ApiFile.java:76)
at com.google.doclava.apicheck.ApiCheck.parseApi(ApiCheck.java:168)
at com.google.doclava.apicheck.ApiCheck.checkApi(ApiCheck.java:135)
at com.google.doclava.apicheck.ApiCheck.main(ApiCheck.java:75)

******************************
You have tried to change the API from what has been previously approved.

To make these errors go away, you have two choices:
  1) You can add "@hide" javadoc comments to the methods, etc. listed in the
  errors above.

  2) You can update current.txt by executing the following command:
  make update-api

  To submit the revised current.txt to the main Android repository,
  you will need approval.
******************************



make: *** [out/target/common/obj/PACKAGING/checkpublicapi-current-timestamp] Error 38
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/sun/javadoc/ClassDoc : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:803)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:442)
at java.net.URLClassLoader.access$100(URLClassLoader.java:64)
at java.net.URLClassLoader$1.run(URLClassLoader.java:354)
at java.net.URLClassLoader$1.run(URLClassLoader.java:348)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:347)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at com.google.doclava.apicheck.ApiFile.parsePackage(ApiFile.java:97)
at com.google.doclava.apicheck.ApiFile.parseApi(ApiFile.java:76)
at com.google.doclava.apicheck.ApiCheck.parseApi(ApiCheck.java:168)
at com.google.doclava.apicheck.ApiCheck.checkApi(ApiCheck.java:135)
at com.google.doclava.apicheck.ApiCheck.main(ApiCheck.java:75)

******************************
You have tried to change the API from what has been previously released in
an SDK. Please fix the errors listed above.
******************************


make: *** [out/target/common/obj/PACKAGING/checksystemapi-last-timestamp] Error 38
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/sun/javadoc/ClassDoc : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:803)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:442)
at java.net.URLClassLoader.access$100(URLClassLoader.java:64)
at java.net.URLClassLoader$1.run(URLClassLoader.java:354)
at java.net.URLClassLoader$1.run(URLClassLoader.java:348)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:347)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at com.google.doclava.apicheck.ApiFile.parsePackage(ApiFile.java:97)
at com.google.doclava.apicheck.ApiFile.parseApi(ApiFile.java:76)
at com.google.doclava.apicheck.ApiCheck.parseApi(ApiCheck.java:168)
at com.google.doclava.apicheck.ApiCheck.checkApi(ApiCheck.java:135)
at com.google.doclava.apicheck.ApiCheck.main(ApiCheck.java:75)

******************************
You have tried to change the API from what has been previously approved.

To make these errors go away, you have two choices:
  1) You can add "@hide" javadoc comments to the methods, etc. listed in the
  errors above.

  2) You can update current.txt by executing the following command:
  make update-api

  To submit the revised current.txt to the main Android repository,
  you will need approval.
******************************



make: *** [out/target/common/obj/PACKAGING/checksystemapi-current-timestamp] Error 38

Reproduce Steps: 
$ source build/envsetup.sh
$ lunch
$ 19
$ make -j4

Native source code: Android 6.0.1 M4B30Z (No changes)
Ubuntu 14.04
OpenJDK 7

I have tried and searched for a long time, but there is no feasible way except re-downloading the source code.

Could anyone know why it occurs and how to fix it?

龚泽龙

unread,
Oct 3, 2017, 1:23:49 PM10/3/17
to Android Building
Build error on 6.0.1 M4B30Z because of API change

Currently trying to build android-6.0.1 M4B30Z. I've checked out the
sources and made no modifications. However, when compiling I get the
following error.


Ubuntu 14.04 OpenJDK 7 Android 6.0,1 M4B30Z


out/target/common/obj/PACKAGING/public_api.txt:52616: error 4: Added
public constructor
java.util.concurrent.ThreadPoolExecutor.DiscardPolicy.DiscardPolicy()
out/target/common/obj/PACKAGING/public_api.txt:52883: error 4: Added
public constructor
java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject.ConditionObject()
out/target/common/obj/PACKAGING/public_api.txt:52930: error 4: Added
public constructor
java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject.ConditionObject()
out/target/common/obj/PACKAGING/public_api.txt:53025: error 4: Added
public constructor
java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock.ReadLock(ReentrantReadWriteLock)
out/target/common/obj/PACKAGING/public_api.txt:53035: error 4: Added
public constructor
java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock.WriteLock(ReentrantReadWriteLock)
out/target/common/obj/PACKAGING/public_api.txt:53074: error 4: Added
public constructor java.util.jar.Attributes.Name.Name(String)
out/target/common/obj/PACKAGING/public_api.txt:54404: error 4: Added
public constructor
javax.crypto.spec.PSource.PSpecified.PSpecified(byte)


******************************
You have tried to change the API from what has been previously approved.

To make these errors go away, you have two choices:
   1) You can add "@hide" javadoc comments to the methods, etc. listed in the
      errors above.

   2) You can update current.txt by executing the following command:
         make update-api

      To submit the revised current.txt to the main Android repository,
      you will need approval.
******************************




make: *** [out/target/common/obj/PACKAGING/checkpublicapi-current-timestamp]
Error 38


What is strange is that before I build the source code successfully,
and flash the 6.0.1 rom into Nexus 5 successfully

I searched in stackoverflow, but the following solution does not work.

https://stackoverflow.com/questions/30998666/api-change-error-when-building-aosp-5-1
https://stackoverflow.com/questions/14622020/couldnt-parse-api-file-frameworks-base-api-current-txt



The purpose that I want to rebuild the source code is I want to view
the Android Sources in my IDE
https://www.protechtraining.com/blog/post/860
https://shuhaowu.com/blog/setting_up_intellij_with_aosp_development.html

Here is the reproduction steps:


$ source build/envsetup.sh
$ lunch
$ 19
$ make


Someone says that I should `make update-api`. But I did not do any
modification or add any new api.

And plus, when I `make update-api`, I encountered the issue like
https://stackoverflow.com/questions/30998666/api-change-error-when-building-aosp-5-1


frameworks/support/v4/java/android/support/v4/media/TransportMediator.java:190:
error: cannot access RemoteControlClient
        return mController != null ?
mController.getRemoteControlClient() : null;
                                                ^
  class file for android.media.RemoteControlClient not found
frameworks/support/v4/java/android/support/v4/media/TransportMediator.java:240:
error: cannot access OnPlaybackPositionUpdateListener
            mController.refreshState(mCallbacks.onIsPlaying(),
                       ^
  class file for
android.media.RemoteControlClient$OnPlaybackPositionUpdateListener not
found
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
2 errors
make: *** [out/target/common/obj/JAVA_LIBRARIES/android-support-v4_intermediates/classes-full-debug.jar]
Error 41
Message has been deleted

龚泽龙

unread,
Oct 5, 2017, 9:27:42 AM10/5/17
to Android Building
I `make clean` and `make -j4`

It turns out to be wrong JDK version. I used oracle 8 instead of openjdk 7.



JDK requirement: 
Android 5.x (Lollipop) - Android 6.0 (Marshmallow): Ubuntu - OpenJDK 7, Mac OS - jdk-7u71-macosx-x64.dmg

So I switched all java related version to openjdk 7

java
javac
jar
javap
javah
javadoc
jarsigner

Like this: 


gongzelong@gongzelong-ThinkPad-X260:~/OpenSource/Android$ sudo update-alternatives --config javac
[sudo] password for gongzelong:
Sorry, try again.
[sudo] password for gongzelong:
There are 3 choices for the alternative javac (providing /usr/bin/javac).

  Selection Path Priority Status
------------------------------------------------------------
  0 /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 1081 auto mode
  1 /usr/lib/jvm/java-7-openjdk-amd64/bin/javac 1071 manual mode
  2 /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 1081 manual mode
* 3 /usr/local/lib/jdk1.8.0/bin/javac 300 manual mode

Press enter to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/lib/jvm/java-7-openjdk-amd64/bin/javac to provide /usr/bin/javac (javac) in manual mode

I encountered another issue.

Target cache fs image: out/target/product/generic/cache.img
Copying: out/target/common/obj/JAVA_LIBRARIES/junit-runner_intermediates/classes-jarjar.jar
Copying: out/target/common/obj/JAVA_LIBRARIES/mockito-api_intermediates/classes-jarjar.jar
Copying: out/target/common/obj/JAVA_LIBRARIES/org.apache.http.legacy_intermediates/classes-jarjar.jar
target Java: android-support-v7-mediarouter-jellybean-mr2 (out/target/common/obj/JAVA_LIBRARIES/android-support-v7-mediarouter-jellybean-mr2_intermediates/classes)
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
[out/target/common/obj/JAVA_LIBRARIES/android-support-v7-mediarouter-jellybean-mr1_intermediates/javalib.jar]
  End-of-central-directory signature not found.  Either this file is not
  a zipfile, or it constitutes one disk of a multi-part archive.  In the
  latter case the central directory and zipfile comment will be found on
  the last disk(s) of this archive.
unzip:  cannot find zipfile directory in one of out/target/common/obj/JAVA_LIBRARIES/android-support-v7-mediarouter-jellybean-mr1_intermediates/javalib.jar or
        out/target/common/obj/JAVA_LIBRARIES/android-support-v7-mediarouter-jellybean-mr1_intermediates/javalib.jar.zip, and cannot find out/target/common/obj/JAVA_LIBRARIES/android-support-v7-mediarouter-jellybean-mr1_intermediates/javalib.jar.ZIP, period.
Running:  mkuserimg.sh out/target/product/generic/cache out/target/product/generic/cache.img ext4 cache 69206016 -D out/target/product/generic/system -L cache out/target/product/generic/root/file_contexts
make_ext4fs -T -1 -S out/target/product/generic/root/file_contexts -L cache -l 69206016 -a cache out/target/product/generic/cache.img out/target/product/generic/cache out/target/product/generic/system
Creating filesystem with parameters:
    Size: 69206016
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 4224
    Inode size: 256
    Journal blocks: 1024
    Label: cache
    Blocks: 16896
    Block groups: 1
    Reserved block group size: 7
Created filesystem with 11/4224 inodes and 1302/16896 blocks
out/target/product/generic/cache.img maxsize=70654848 blocksize=2112 total=69206016 reserve=713856
target Static Jar: mockwebserver (out/target/common/obj/JAVA_LIBRARIES/mockwebserver_intermediates/javalib.jar)
target Static Jar: sqlite-jdbc (out/target/common/obj/JAVA_LIBRARIES/sqlite-jdbc_intermediates/javalib.jar)
target Java: nist-pkix-tests (out/target/common/obj/JAVA_LIBRARIES/nist-pkix-tests_intermediates/classes)
error: error reading out/target/common/obj/JAVA_LIBRARIES/android-support-v7-mediarouter-jellybean-mr1_intermediates/javalib.jar; zip file is empty
1 error
make: *** [out/target/common/obj/JAVA_LIBRARIES/android-support-v7-mediarouter-jellybean-mr2_intermediates/classes-full-debug.jar] Error 41
make: *** Waiting for unfinished jobs....
logtags: out/target/common/obj/APPS/SystemUITests_intermediates/src/src/com/android/systemui/EventLogTags.java <= frameworks/base/packages/SystemUI/tests/src/com/android/systemui/EventLogTags.logtags
warning: string 'gsm_alphabet_default_charset' has no default translation.
 
I checked the file javalib.jar, its size is indeed 0.

gongzelong@gongzelong-ThinkPad-X260:~/OpenSource/Android$ ls -la out/target/common/obj/JAVA_LIBRARIES/android-support-v7-mediarouter-jellybean-mr1_intermediates/javalib.jar
-rw-rw-r-- 1 gongzelong gongzelong 0 10月 5 00:02 out/target/common/obj/JAVA_LIBRARIES/android-support-v7-mediarouter-jellybean-mr1_intermediates/javalib.jar
gongzelong@gongzelong-ThinkPad-X260:~/OpenSource/Android$
Reply all
Reply to author
Forward
0 new messages