blob: d8521a5406040d2065987b53b52104f3910dc16f [file] [log] [blame]
Elliott Hughesc08f9fb2010-04-16 17:44:12 -07001/*
2 * Copyright (C) 2010 The Android Open Source Project
Elliott Hughesa9f5c162010-06-16 16:32:18 -07003 *
Elliott Hughesc08f9fb2010-04-16 17:44:12 -07004 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
Elliott Hughesa9f5c162010-06-16 16:32:18 -07007 *
Elliott Hughesc08f9fb2010-04-16 17:44:12 -07008 * http://www.apache.org/licenses/LICENSE-2.0
Elliott Hughesa9f5c162010-06-16 16:32:18 -07009 *
Elliott Hughesc08f9fb2010-04-16 17:44:12 -070010 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Elliott Hughes972d9be2010-09-16 16:38:23 -070017#define LOG_TAG "libcore" // We'll be next to "dalvikvm" in the log; make the distinction clear.
18
Elliott Hughesa9f5c162010-06-16 16:32:18 -070019#include "JniConstants.h"
Elliott Hughesc08f9fb2010-04-16 17:44:12 -070020#include "ScopedLocalFrame.h"
21
Elliott Hughes972d9be2010-09-16 16:38:23 -070022#include <stdlib.h>
23
Elliott Hughesc08f9fb2010-04-16 17:44:12 -070024extern int register_java_io_Console(JNIEnv* env);
25extern int register_java_io_File(JNIEnv* env);
Brian Carlstromec2f5932010-05-07 16:58:16 -070026extern int register_java_io_ObjectStreamClass(JNIEnv* env);
Elliott Hughesdbbdffc2010-07-22 18:46:47 -070027extern int register_java_lang_Character(JNIEnv* env);
Brian Carlstromec2f5932010-05-07 16:58:16 -070028extern int register_java_lang_Math(JNIEnv* env);
Elliott Hughesc08f9fb2010-04-16 17:44:12 -070029extern int register_java_lang_ProcessManager(JNIEnv* env);
Elliott Hughes910106e2010-08-26 17:20:46 -070030extern int register_java_lang_RealToString(JNIEnv* env);
Brian Carlstromec2f5932010-05-07 16:58:16 -070031extern int register_java_lang_StrictMath(JNIEnv* env);
Elliott Hughesc08f9fb2010-04-16 17:44:12 -070032extern int register_java_lang_System(JNIEnv* env);
Brian Carlstrom12cd1f02010-06-22 23:43:20 -070033extern int register_java_math_NativeBN(JNIEnv* env);
Elliott Hughesc08f9fb2010-04-16 17:44:12 -070034extern int register_java_net_InetAddress(JNIEnv* env);
35extern int register_java_net_NetworkInterface(JNIEnv* env);
Elliott Hughes85105242010-08-16 16:10:53 -070036extern int register_java_nio_ByteOrder(JNIEnv* env);
Elliott Hughes5cd6df22010-06-30 16:35:27 -070037extern int register_java_nio_charset_Charsets(JNIEnv* env);
Elliott Hughesbb1c0412011-02-16 18:18:44 -080038extern int register_java_text_Bidi(JNIEnv* env);
Elliott Hughese377c5a2010-06-25 16:30:38 -070039extern int register_java_util_regex_Matcher(JNIEnv* env);
40extern int register_java_util_regex_Pattern(JNIEnv* env);
Elliott Hughes74c05e22010-05-07 14:23:10 -070041extern int register_java_util_zip_Adler32(JNIEnv* env);
42extern int register_java_util_zip_CRC32(JNIEnv* env);
43extern int register_java_util_zip_Deflater(JNIEnv* env);
44extern int register_java_util_zip_Inflater(JNIEnv* env);
Elliott Hughesc27a3662010-10-01 18:17:30 -070045extern int register_libcore_icu_ICU(JNIEnv* env);
46extern int register_libcore_icu_NativeBreakIterator(JNIEnv* env);
Elliott Hughescfa6ffe2010-10-04 13:52:55 -070047extern int register_libcore_icu_NativeCollation(JNIEnv* env);
Elliott Hughesc27a3662010-10-01 18:17:30 -070048extern int register_libcore_icu_NativeConverter(JNIEnv* env);
49extern int register_libcore_icu_NativeDecimalFormat(JNIEnv* env);
Elliott Hughes21557bb2010-06-23 14:59:03 -070050extern int register_libcore_icu_NativeIDN(JNIEnv* env);
51extern int register_libcore_icu_NativeNormalizer(JNIEnv* env);
52extern int register_libcore_icu_NativePluralRules(JNIEnv* env);
53extern int register_libcore_icu_TimeZones(JNIEnv* env);
Elliott Hughes99a89dd2010-08-03 17:13:53 -070054extern int register_libcore_io_IoUtils(JNIEnv* env);
Elliott Hughesf934c3d2011-03-14 18:24:10 -070055extern int register_libcore_io_Memory(JNIEnv* env);
Elliott Hughescdf7a1f2011-03-15 16:13:35 -070056extern int register_libcore_io_OsConstants(JNIEnv* env);
Elliott Hughesec617e22011-03-16 16:42:06 -070057extern int register_libcore_io_Posix(JNIEnv* env);
Stan Chesnutt975dc422010-12-09 16:52:41 -080058extern int register_libcore_net_RawSocket(JNIEnv* env);
Jesse Wilsonb8f92852010-12-22 12:04:40 -080059extern int register_org_apache_harmony_dalvik_NativeTestTarget(JNIEnv* env);
Elliott Hughesc08f9fb2010-04-16 17:44:12 -070060extern int register_org_apache_harmony_luni_platform_OSNetworkSystem(JNIEnv* env);
Brian Carlstromec2f5932010-05-07 16:58:16 -070061extern int register_org_apache_harmony_luni_util_fltparse(JNIEnv* env);
Elliott Hughesc08f9fb2010-04-16 17:44:12 -070062extern int register_org_apache_harmony_xml_ExpatParser(JNIEnv* env);
63extern int register_org_apache_harmony_xnet_provider_jsse_NativeCrypto(JNIEnv* env);
Elliott Hughesc08f9fb2010-04-16 17:44:12 -070064
65// DalvikVM calls this on startup, so we can statically register all our native methods.
66extern "C" int registerCoreLibrariesJni(JNIEnv* env) {
67 ScopedLocalFrame localFrame(env);
68
Elliott Hughesa9f5c162010-06-16 16:32:18 -070069 JniConstants::init(env);
70
Elliott Hughesc08f9fb2010-04-16 17:44:12 -070071 bool result =
Elliott Hughesc08f9fb2010-04-16 17:44:12 -070072 register_java_io_Console(env) != -1 &&
73 register_java_io_File(env) != -1 &&
Elliott Hughesc08f9fb2010-04-16 17:44:12 -070074 register_java_io_ObjectStreamClass(env) != -1 &&
Elliott Hughesdbbdffc2010-07-22 18:46:47 -070075 register_java_lang_Character(env) != -1 &&
Elliott Hughesc08f9fb2010-04-16 17:44:12 -070076 register_java_lang_Math(env) != -1 &&
77 register_java_lang_ProcessManager(env) != -1 &&
Elliott Hughes910106e2010-08-26 17:20:46 -070078 register_java_lang_RealToString(env) != -1 &&
Elliott Hughesc08f9fb2010-04-16 17:44:12 -070079 register_java_lang_StrictMath(env) != -1 &&
80 register_java_lang_System(env) != -1 &&
Brian Carlstrom12cd1f02010-06-22 23:43:20 -070081 register_java_math_NativeBN(env) != -1 &&
Elliott Hughesc08f9fb2010-04-16 17:44:12 -070082 register_java_net_InetAddress(env) != -1 &&
83 register_java_net_NetworkInterface(env) != -1 &&
Elliott Hughes85105242010-08-16 16:10:53 -070084 register_java_nio_ByteOrder(env) != -1 &&
Elliott Hughes5cd6df22010-06-30 16:35:27 -070085 register_java_nio_charset_Charsets(env) != -1 &&
Elliott Hughesbb1c0412011-02-16 18:18:44 -080086 register_java_text_Bidi(env) != -1 &&
Elliott Hughese377c5a2010-06-25 16:30:38 -070087 register_java_util_regex_Matcher(env) != -1 &&
88 register_java_util_regex_Pattern(env) != -1 &&
Elliott Hughesc08f9fb2010-04-16 17:44:12 -070089 register_java_util_zip_Adler32(env) != -1 &&
90 register_java_util_zip_CRC32(env) != -1 &&
91 register_java_util_zip_Deflater(env) != -1 &&
92 register_java_util_zip_Inflater(env) != -1 &&
Elliott Hughesc27a3662010-10-01 18:17:30 -070093 register_libcore_icu_ICU(env) != -1 &&
94 register_libcore_icu_NativeBreakIterator(env) != -1 &&
Elliott Hughescfa6ffe2010-10-04 13:52:55 -070095 register_libcore_icu_NativeCollation(env) != -1 &&
Elliott Hughesc27a3662010-10-01 18:17:30 -070096 register_libcore_icu_NativeConverter(env) != -1 &&
97 register_libcore_icu_NativeDecimalFormat(env) != -1 &&
Elliott Hughes21557bb2010-06-23 14:59:03 -070098 register_libcore_icu_NativeIDN(env) != -1 &&
99 register_libcore_icu_NativeNormalizer(env) != -1 &&
100 register_libcore_icu_NativePluralRules(env) != -1 &&
101 register_libcore_icu_TimeZones(env) != -1 &&
Elliott Hughes99a89dd2010-08-03 17:13:53 -0700102 register_libcore_io_IoUtils(env) != -1 &&
Elliott Hughesf934c3d2011-03-14 18:24:10 -0700103 register_libcore_io_Memory(env) != -1 &&
Elliott Hughescdf7a1f2011-03-15 16:13:35 -0700104 register_libcore_io_OsConstants(env) != -1 &&
Elliott Hughesec617e22011-03-16 16:42:06 -0700105 register_libcore_io_Posix(env) != -1 &&
Stan Chesnutt975dc422010-12-09 16:52:41 -0800106 register_libcore_net_RawSocket(env) != -1 &&
Elliott Hughes296b43d2011-02-10 15:54:17 -0800107 register_org_apache_harmony_dalvik_NativeTestTarget(env) != -1 &&
Elliott Hughesc08f9fb2010-04-16 17:44:12 -0700108 register_org_apache_harmony_luni_platform_OSNetworkSystem(env) != -1 &&
Elliott Hughesc08f9fb2010-04-16 17:44:12 -0700109 register_org_apache_harmony_luni_util_fltparse(env) != -1 &&
Elliott Hughes296b43d2011-02-10 15:54:17 -0800110 register_org_apache_harmony_xml_ExpatParser(env) != -1 &&
Elliott Hughesc08f9fb2010-04-16 17:44:12 -0700111 register_org_apache_harmony_xnet_provider_jsse_NativeCrypto(env) != -1 &&
Elliott Hughes296b43d2011-02-10 15:54:17 -0800112 true;
Elliott Hughesc08f9fb2010-04-16 17:44:12 -0700113
Elliott Hughes972d9be2010-09-16 16:38:23 -0700114 if (!result) {
115 LOGE("Failed to initialize the core libraries; aborting...");
116 abort();
117 }
118 return 0;
Elliott Hughesc08f9fb2010-04-16 17:44:12 -0700119}