diff options
author | Kris Giesing <kgiesing@google.com> | 2015-04-20 13:22:26 -0700 |
---|---|---|
committer | Kris Giesing <kgiesing@google.com> | 2015-04-20 14:15:59 -0700 |
commit | 6c974408497962bd718c961fa8b9c32c0354a91e (patch) | |
tree | b332eebda58e1b25480f47e3bd6fe2cd151117ad /core | |
parent | e863712afc80ab5f62fd10a662a64a107d3532e3 (diff) | |
download | frameworks_base-6c974408497962bd718c961fa8b9c32c0354a91e.zip frameworks_base-6c974408497962bd718c961fa8b9c32c0354a91e.tar.gz frameworks_base-6c974408497962bd718c961fa8b9c32c0354a91e.tar.bz2 |
DO NOT MERGE Revert "Load libraries directly from apk"
This reverts commit dec4688f40b0018fbd1f00db05581966f531d88f.
Change-Id: Ief869dec1641d5a376bc044719941536e0bf8442
Diffstat (limited to 'core')
14 files changed, 33 insertions, 236 deletions
diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java index 4a087da..b3c558b 100644 --- a/core/java/android/content/pm/ApplicationInfo.java +++ b/core/java/android/content/pm/ApplicationInfo.java @@ -346,11 +346,6 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { public static final int FLAG_USES_CLEARTEXT_TRAFFIC = 1<<27; /** - * When set installer extracts native libs from .apk files. - */ - public static final int FLAG_EXTRACT_NATIVE_LIBS = 1<<28; - - /** * Value for {@link #flags}: true if code from this application will need to be * loaded into other applications' processes. On devices that support multiple * instruction sets, this implies the code might be loaded into a process that's diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 53aa6ff..5320929 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -268,7 +268,6 @@ public class PackageParser { public final boolean coreApp; public final boolean multiArch; - public final boolean extractNativeLibs; public PackageLite(String codePath, ApkLite baseApk, String[] splitNames, String[] splitCodePaths, int[] splitRevisionCodes) { @@ -284,7 +283,6 @@ public class PackageParser { this.splitRevisionCodes = splitRevisionCodes; this.coreApp = baseApk.coreApp; this.multiArch = baseApk.multiArch; - this.extractNativeLibs = baseApk.extractNativeLibs; } public List<String> getAllCodePaths() { @@ -311,12 +309,10 @@ public class PackageParser { public final Signature[] signatures; public final boolean coreApp; public final boolean multiArch; - public final boolean extractNativeLibs; public ApkLite(String codePath, String packageName, String splitName, int versionCode, int revisionCode, int installLocation, List<VerifierInfo> verifiers, - Signature[] signatures, boolean coreApp, boolean multiArch, - boolean extractNativeLibs) { + Signature[] signatures, boolean coreApp, boolean multiArch) { this.codePath = codePath; this.packageName = packageName; this.splitName = splitName; @@ -327,7 +323,6 @@ public class PackageParser { this.signatures = signatures; this.coreApp = coreApp; this.multiArch = multiArch; - this.extractNativeLibs = extractNativeLibs; } } @@ -1274,7 +1269,6 @@ public class PackageParser { int revisionCode = 0; boolean coreApp = false; boolean multiArch = false; - boolean extractNativeLibs = true; for (int i = 0; i < attrs.getAttributeCount(); i++) { final String attr = attrs.getAttributeName(i); @@ -1313,17 +1307,14 @@ public class PackageParser { final String attr = attrs.getAttributeName(i); if ("multiArch".equals(attr)) { multiArch = attrs.getAttributeBooleanValue(i, false); - } - if ("extractNativeLibs".equals(attr)) { - extractNativeLibs = attrs.getAttributeBooleanValue(i, true); + break; } } } } return new ApkLite(codePath, packageSplit.first, packageSplit.second, versionCode, - revisionCode, installLocation, verifiers, signatures, coreApp, multiArch, - extractNativeLibs); + revisionCode, installLocation, verifiers, signatures, coreApp, multiArch); } /** @@ -2576,12 +2567,6 @@ public class PackageParser { ai.flags |= ApplicationInfo.FLAG_MULTIARCH; } - if (sa.getBoolean( - com.android.internal.R.styleable.AndroidManifestApplication_extractNativeLibs, - true)) { - ai.flags |= ApplicationInfo.FLAG_EXTRACT_NATIVE_LIBS; - } - String str; str = sa.getNonConfigurationString( com.android.internal.R.styleable.AndroidManifestApplication_permission, 0); diff --git a/core/java/com/android/internal/content/NativeLibraryHelper.java b/core/java/com/android/internal/content/NativeLibraryHelper.java index f479f4f..02f675c 100644 --- a/core/java/com/android/internal/content/NativeLibraryHelper.java +++ b/core/java/com/android/internal/content/NativeLibraryHelper.java @@ -33,7 +33,6 @@ import android.content.pm.PackageParser.PackageLite; import android.content.pm.PackageParser.PackageParserException; import android.os.Build; import android.os.SELinux; -import android.os.SystemProperties; import android.system.ErrnoException; import android.system.Os; import android.util.Slog; @@ -75,7 +74,6 @@ public class NativeLibraryHelper { final long[] apkHandles; final boolean multiArch; - final boolean extractNativeLibs; public static Handle create(File packageFile) throws IOException { try { @@ -88,16 +86,14 @@ public class NativeLibraryHelper { public static Handle create(Package pkg) throws IOException { return create(pkg.getAllCodePaths(), - (pkg.applicationInfo.flags & ApplicationInfo.FLAG_MULTIARCH) != 0, - (pkg.applicationInfo.flags & ApplicationInfo.FLAG_EXTRACT_NATIVE_LIBS) != 0); + (pkg.applicationInfo.flags & ApplicationInfo.FLAG_MULTIARCH) != 0); } public static Handle create(PackageLite lite) throws IOException { - return create(lite.getAllCodePaths(), lite.multiArch, lite.extractNativeLibs); + return create(lite.getAllCodePaths(), lite.multiArch); } - private static Handle create(List<String> codePaths, boolean multiArch, - boolean extractNativeLibs) throws IOException { + private static Handle create(List<String> codePaths, boolean multiArch) throws IOException { final int size = codePaths.size(); final long[] apkHandles = new long[size]; for (int i = 0; i < size; i++) { @@ -112,13 +108,12 @@ public class NativeLibraryHelper { } } - return new Handle(apkHandles, multiArch, extractNativeLibs); + return new Handle(apkHandles, multiArch); } - Handle(long[] apkHandles, boolean multiArch, boolean extractNativeLibs) { + Handle(long[] apkHandles, boolean multiArch) { this.apkHandles = apkHandles; this.multiArch = multiArch; - this.extractNativeLibs = extractNativeLibs; mGuard.open("close"); } @@ -151,8 +146,8 @@ public class NativeLibraryHelper { private static native long nativeSumNativeBinaries(long handle, String cpuAbi); - private native static int nativeCopyNativeBinaries(long handle, String sharedLibraryPath, - String abiToCopy, boolean extractNativeLibs, boolean hasNativeBridge); + private native static int nativeCopyNativeBinaries(long handle, + String sharedLibraryPath, String abiToCopy); private static long sumNativeBinaries(Handle handle, String abi) { long sum = 0; @@ -172,8 +167,7 @@ public class NativeLibraryHelper { */ public static int copyNativeBinaries(Handle handle, File sharedLibraryDir, String abi) { for (long apkHandle : handle.apkHandles) { - int res = nativeCopyNativeBinaries(apkHandle, sharedLibraryDir.getPath(), abi, - handle.extractNativeLibs, HAS_NATIVE_BRIDGE); + int res = nativeCopyNativeBinaries(apkHandle, sharedLibraryDir.getPath(), abi); if (res != INSTALL_SUCCEEDED) { return res; } @@ -224,8 +218,7 @@ public class NativeLibraryHelper { /** * Remove the native binaries of a given package. This deletes the files */ - public static void removeNativeBinariesFromDirLI(File nativeLibraryRoot, - boolean deleteRootDir) { + public static void removeNativeBinariesFromDirLI(File nativeLibraryRoot, boolean deleteRootDir) { if (DEBUG_NATIVE) { Slog.w(TAG, "Deleting native binaries from: " + nativeLibraryRoot.getPath()); } @@ -254,8 +247,7 @@ public class NativeLibraryHelper { // asked to or this will prevent installation of future updates. if (deleteRootDir) { if (!nativeLibraryRoot.delete()) { - Slog.w(TAG, "Could not delete native binary directory: " + - nativeLibraryRoot.getPath()); + Slog.w(TAG, "Could not delete native binary directory: " + nativeLibraryRoot.getPath()); } } } @@ -424,9 +416,6 @@ public class NativeLibraryHelper { // We don't care about the other return values for now. private static final int BITCODE_PRESENT = 1; - private static final boolean HAS_NATIVE_BRIDGE = - !"0".equals(SystemProperties.get("ro.dalvik.vm.native.bridge", "0")); - private static native int hasRenderscriptBitcode(long apkHandle); public static boolean hasRenderscriptBitcode(Handle handle) throws IOException { diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp index 0bfc0c9..0d83e93 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -536,6 +536,7 @@ bool AndroidRuntime::parseCompilerRuntimeOption(const char* property, */ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) { + int result = -1; JavaVMInitArgs initArgs; char propBuf[PROPERTY_VALUE_MAX]; char stackTraceFileBuf[sizeof("-Xstacktracefile:")-1 + PROPERTY_VALUE_MAX]; @@ -586,7 +587,6 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) char localeOption[sizeof("-Duser.locale=") + PROPERTY_VALUE_MAX]; char lockProfThresholdBuf[sizeof("-Xlockprofthreshold:")-1 + PROPERTY_VALUE_MAX]; char nativeBridgeLibrary[sizeof("-XX:NativeBridge=") + PROPERTY_VALUE_MAX]; - char cpuAbiListBuf[sizeof("--cpu-abilist=") + PROPERTY_VALUE_MAX]; bool checkJni = false; property_get("dalvik.vm.checkjni", propBuf, ""); @@ -705,7 +705,7 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) if (!hasFile("/system/etc/preloaded-classes")) { ALOGE("Missing preloaded-classes file, /system/etc/preloaded-classes not found: %s\n", strerror(errno)); - return -1; + goto bail; } addOption("-Ximage-compiler-option"); addOption("--image-classes=/system/etc/preloaded-classes"); @@ -860,18 +860,6 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) // Dalvik-cache pruning counter. parseRuntimeOption("dalvik.vm.zygote.max-boot-retry", cachePruneBuf, "-Xzygote-max-boot-retry="); -#if defined(__LP64__) - const char* cpu_abilist_property_name = "ro.product.cpu.abilist64"; -#else - const char* cpu_abilist_property_name = "ro.product.cpu.abilist32"; -#endif // defined(__LP64__) - property_get(cpu_abilist_property_name, propBuf, ""); - if (propBuf[0] == '\0') { - ALOGE("%s is not expected to be empty", cpu_abilist_property_name); - return -1; - } - snprintf(cpuAbiListBuf, sizeof(cpuAbiListBuf), "--cpu-abilist=%s", propBuf); - addOption(cpuAbiListBuf); initArgs.version = JNI_VERSION_1_4; initArgs.options = mOptions.editArray(); @@ -887,10 +875,13 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) */ if (JNI_CreateJavaVM(pJavaVM, pEnv, &initArgs) < 0) { ALOGE("JNI_CreateJavaVM failed\n"); - return -1; + goto bail; } - return 0; + result = 0; + +bail: + return result; } char* AndroidRuntime::toSlashClassName(const char* className) diff --git a/core/jni/com_android_internal_content_NativeLibraryHelper.cpp b/core/jni/com_android_internal_content_NativeLibraryHelper.cpp index 9307ff9..3c1993e 100644 --- a/core/jni/com_android_internal_content_NativeLibraryHelper.cpp +++ b/core/jni/com_android_internal_content_NativeLibraryHelper.cpp @@ -33,7 +33,6 @@ #include <string.h> #include <time.h> #include <unistd.h> -#include <inttypes.h> #include <sys/stat.h> #include <sys/types.h> @@ -174,11 +173,7 @@ sumFiles(JNIEnv*, void* arg, ZipFileRO* zipFile, ZipEntryRO zipEntry, const char static install_status_t copyFileIfChanged(JNIEnv *env, void* arg, ZipFileRO* zipFile, ZipEntryRO zipEntry, const char* fileName) { - void** args = reinterpret_cast<void**>(arg); - jstring* javaNativeLibPath = (jstring*) args[0]; - jboolean extractNativeLibs = *(jboolean*) args[1]; - jboolean hasNativeBridge = *(jboolean*) args[2]; - + jstring* javaNativeLibPath = (jstring*) arg; ScopedUtfChars nativeLibPath(env, *javaNativeLibPath); size_t uncompLen; @@ -186,31 +181,13 @@ copyFileIfChanged(JNIEnv *env, void* arg, ZipFileRO* zipFile, ZipEntryRO zipEntr long crc; time_t modTime; - int method; - off64_t offset; - - if (!zipFile->getEntryInfo(zipEntry, &method, &uncompLen, NULL, &offset, &when, &crc)) { + if (!zipFile->getEntryInfo(zipEntry, NULL, &uncompLen, NULL, NULL, &when, &crc)) { ALOGD("Couldn't read zip entry info\n"); return INSTALL_FAILED_INVALID_APK; - } - - if (!extractNativeLibs) { - // check if library is uncompressed and page-aligned - if (method != ZipFileRO::kCompressStored) { - ALOGD("Library '%s' is compressed - will not be able to open it directly from apk.\n", - fileName); - return INSTALL_FAILED_INVALID_APK; - } - - if (offset % PAGE_SIZE != 0) { - ALOGD("Library '%s' is not page-aligned - will not be able to open it directly from" - " apk.\n", fileName); - return INSTALL_FAILED_INVALID_APK; - } - - if (!hasNativeBridge) { - return INSTALL_SUCCEEDED; - } + } else { + struct tm t; + ZipUtils::zipTimeToTimespec(when, &t); + modTime = mktime(&t); } // Build local file path @@ -231,9 +208,6 @@ copyFileIfChanged(JNIEnv *env, void* arg, ZipFileRO* zipFile, ZipEntryRO zipEntr } // Only copy out the native file if it's different. - struct tm t; - ZipUtils::zipTimeToTimespec(when, &t); - modTime = mktime(&t); struct stat64 st; if (!isFileDifferent(localFileName, uncompLen, modTime, crc, &st)) { return INSTALL_SUCCEEDED; @@ -491,12 +465,10 @@ static int findSupportedAbi(JNIEnv *env, jlong apkHandle, jobjectArray supported static jint com_android_internal_content_NativeLibraryHelper_copyNativeBinaries(JNIEnv *env, jclass clazz, - jlong apkHandle, jstring javaNativeLibPath, jstring javaCpuAbi, - jboolean extractNativeLibs, jboolean hasNativeBridge) + jlong apkHandle, jstring javaNativeLibPath, jstring javaCpuAbi) { - void* args[] = { &javaNativeLibPath, &extractNativeLibs, &hasNativeBridge }; return (jint) iterateOverNativeFiles(env, apkHandle, javaCpuAbi, - copyFileIfChanged, reinterpret_cast<void*>(args)); + copyFileIfChanged, &javaNativeLibPath); } static jlong @@ -576,7 +548,7 @@ static JNINativeMethod gMethods[] = { "(J)V", (void *)com_android_internal_content_NativeLibraryHelper_close}, {"nativeCopyNativeBinaries", - "(JLjava/lang/String;Ljava/lang/String;ZZ)I", + "(JLjava/lang/String;Ljava/lang/String;)I", (void *)com_android_internal_content_NativeLibraryHelper_copyNativeBinaries}, {"nativeSumNativeBinaries", "(JLjava/lang/String;)J", diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index f69772a..ea592cf 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -1021,10 +1021,6 @@ <p>The default value of this attribute is <code>false</code>. --> <attr name="resumeWhilePausing" format="boolean" /> - <!-- When set installer will extract native libraries. If set to false - libraries in the apk must be stored and page-aligned. --> - <attr name="extractNativeLibs" format="boolean"/> - <!-- The <code>manifest</code> tag is the root of an <code>AndroidManifest.xml</code> file, describing the contents of an Android package (.apk) file. One @@ -1155,8 +1151,8 @@ @hide --> <attr name="usesCleartextTraffic" /> <attr name="multiArch" /> - <attr name="extractNativeLibs" /> </declare-styleable> + <!-- The <code>permission</code> tag declares a security permission that can be used to control access from other packages to specific components or features in your package (or other packages). See the diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index bfd0d26..2bb9aa8 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -2598,5 +2598,4 @@ <public type="style" name="Theme.DeviceDefault.Dialog.Alert" /> <public type="style" name="Theme.DeviceDefault.Light.Dialog.Alert" /> - <public type="attr" name="extractNativeLibs" /> </resources> diff --git a/core/tests/coretests/apks/install_jni_lib/Android.mk b/core/tests/coretests/apks/install_jni_lib/Android.mk index 7322e8d..b61ea8e 100644 --- a/core/tests/coretests/apks/install_jni_lib/Android.mk +++ b/core/tests/coretests/apks/install_jni_lib/Android.mk @@ -23,14 +23,6 @@ LOCAL_SHARED_LIBRARIES := \ libnativehelper LOCAL_MODULE := libframeworks_coretests_jni - -# this does not prevent build system -# from installing library to /system/lib LOCAL_MODULE_TAGS := tests -# .. we want to avoid that... so we put it somewhere -# bionic linker cant find it without outside help (nativetests): -LOCAL_MODULE_PATH_32 := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS)/$(LOCAL_MODULE) -LOCAL_MODULE_PATH_64 := $(TARGET_OUT_DATA_NATIVE_TESTS)/$(LOCAL_MODULE) - include $(BUILD_SHARED_LIBRARY) diff --git a/core/tests/coretests/apks/install_jni_lib/com_android_frameworks_coretests_JNITest.cpp b/core/tests/coretests/apks/install_jni_lib/com_android_frameworks_coretests_JNITest.cpp index e0b616c..957fc4a 100644 --- a/core/tests/coretests/apks/install_jni_lib/com_android_frameworks_coretests_JNITest.cpp +++ b/core/tests/coretests/apks/install_jni_lib/com_android_frameworks_coretests_JNITest.cpp @@ -27,8 +27,8 @@ static JNINativeMethod sMethods[] = { { "checkFunction", "()I", (void*) checkFunction }, }; -int register_com_android_frameworks_coretests_JNITests(JNIEnv* env) { - return jniRegisterNativeMethods(env, "com/android/frameworks/coretests/JNITests", sMethods, +int register_com_android_framework_coretests_JNITests(JNIEnv* env) { + return jniRegisterNativeMethods(env, "com/android/framework/coretests/JNITests", sMethods, NELEM(sMethods)); } @@ -46,7 +46,7 @@ jint JNI_OnLoad(JavaVM *jvm, void *reserved) { return JNI_ERR; } - if ((status = android::register_com_android_frameworks_coretests_JNITests(e)) < 0) { + if ((status = android::register_com_android_framework_coretests_JNITests(e)) < 0) { return JNI_ERR; } diff --git a/core/tests/coretests/apks/install_jni_lib_open_from_apk/Android.mk b/core/tests/coretests/apks/install_jni_lib_open_from_apk/Android.mk deleted file mode 100644 index 5fa2405..0000000 --- a/core/tests/coretests/apks/install_jni_lib_open_from_apk/Android.mk +++ /dev/null @@ -1,11 +0,0 @@ -LOCAL_PATH:= $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := $(call all-subdir-java-files) - -LOCAL_PACKAGE_NAME := install_jni_lib_open_from_apk - -LOCAL_JNI_SHARED_LIBRARIES_ZIP_OPTIONS := -0 -LOCAL_PAGE_ALIGN_JNI_SHARED_LIBRARIES := true - -include $(FrameworkCoreTests_BUILD_PACKAGE) diff --git a/core/tests/coretests/apks/install_jni_lib_open_from_apk/AndroidManifest.xml b/core/tests/coretests/apks/install_jni_lib_open_from_apk/AndroidManifest.xml deleted file mode 100644 index 190f894..0000000 --- a/core/tests/coretests/apks/install_jni_lib_open_from_apk/AndroidManifest.xml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2014 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. ---> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.frameworks.coretests.install_jni_lib_open_from_apk"> - - <application android:hasCode="true" android:label="@string/app_name" android:extractNativeLibs="false"> - <activity android:name="com.android.frameworks.coretests.OpenFromApkActivity" - android:label="@string/app_name"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - </application> -</manifest> diff --git a/core/tests/coretests/apks/install_jni_lib_open_from_apk/res/values/strings.xml b/core/tests/coretests/apks/install_jni_lib_open_from_apk/res/values/strings.xml deleted file mode 100644 index 8c2a0bf..0000000 --- a/core/tests/coretests/apks/install_jni_lib_open_from_apk/res/values/strings.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2015 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. ---> - -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">Load From Apk Test</string> -</resources> diff --git a/core/tests/coretests/apks/install_jni_lib_open_from_apk/src/com/android/frameworks/coretests/JNITests.java b/core/tests/coretests/apks/install_jni_lib_open_from_apk/src/com/android/frameworks/coretests/JNITests.java deleted file mode 100644 index 4f9176c..0000000 --- a/core/tests/coretests/apks/install_jni_lib_open_from_apk/src/com/android/frameworks/coretests/JNITests.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (C) 2014 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.frameworks.coretests; - -public class JNITests { - static { - System.loadLibrary("frameworks_coretests_jni"); - } - - public static native int checkFunction(); -} diff --git a/core/tests/coretests/apks/install_jni_lib_open_from_apk/src/com/android/frameworks/coretests/OpenFromApkActivity.java b/core/tests/coretests/apks/install_jni_lib_open_from_apk/src/com/android/frameworks/coretests/OpenFromApkActivity.java deleted file mode 100644 index 524cad7..0000000 --- a/core/tests/coretests/apks/install_jni_lib_open_from_apk/src/com/android/frameworks/coretests/OpenFromApkActivity.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2014 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.frameworks.coretests; - -import android.app.Activity; -import android.widget.TextView; -import android.os.Bundle; - -public class OpenFromApkActivity extends Activity { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - TextView tv = new TextView(this); - - int i = JNITests.checkFunction(); - - tv.setText("All is well: i=" + i); - - setContentView(tv); - } - -} |