Build libprotobuf-java-lite only using core Java SDK APIs

libprotobuf-java-lite is now built against core Java APIs which excludes
Android-only APIs (classes under android.* packages) and private APIs.
"core_current" is a pseudo SDK which is a core Java subset of Android
SDK.

However, this lib has been using sun.misc.Unsafe which is a hidden API
and dependency to the class doesn't seem to be able to be cut easily in
the near future. In order to make it possible to build the lib with the
SDK only, a stubs library called libcore_private.stubs is defined to
provide build-time only information on the hidden APIs exclusively to
protobuf.

At runtime, the Unsafe class is provide by the OS and protobuf is linked
to the class loaded there.

Bug: 73204840
Test: m -j libprotobuf-java-lite is successful and does not show any
link-type check warning

Merged-In: I2fce2662cc65d4e57fc75bbf30ebf9f7d47c6775
(cherry picked from commit dc08924dc7262e5c06c1108f67f66e82598af806)

libcore_private.stubs cannot be built with JDK9

The package sun.misc in the stubs library is causing module name
conflict when building with JDK9.

error: package exists in another module: jdk.unsupported

Fixing the error by setting java_version to 1.7 so that modules are not
used when building the stubs lib.

Bug: 74211600
Test: EXPERIMENTAL_USE_OPENJDK9=true m -j libcore_private.stubs

Merged-In: Ifa709bef2dc8e2b11048ef96fc7517d8c25e8a7f
(cherry picked from commit 0e4379e7504849d7a2755b9a0264cd7901accc88)

libcore_private.stubs is uninstallable

Make sure that libcore_private.stubs isn't installed to the device as a
standalone jar library. The lib is meant to provide build-time only
symbol information to protobuf and thus is not runnable.

Bug: 73204840
Test: m -j libcore_private.stubs does not create
libcore_private.stubs.jar in /system/framework

Merged-In: I7c661211161937dba5ee71fdc4bb8b9f101c5a59
(cherry picked from commit 6297aad4d72232863366d62ae8799ce9cf492a43)

Don't force libcore_private.stubs to be built with java 1.7

We no longer need to build libcore_private.stubs with java 1.7, because
the library is only built for target and not for host, where it
conflicts with the module jdk.unsupported.

Bug: 74211600
Test: m -j libprotobuf-java-lite is successful. both host and target
variant of the lib is generated.
Test: EXPERIMENTAL_USE_OPENJDK9=true m -j libprotobuf-java-lite is also
successful.

Merged-In: I61a49d537ee6abad29e5661944ffc612a94465b8
(cherry picked from commit ed6d68ed9747c96d54d6773af40060e780443b1a)

Change-Id: I256652071b8a11cfbebcf6a4906546e6434f7372
2 files changed
tree: b61560bf074f80ddfc201ced730052175b1bfc1a
  1. .gitignore
  2. Android.bp
  3. Android.mk
  4. BUILD
  5. CHANGES.txt
  6. CONTRIBUTORS.txt
  7. CleanSpec.mk
  8. INSTALL.txt
  9. LICENSE
  10. MODULE_LICENSE_APACHE2
  11. Makefile.am
  12. Makefile.in
  13. NOTICE
  14. Protobuf.podspec
  15. README.android
  16. README.md
  17. README.version
  18. WORKSPACE
  19. aclocal.m4
  20. android/
  21. appveyor.bat
  22. appveyor.yml
  23. autogen.sh
  24. benchmarks/
  25. build.gradle
  26. cmake/
  27. compile
  28. config.guess
  29. config.h.in
  30. config.sub
  31. config/
  32. configure
  33. configure.ac
  34. conformance/
  35. csharp/
  36. depcomp
  37. docs/
  38. editors/
  39. examples/
  40. generate_descriptor_proto.sh
  41. gmock.BUILD
  42. gtest/
  43. install-sh
  44. java/
  45. javamicro/
  46. javanano/
  47. jenkins/
  48. js/
  49. ltmain.sh
  50. m4/
  51. missing
  52. more_tests/
  53. objectivec/
  54. php/
  55. post_process_dist.sh
  56. protobuf-lite.pc.in
  57. protobuf.bzl
  58. protobuf.pc.in
  59. protoc-artifacts/
  60. python/
  61. ruby/
  62. six.BUILD
  63. src/
  64. test-driver
  65. tests.sh
  66. update_file_lists.sh
  67. util/
README.md

Protocol Buffers - Google's data interchange format

Build Status Build status

Copyright 2008 Google Inc.

https://developers.google.com/protocol-buffers/

Overview

Protocol Buffers (a.k.a., protobuf) are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data. You can find protobuf's documentation on the Google Developers site.

This README file contains protobuf installation instructions. To install protobuf, you need to install the protocol compiler (used to compile .proto files) and the protobuf runtime for your chosen programming language.

Protocol Compiler Installation

The protocol compiler is written in C++. If you are using C++, please follow the C++ Installation Instructions to install protoc along with the C++ runtime.

For non-C++ users, the simplest way to install the protocol compiler is to download a pre-built binary from our release page:

https://github.com/google/protobuf/releases

In the downloads section of each release, you can find pre-built binaries in zip packages: protoc-$VERSION-$PLATFORM.zip. It contains the protoc binary as well as a set of standard .proto files distributed along with protobuf.

If you are looking for an old version that is not available in the release page, check out the maven repo here:

http://repo1.maven.org/maven2/com/google/protobuf/protoc/

These pre-built binaries are only provided for released versions. If you want to use the github master version at HEAD, or you need to modify protobuf code, or you are using C++, it's recommended to build your own protoc binary from source.

If you would like to build protoc binary from source, see the C++ Installation Instructions.

Protobuf Runtime Installation

Protobuf supports several different programming languages. For each programming language, you can find instructions in the corresponding source directory about how to install protobuf runtime for that specific language:

LanguageSource
C++ (include C++ runtime and protoc)src
Javajava
Pythonpython
Objective-Cobjectivec
C#csharp
JavaNanojavanano
JavaScriptjs
Rubyruby
Gogolang/protobuf
PHPTBD

Usage

The complete documentation for Protocol Buffers is available via the web at:

https://developers.google.com/protocol-buffers/