Install transitive deps of jni libs, but not the jni libs themselves
Consider this case: app --(jni_libs)--> libfoo --(shared_libs)--> libprivate Only libfoo is embedded into the app. libprivate is not embedded because libprivate is very likely to be depended on by other components in the platform, in which case it will anyway be installed to /system/lib. Embedding libprivate into the app will increase the storage usage as a whole. Furthermore, if libprivate is not a shared lib but a config file (of type prebuilt_etc), it can't be embedded and therefore must be installed outside of the app. However, a problem occurs when libprivate is not depended on by anyone else. Then libprivate is not installed to the system partition, causing an error at runtime. This CL fixes that by making the jni_libs dependency to implement the new SKipToTransitiveDepsTag interface. Now, jni_libs themselves are not installed, but their transitive deps are depended on by the app containing the jni libs. Bug: 330276359 Test: m NfcNci and check if libnfc-nci.config is installed. Test: m CarService and check android.hardware.automotive.evs-V2-ndk.so is installed as well. Test: go test ./... under soong/java Change-Id: I04cc92b7fad768a20ec60a02b3e7534641b1e74d
This commit is contained in:
11
java/java.go
11
java/java.go
@@ -368,6 +368,17 @@ type dependencyTag struct {
|
||||
static bool
|
||||
}
|
||||
|
||||
var _ android.SkipToTransitiveDepsTag = (*dependencyTag)(nil)
|
||||
|
||||
func (depTag dependencyTag) SkipToTransitiveDeps() bool {
|
||||
// jni_libs are not installed because they are always embedded into the app. However,
|
||||
// transitive deps of jni_libs themselves should be installed along with the app.
|
||||
if IsJniDepTag(depTag) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// installDependencyTag is a dependency tag that is annotated to cause the installed files of the
|
||||
// dependency to be installed when the parent module is installed.
|
||||
type installDependencyTag struct {
|
||||
|
Reference in New Issue
Block a user