diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index c50b1e4..a8990f7 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -11,6 +11,8 @@
+
+
diff --git a/Makefile b/Makefile
index 7875680..48c624e 100644
--- a/Makefile
+++ b/Makefile
@@ -7,7 +7,7 @@ with-libs:
NDK_DEBUG=1 $(CFG_ANDROID_NDK_PATH)/ndk-build -B
cp -a $(CFG_BUILD_HOME)sofile/*.so* ./libs/armeabi/
cp -a ./extlibs/* ./libs/armeabi
- cd ./libs/armeabi && find . -name libservo* | xargs -I {} ln -s {} libservo.so && find . -name libglut* | xargs -I {} ln -s {} libglut.so & cd ../../
+ find . -name libglut* | xargs -I {} ln -s {} libglut.so & cd ../../
$(CFG_ANDROID_SDK_PATH)/tools/android update project --name ServoAndroid --target "android-18" --path .
ant debug
diff --git a/jni/android-dl.cpp b/jni/android-dl.cpp
index d358b9c..9abde2d 100644
--- a/jni/android-dl.cpp
+++ b/jni/android-dl.cpp
@@ -211,7 +211,7 @@ android_dlneeds(const char *library)
return NULL;
}
if (dyn.d_tag == DT_NEEDED) {
- /* LOGI("needs: %s\n", dynstr + dyn.d_un.d_val); */
+ LOGI("needs: %s\n", dynstr + dyn.d_un.d_val);
result[n_needed] = strdup(dynstr + dyn.d_un.d_val);
n_needed++;
}
@@ -243,12 +243,12 @@ android_dlopen(const char *library)
char* library_path = getenv("LD_LIBRARY_PATH");
strcpy(ld_library_path, library_path);
- LOGI("LD_LIBRARY_PATH is : %s", ld_library_path);
+ // LOGI("LD_LIBRARY_PATH is : %s", ld_library_path);
libraries[i1] = strtok(ld_library_path, ":");
- LOGI("library : %s", libraries[i1]);
+ //LOGI("library : %s", libraries[i1]);
while(libraries[i1]) {
libraries[++i1] = strtok(NULL, ":");
- LOGI("library : %s", libraries[i1]);
+ //LOGI("library : %s", libraries[i1]);
}
icnt = i1;
@@ -260,10 +260,10 @@ android_dlopen(const char *library)
return 0;
}
library_locations[0] = "/data/data/com.example.ServoAndroid/lib";
- LOGI("added library path : %s", library_locations[0]);
+ // LOGI("added library path : %s", library_locations[0]);
for(int i = 0; i < icnt; i++ ) {
library_locations[i+1] = strdup(libraries[i]);
- LOGI("added library path : %s", library_locations[i+1]);
+ // LOGI("added library path : %s", library_locations[i+1]);
}
/*
diff --git a/jni/main.cpp b/jni/main.cpp
index cc2a7ac..68035d5 100644
--- a/jni/main.cpp
+++ b/jni/main.cpp
@@ -60,7 +60,6 @@ typedef void (*fty_glutIdleFunc)(void(*)());
typedef void (*fty_glutInitWindowSize)(int, int);
typedef int (*fty_glutGetModifiers)();
-
#define REGISTER_FUNCTION(lib, function)\
void (*reg_fn_##function)(fty_##function);\
*(void**)(®_fn_##function) = dlsym(lib, "reg_fn_" #function);\
@@ -91,18 +90,17 @@ static void init_servo()
// LOGI("loading url is : %s", servo_url);
-// void* librustuv = android_dlopen("/data/data/com.example.ServoAndroid/lib/librustuv-d4277cd5f62aa99-0.9-pre.so");
-// if (librustuv == NULL) {
-// LOGW("failed to load rustuv lib: %s", dlerror());
-// return;
-// }
-
LOGI("load servo library");
void* libservo = android_dlopen("/data/data/com.example.ServoAndroid/lib/libservo.so");
if (libservo == NULL) {
LOGW("failed to load servo lib: %s", dlerror());
return;
}
+ void* crate_map = dlsym(libservo, "_rust_crate_map_toplevel");
+ if (crate_map == NULL) {
+ LOGW("failed to load the crate map from the servo lib: %s", dlerror());
+ return;
+ }
LOGI("load rust-glut library");
void* libglut = android_dlopen("/data/data/com.example.ServoAndroid/lib/libglut-f186cebf-0.1.so");
@@ -133,11 +131,26 @@ static void init_servo()
REGISTER_FUNCTION(libglut, glutInitWindowSize);
REGISTER_FUNCTION(libglut, glutGetModifiers);
+
+ LOGI("load libstd library to set the cratemap");
+ void* libstd = android_dlopen("/data/data/com.example.ServoAndroid/lib/libstd-966edb7e-0.10-pre.so");
+ if (libstd == NULL) {
+ LOGW("failed to load libstd: %s", dlerror());
+ return;
+ }
+
+ void (*rust_set_crate_map)(void*) = (void (*)(void*))dlsym(libstd, "rust_set_crate_map");
+ if (rust_set_crate_map == NULL) {
+ LOGW("failed to load rust_set_crate_map from libstd: %s", dlerror());
+ return;
+ }
+ rust_set_crate_map(crate_map);
+
void (*main)(int, char**);
*(void**)(&main) = dlsym(libservo, "android_start");
if (main) {
LOGI("go into android_start()");
- static char* argv[] = {"servo", "/sdcard/about-mozilla.html"};
+ static char* argv[] = {"servo", "/mnt/sdcard/html/about-mozilla.html"};
(*main)(2, argv);
return;
}