Skip to content

[FR] Provide static libraries as well #110

Description

@bk138

Is your feature request related to a problem? Please describe.
While linking an Android app's native code to .so files works reasonably well, there are a lot of unused symbols shipped in the resulting .apk, contained in the .so files.

Describe the solution you'd like
The AAR packages provide .a files as well, allowing linking to those and, as a result, allowing the compiling/linking machinery to strip symbols that aren't actually used by the program code, resulting in smaller .apk's.

Thus, an AAR would contain headers, static and dynamic libs, very much like Linux distros do it,

Describe alternatives you've considered
Right now we're building all dependencies as static libs from source.

Additional context
https://github.com/bk138/multivnc/blob/master/android/app/src/main/cpp/CMakeLists.txt is the project in question - would be nice to use static prefabs there :-).

Activity

  1. DanAlbert commented on Jul 12, 2020

    @DanAlbert
    Contributor

    I've been meaning to find the time for this. Is there a particular package you want this for, or just in general?

  2. bk138 commented on Jul 12, 2020

    @bk138
    Author

    OpenSSL would be nice for a start. Nonetheless, I reckon this would come in handy generally, too.

  3. alexcohn commented on Sep 20, 2020

    @alexcohn

    Yes, you can use static libraries with prefab. You can have static and shared libraries in the same prefab. The names of the static and shared library files can be the same (e.g. libssl.so and libssl.a), but the directory names under modules and library names in module.json must be different (e.g. libssl and libssl-static).

    The only inconvenience is that you must include the headers twice, but @DanAlbert has been convincing me all along that duplication of some files in the AAR is not a problem at all.

  4. mrousavy commented on Nov 3, 2021

    @mrousavy
  5. bk138 commented on Nov 3, 2021

    @bk138
    Author
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions