From 89dfd0902eb6e434e66cb38d92e18842beab3385 Mon Sep 17 00:00:00 2001 From: Brad Stenning Date: Wed, 6 Oct 2021 11:00:30 -0700 Subject: Allow a shared library to be positioned after the application on the classpath This is useful if/when it's desired that an application contains the same fully qualified class name that's also in the library. The shared libraries that are treated in this manor are controlled by the resource com.android.internal.R.config_shared_libraries_loaded_after_app Bug: 179429740 Test: atest SharedLibraryLoadingTests Change-Id: Ia37ff9bd545918d1e0f1f38548dcd86f177559d5 --- .../test-apps/Overlay/Android.bp | 29 +++++++ .../test-apps/Overlay/AndroidManifest.xml | 24 ++++++ .../test-apps/Overlay/res/values/config.xml | 23 ++++++ .../test-apps/SharedLibraryClientTests/Android.bp | 35 +++++++++ .../SharedLibraryClientTests/AndroidManifest.xml | 29 +++++++ .../SharedLibraryClientTests/res/values/values.xml | 20 +++++ .../android/sharedlibloadingtest/ClientClass.java | 24 ++++++ .../sharedlibloadingtest/DuplicateClassA.java | 24 ++++++ .../sharedlibloadingtest/DuplicateClassB.java | 24 ++++++ .../client/SharedLibraryLoadingOrderTest.java | 90 ++++++++++++++++++++++ .../test-apps/SharedLibraryLoadedAfter/Android.bp | 30 ++++++++ .../SharedLibraryLoadedAfter/AndroidManifest.xml | 23 ++++++ .../SharedLibraryLoadedAfter/res/values/values.xml | 20 +++++ .../sharedlibloadingtest/DuplicateClassB.java | 24 ++++++ .../sharedlibloadingtest/SharedClassAfter.java | 32 ++++++++ .../test-apps/StandardSharedLibrary/Android.bp | 30 ++++++++ .../StandardSharedLibrary/AndroidManifest.xml | 23 ++++++ .../StandardSharedLibrary/res/values/values.xml | 20 +++++ .../sharedlibloadingtest/DuplicateClassA.java | 24 ++++++ .../sharedlibloadingtest/StdSharedClass.java | 32 ++++++++ 20 files changed, 580 insertions(+) create mode 100644 tests/SharedLibraryLoadingTest/test-apps/Overlay/Android.bp create mode 100644 tests/SharedLibraryLoadingTest/test-apps/Overlay/AndroidManifest.xml create mode 100644 tests/SharedLibraryLoadingTest/test-apps/Overlay/res/values/config.xml create mode 100644 tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/Android.bp create mode 100644 tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/AndroidManifest.xml create mode 100644 tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/res/values/values.xml create mode 100644 tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/src/com/android/sharedlibloadingtest/ClientClass.java create mode 100644 tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/src/com/android/sharedlibloadingtest/DuplicateClassA.java create mode 100644 tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/src/com/android/sharedlibloadingtest/DuplicateClassB.java create mode 100644 tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/src/com/android/sharedlibloadingtest/client/SharedLibraryLoadingOrderTest.java create mode 100644 tests/SharedLibraryLoadingTest/test-apps/SharedLibraryLoadedAfter/Android.bp create mode 100644 tests/SharedLibraryLoadingTest/test-apps/SharedLibraryLoadedAfter/AndroidManifest.xml create mode 100644 tests/SharedLibraryLoadingTest/test-apps/SharedLibraryLoadedAfter/res/values/values.xml create mode 100644 tests/SharedLibraryLoadingTest/test-apps/SharedLibraryLoadedAfter/src/com/android/sharedlibloadingtest/DuplicateClassB.java create mode 100644 tests/SharedLibraryLoadingTest/test-apps/SharedLibraryLoadedAfter/src/com/android/sharedlibloadingtest/SharedClassAfter.java create mode 100644 tests/SharedLibraryLoadingTest/test-apps/StandardSharedLibrary/Android.bp create mode 100644 tests/SharedLibraryLoadingTest/test-apps/StandardSharedLibrary/AndroidManifest.xml create mode 100644 tests/SharedLibraryLoadingTest/test-apps/StandardSharedLibrary/res/values/values.xml create mode 100644 tests/SharedLibraryLoadingTest/test-apps/StandardSharedLibrary/src/com/android/sharedlibloadingtest/DuplicateClassA.java create mode 100644 tests/SharedLibraryLoadingTest/test-apps/StandardSharedLibrary/src/com/android/sharedlibloadingtest/StdSharedClass.java (limited to 'tests/SharedLibraryLoadingTest/test-apps') diff --git a/tests/SharedLibraryLoadingTest/test-apps/Overlay/Android.bp b/tests/SharedLibraryLoadingTest/test-apps/Overlay/Android.bp new file mode 100644 index 000000000000..b2f4e8925b58 --- /dev/null +++ b/tests/SharedLibraryLoadingTest/test-apps/Overlay/Android.bp @@ -0,0 +1,29 @@ +// Copyright (C) 2021 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package { + // See: http://go/android-license-faq + // A large-scale-change added 'default_applicable_licenses' to import + // all of the 'license_kinds' from "frameworks_base_license" + // to get the below license kinds: + // SPDX-license-identifier-Apache-2.0 + default_applicable_licenses: ["frameworks_base_license"], +} + +android_test_helper_app { + name: "SharedLibraryLoadingTests_Overlay", + platform_apis: true, + certificate: "platform", + aaptflags: ["--no-resource-removal"], +} diff --git a/tests/SharedLibraryLoadingTest/test-apps/Overlay/AndroidManifest.xml b/tests/SharedLibraryLoadingTest/test-apps/Overlay/AndroidManifest.xml new file mode 100644 index 000000000000..ae2784ca0904 --- /dev/null +++ b/tests/SharedLibraryLoadingTest/test-apps/Overlay/AndroidManifest.xml @@ -0,0 +1,24 @@ + + + + + + + \ No newline at end of file diff --git a/tests/SharedLibraryLoadingTest/test-apps/Overlay/res/values/config.xml b/tests/SharedLibraryLoadingTest/test-apps/Overlay/res/values/config.xml new file mode 100644 index 000000000000..15da3dbafd84 --- /dev/null +++ b/tests/SharedLibraryLoadingTest/test-apps/Overlay/res/values/config.xml @@ -0,0 +1,23 @@ + + + + + com.android.sharedlibloadingtest.shared_library_after + + \ No newline at end of file diff --git a/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/Android.bp b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/Android.bp new file mode 100644 index 000000000000..0d204979cb92 --- /dev/null +++ b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/Android.bp @@ -0,0 +1,35 @@ +// Copyright (C) 2021 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +android_test_helper_app { + name: "SharedLibraryLoadingTests_SharedLibraryClientTests", + srcs: ["**/*.java"], + resource_dirs: ["res"], + libs: [ + "SharedLibraryLoadingTests_StandardSharedLibrary", + "SharedLibraryLoadingTests_SharedLibraryLoadedAfter", + "android.test.base", + ], + static_libs: [ + "androidx.test.ext.junit", + "androidx.test.rules", + "androidx.test.core", + "testng", + ], + platform_apis: true, +} diff --git a/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/AndroidManifest.xml b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/AndroidManifest.xml new file mode 100644 index 000000000000..e3a9b9bca78a --- /dev/null +++ b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/AndroidManifest.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/res/values/values.xml b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/res/values/values.xml new file mode 100644 index 000000000000..5e0544eb8696 --- /dev/null +++ b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/res/values/values.xml @@ -0,0 +1,20 @@ + + + + + client value + \ No newline at end of file diff --git a/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/src/com/android/sharedlibloadingtest/ClientClass.java b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/src/com/android/sharedlibloadingtest/ClientClass.java new file mode 100644 index 000000000000..e48fb833bd76 --- /dev/null +++ b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/src/com/android/sharedlibloadingtest/ClientClass.java @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.sharedlibloadingtest; + +public class ClientClass { + @Override + public String toString() { + return "Client Code"; + } +} diff --git a/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/src/com/android/sharedlibloadingtest/DuplicateClassA.java b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/src/com/android/sharedlibloadingtest/DuplicateClassA.java new file mode 100644 index 000000000000..4c771557e119 --- /dev/null +++ b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/src/com/android/sharedlibloadingtest/DuplicateClassA.java @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.sharedlibloadingtest; + +public class DuplicateClassA { + @Override + public String toString() { + return "Client's Version"; + } +} diff --git a/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/src/com/android/sharedlibloadingtest/DuplicateClassB.java b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/src/com/android/sharedlibloadingtest/DuplicateClassB.java new file mode 100644 index 000000000000..86aa6a1a0901 --- /dev/null +++ b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/src/com/android/sharedlibloadingtest/DuplicateClassB.java @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.sharedlibloadingtest; + +public class DuplicateClassB { + @Override + public String toString() { + return "Client's Version B"; + } +} diff --git a/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/src/com/android/sharedlibloadingtest/client/SharedLibraryLoadingOrderTest.java b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/src/com/android/sharedlibloadingtest/client/SharedLibraryLoadingOrderTest.java new file mode 100644 index 000000000000..43bcb1ad7d27 --- /dev/null +++ b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/src/com/android/sharedlibloadingtest/client/SharedLibraryLoadingOrderTest.java @@ -0,0 +1,90 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.sharedlibloadingtest.client; + +import static org.testng.Assert.assertEquals; + +import android.content.Context; +import android.content.res.Resources; + +import androidx.test.core.app.ApplicationProvider; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import com.android.internal.util.Preconditions; +import com.android.sharedlibloadingtest.ClientClass; +import com.android.sharedlibloadingtest.DuplicateClassA; +import com.android.sharedlibloadingtest.DuplicateClassB; +import com.android.sharedlibloadingtest.SharedClassAfter; +import com.android.sharedlibloadingtest.StdSharedClass; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.Collections; +import java.util.HashSet; + +@RunWith(AndroidJUnit4.class) +public class SharedLibraryLoadingOrderTest { + + @Test + public void testLoadingOfStdShareLibsShouldBeFirst() { + Preconditions.checkArgument(!getLibsLoadedAfter() + .contains("com.android.sharedlibloadingtest.shared_library")); + DuplicateClassA clazz = new DuplicateClassA(); + assertEquals(clazz.toString(), "Standard Shared Lib's Version"); + + StdSharedClass stdSharedClass = new StdSharedClass(); + assertEquals(stdSharedClass.toString(), "Nothing Special Lib"); + + ClientClass clientCode = new ClientClass(); + assertEquals(clientCode.toString(), "Client Code"); + } + + @Test + public void testLoadingOfShareLibsIsAfter() { + Preconditions.checkArgument(getLibsLoadedAfter() + .contains("com.android.sharedlibloadingtest.shared_library_after")); + DuplicateClassB clazz = new DuplicateClassB(); + assertEquals(clazz.toString(), "Client's Version B"); + + SharedClassAfter stdSharedClass = new SharedClassAfter(); + assertEquals(stdSharedClass.toString(), "Also Nothing Special"); + + ClientClass clientCode = new ClientClass(); + assertEquals(clientCode.toString(), "Client Code"); + } + + @Test + public void testLoadingOfResource() { + // aapt compiler gives each lib their own namespace so this test just confirming + // the resources can be loaded from the same context object + Context context = ApplicationProvider.getApplicationContext(); + String clientString = context.getResources().getString(R.string.identical_resource_key); + assertEquals(clientString, "client value"); + assertEquals(StdSharedClass.getResString(context), "std lib value"); + assertEquals(SharedClassAfter.getResString(context), "loaded after value"); + + } + + private HashSet getLibsLoadedAfter() { + Resources systemR = Resources.getSystem(); + HashSet libsToLoadAfter = new HashSet<>(); + Collections.addAll(libsToLoadAfter, systemR.getStringArray( + com.android.internal.R.array.config_sharedLibrariesLoadedAfterApp)); + return libsToLoadAfter; + } +} diff --git a/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryLoadedAfter/Android.bp b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryLoadedAfter/Android.bp new file mode 100644 index 000000000000..db9b3edfe6a2 --- /dev/null +++ b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryLoadedAfter/Android.bp @@ -0,0 +1,30 @@ +// Copyright (C) 2021 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package { + // See: http://go/android-license-faq + // A large-scale-change added 'default_applicable_licenses' to import + // all of the 'license_kinds' from "frameworks_base_license" + // to get the below license kinds: + // SPDX-license-identifier-Apache-2.0 + default_applicable_licenses: ["frameworks_base_license"], +} + +android_test_helper_app { + name: "SharedLibraryLoadingTests_SharedLibraryLoadedAfter", + srcs: ["**/*.java"], + resource_dirs: ["res"], + sdk_version: "current", + aaptflags: ["--shared-lib"], +} diff --git a/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryLoadedAfter/AndroidManifest.xml b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryLoadedAfter/AndroidManifest.xml new file mode 100644 index 000000000000..efedfcfeb515 --- /dev/null +++ b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryLoadedAfter/AndroidManifest.xml @@ -0,0 +1,23 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryLoadedAfter/res/values/values.xml b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryLoadedAfter/res/values/values.xml new file mode 100644 index 000000000000..4525944b060c --- /dev/null +++ b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryLoadedAfter/res/values/values.xml @@ -0,0 +1,20 @@ + + + + + loaded after value + \ No newline at end of file diff --git a/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryLoadedAfter/src/com/android/sharedlibloadingtest/DuplicateClassB.java b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryLoadedAfter/src/com/android/sharedlibloadingtest/DuplicateClassB.java new file mode 100644 index 000000000000..1e1f5aab5993 --- /dev/null +++ b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryLoadedAfter/src/com/android/sharedlibloadingtest/DuplicateClassB.java @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.sharedlibloadingtest; + +public class DuplicateClassB { + @Override + public String toString() { + return "Loaded After Shared Lib's Version"; + } +} diff --git a/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryLoadedAfter/src/com/android/sharedlibloadingtest/SharedClassAfter.java b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryLoadedAfter/src/com/android/sharedlibloadingtest/SharedClassAfter.java new file mode 100644 index 000000000000..9e5b40fc38d8 --- /dev/null +++ b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryLoadedAfter/src/com/android/sharedlibloadingtest/SharedClassAfter.java @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.sharedlibloadingtest; + +import android.content.Context; + +import com.android.sharedlibloadingtest.shared_library_after.R; + +public class SharedClassAfter { + @Override + public String toString() { + return "Also Nothing Special"; + } + + public static String getResString(Context context) { + return context.getResources().getString(R.string.identical_resource_key); + } +} diff --git a/tests/SharedLibraryLoadingTest/test-apps/StandardSharedLibrary/Android.bp b/tests/SharedLibraryLoadingTest/test-apps/StandardSharedLibrary/Android.bp new file mode 100644 index 000000000000..50456b0439c2 --- /dev/null +++ b/tests/SharedLibraryLoadingTest/test-apps/StandardSharedLibrary/Android.bp @@ -0,0 +1,30 @@ +// Copyright (C) 2021 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package { + // See: http://go/android-license-faq + // A large-scale-change added 'default_applicable_licenses' to import + // all of the 'license_kinds' from "frameworks_base_license" + // to get the below license kinds: + // SPDX-license-identifier-Apache-2.0 + default_applicable_licenses: ["frameworks_base_license"], +} + +android_test_helper_app { + name: "SharedLibraryLoadingTests_StandardSharedLibrary", + srcs: ["**/*.java"], + resource_dirs: ["res"], + sdk_version: "current", + aaptflags: ["--shared-lib"], +} diff --git a/tests/SharedLibraryLoadingTest/test-apps/StandardSharedLibrary/AndroidManifest.xml b/tests/SharedLibraryLoadingTest/test-apps/StandardSharedLibrary/AndroidManifest.xml new file mode 100644 index 000000000000..f1a079feb316 --- /dev/null +++ b/tests/SharedLibraryLoadingTest/test-apps/StandardSharedLibrary/AndroidManifest.xml @@ -0,0 +1,23 @@ + + + + + + + + \ No newline at end of file diff --git a/tests/SharedLibraryLoadingTest/test-apps/StandardSharedLibrary/res/values/values.xml b/tests/SharedLibraryLoadingTest/test-apps/StandardSharedLibrary/res/values/values.xml new file mode 100644 index 000000000000..941351aaea62 --- /dev/null +++ b/tests/SharedLibraryLoadingTest/test-apps/StandardSharedLibrary/res/values/values.xml @@ -0,0 +1,20 @@ + + + + + std lib value + \ No newline at end of file diff --git a/tests/SharedLibraryLoadingTest/test-apps/StandardSharedLibrary/src/com/android/sharedlibloadingtest/DuplicateClassA.java b/tests/SharedLibraryLoadingTest/test-apps/StandardSharedLibrary/src/com/android/sharedlibloadingtest/DuplicateClassA.java new file mode 100644 index 000000000000..a3874aa3ad96 --- /dev/null +++ b/tests/SharedLibraryLoadingTest/test-apps/StandardSharedLibrary/src/com/android/sharedlibloadingtest/DuplicateClassA.java @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.sharedlibloadingtest; + +public class DuplicateClassA { + @Override + public String toString() { + return "Standard Shared Lib's Version"; + } +} diff --git a/tests/SharedLibraryLoadingTest/test-apps/StandardSharedLibrary/src/com/android/sharedlibloadingtest/StdSharedClass.java b/tests/SharedLibraryLoadingTest/test-apps/StandardSharedLibrary/src/com/android/sharedlibloadingtest/StdSharedClass.java new file mode 100644 index 000000000000..429d65ca2439 --- /dev/null +++ b/tests/SharedLibraryLoadingTest/test-apps/StandardSharedLibrary/src/com/android/sharedlibloadingtest/StdSharedClass.java @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.sharedlibloadingtest; + +import android.content.Context; + +import com.android.sharedlibloadingtest.shared_library.R; + +public class StdSharedClass { + @Override + public String toString() { + return "Nothing Special Lib"; + } + + public static String getResString(Context context) { + return context.getResources().getString(R.string.identical_resource_key); + } +} -- cgit v1.2.3-59-g8ed1b