Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8be103b0 authored by Jiyong Park's avatar Jiyong Park
Browse files

APEX now correctly tracks jni_lib dependencies

Bug: 144135069
Test: m (apex_test.go amended)
Change-Id: If9dde4e2e62c2642267dbcac68bab76a032682c0
parent b9a80a07
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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,
+9 −0
Original line number Diff line number Diff line
@@ -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) {
+5 −0
Original line number Diff line number Diff line
@@ -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"}