Comments (7)
Depending on your answer to #159, I think these two are probably the same FR (modeling for runtime-only dependencies).
from prefab.
Duplicate of #159
from prefab.
This is also a run-time dependency, but should only be satisfied when the application really needs it.
e.g.
my game needs png support, so needs libpng. But my application does not need tiff support, so does not need libtiff.
So I would like some way to make sure libpng is bundled in the .apk and not libtiff.
from prefab.
Oh, and that choice is made at build time?
from prefab.
Okay, I think not strictly a dup then, just closely related. Will reopen to track the optional aspect of runtime dependencies.
from prefab.
Oh, and that choice is made at build time?
Yes, the library must be included at build time.
#159 is a dependency that can be modeled in json files to be processed by prefab.
The dependency here is made in the cmake script.
I'm not 100% sure this is a prefab issue though.
If it isn't, can you please show me where to go instead or what alternatives there are?
from prefab.
I haven't thought about it very deeply yet, but I suspect prefab needs to be at least somewhat involved here, if only to pass along metadata to another system like AGP.
How do you envision this being controlled by the consumer? I think this probably ends up being something system-specific in your build script. For CMake this is probably something like https://cmake.org/cmake/help/latest/command/install.html#installing-runtime-dependencies?
install(RUNTIME_DEPENDENCY_SET package::optional-dependency)
install
seems to be how CMakes wants runtime dependencies declared. AGP doesn't currently use that model (it probably should have). We've considered adding support for that before, and this may require it.
ndk-build would need to grow a similar feature, but that's fairly easy.
Or did you have something else in mind? The other things I can think of would be something contained in the build.gradle
file, which seems like it'd be cumbersome for the author to keep in sync with the real build script; or doubling up on packaging some modules so it would expose both package::module
and package::module-with-optional-dependency
, which works today but is prone to combinatoric explosion for something like ffmpeg...
from prefab.
Related Issues (20)
- [BUG] Start signing com.google.prefab:cli:2.0.0 artifacts HOT 3
- [BUG] Library not exposing c++ symbols, still enforcing its STL in the abi.json HOT 3
- [FR] Model runtime-only dependencies HOT 9
- [BUG] prefab should set LINKER_LANGUAGE property for static libraries HOT 3
- use enable_language as needed in cmake outputs? HOT 3
- [BUG] when used prefab, the module aar will have duplicate so. The one in the jni/lib, A another one is in the prefab dir. HOT 2
- [FR] export_preprocessor_defs and export_includes HOT 9
- [FR] Support app module denpends on another module which all have C/C++ code. HOT 2
- [FR] Request ability to build prefab on apple silicon: fail to get a suitable JDK HOT 1
- [FR] Add support for riscv64 HOT 1
- [FR] add better handling of whole-archive style libraries HOT 1
- [BUG] ndkports: Pull Request: Create parent directory before trying to extract file from dependency aar HOT 2
- [FR] Please revive the project HOT 1
- [BUG] CMake packages and imported targets naming incompatible with upstream HOT 1
- [FR] Support c++ modules HOT 5
- [FR] Bundle sources with prefab archive HOT 3
- [BUG] Prefab libraries not being included in any app on my system only HOT 4
- [PKG]
- [PKG]
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from prefab.