diff --git a/tools/dicttool/NativeLib.mk b/tools/dicttool/NativeLib.mk
index 0d3507be3b85447bb295850d360716cf64b619e3..30444493ca072779587492c69e6c50ee8ad6aaf5 100644
--- a/tools/dicttool/NativeLib.mk
+++ b/tools/dicttool/NativeLib.mk
@@ -29,13 +29,7 @@ ifeq ($(FLAG_DBG), true)
     LOCAL_CFLAGS += -DFLAG_DBG -funwind-tables -fno-inline
 endif #FLAG_DBG
 
-ifneq ($(strip $(HOST_JDK_IS_64BIT_VERSION)),)
-LOCAL_CFLAGS += -m64
-LOCAL_LDFLAGS += -m64
-endif #HOST_JDK_IS_64BIT_VERSION
-
-LOCAL_CFLAGS += -DHOST_TOOL -fPIC -Wno-deprecated
-LOCAL_NO_DEFAULT_COMPILER_FLAGS := true
+LOCAL_CFLAGS += -DHOST_TOOL -fPIC -Wno-deprecated -Wno-unused-parameter -Wno-unused-function
 
 LOCAL_CLANG := true
 # For C++11
@@ -44,7 +38,6 @@ LOCAL_CFLAGS += -std=c++11
 LATINIME_NATIVE_JNI_DIR := $(LATINIME_DIR_RELATIVE_TO_DICTTOOL)/native/jni
 LATINIME_NATIVE_SRC_DIR := $(LATINIME_DIR_RELATIVE_TO_DICTTOOL)/native/jni/src
 LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(LATINIME_NATIVE_SRC_DIR)
-# Used in jni_common.cpp to avoid registering useless methods.
 
 include $(LOCAL_PATH)/$(LATINIME_NATIVE_JNI_DIR)/NativeFileList.mk
 
diff --git a/tools/dicttool/etc/dicttool_aosp b/tools/dicttool/etc/dicttool_aosp
index 65a1c3a1c048c6f6b280c7c07619c7db8a2cf5ea..09d65c691f6eebc4a11b5428f30a2771fc410f72 100755
--- a/tools/dicttool/etc/dicttool_aosp
+++ b/tools/dicttool/etc/dicttool_aosp
@@ -68,5 +68,14 @@ else
     libpath="$frameworkdir/$lib"
 fi
 
+# Check if the host Java executable supports a 32-bit JVM. It needs to do because the JNI
+# library is 32-bit.
+${DICTTOOL_JAVA-java} -d32 -version > /dev/null 2>&1
+if [[ $? != 0 ]] ; then
+    echo Please specify a Java executable that supports a 32-bit JVM as DICTTOOL_JAVA.
+    exit 1
+fi
+
 # might need more memory, e.g. -Xmx128M
-exec java -ea -classpath "$libpath":"$jarpath" -Djava.library.path="$libdir" "$classname" "$@"
+exec ${DICTTOOL_JAVA-java} -d32 -ea -classpath "$libpath":"$jarpath" \
+    -Djava.library.path="$libdir" "$classname" "$@"