APEX now correctly tracks jni_lib dependencies

Bug: 144135069
Test: m (apex_test.go amended)
Change-Id: If9dde4e2e62c2642267dbcac68bab76a032682c0
This commit is contained in:
Jiyong Park 2019-11-08 15:53:48 +09:00
parent b9a80a0716
commit 8be103b04c
3 changed files with 15 additions and 1 deletions

View File

@ -1196,7 +1196,7 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) {
if am, ok := child.(android.ApexModule); ok {
// We cannot use a switch statement on `depTag` here as the checked
// tags used below are private (e.g. `cc.sharedDepTag`).
if cc.IsSharedDepTag(depTag) || cc.IsRuntimeDepTag(depTag) {
if cc.IsSharedDepTag(depTag) || cc.IsRuntimeDepTag(depTag) || java.IsJniDepTag(depTag) {
if cc, ok := child.(*cc.Module); ok {
if android.InList(cc.Name(), providedNativeSharedLibs) {
// If we're using a shared library which is provided from other APEX,

View File

@ -2460,6 +2460,7 @@ func TestApexWithApps(t *testing.T) {
srcs: ["foo/bar/MyClass.java"],
sdk_version: "none",
system_modules: "none",
jni_libs: ["libjni"],
}
android_app {
@ -2469,6 +2470,13 @@ func TestApexWithApps(t *testing.T) {
system_modules: "none",
privileged: true,
}
cc_library_shared {
name: "libjni",
srcs: ["mylib.cpp"],
stl: "none",
system_shared_libs: [],
}
`)
module := ctx.ModuleForTests("myapex", "android_common_myapex_image")
@ -2477,6 +2485,7 @@ func TestApexWithApps(t *testing.T) {
ensureContains(t, copyCmds, "image.apex/app/AppFoo/AppFoo.apk")
ensureContains(t, copyCmds, "image.apex/priv-app/AppFooPriv/AppFooPriv.apk")
ensureContains(t, copyCmds, "image.apex/lib64/libjni.so")
}
func TestApexWithAppImports(t *testing.T) {

View File

@ -430,6 +430,11 @@ type jniDependencyTag struct {
target android.Target
}
func IsJniDepTag(depTag blueprint.DependencyTag) bool {
_, ok := depTag.(*jniDependencyTag)
return ok
}
var (
staticLibTag = dependencyTag{name: "staticlib"}
libTag = dependencyTag{name: "javalib"}