diff --git a/xwords4/android/XWords4/AndroidManifest.xml b/xwords4/android/XWords4/AndroidManifest.xml
index 74a1e6aac..61ae73545 100644
--- a/xwords4/android/XWords4/AndroidManifest.xml
+++ b/xwords4/android/XWords4/AndroidManifest.xml
@@ -83,11 +83,6 @@
>
-
-
diff --git a/xwords4/android/XWords4/jni/Android.mk b/xwords4/android/XWords4/jni/Android.mk
index 48b4e1e1a..e7eba2fa2 100644
--- a/xwords4/android/XWords4/jni/Android.mk
+++ b/xwords4/android/XWords4/jni/Android.mk
@@ -24,6 +24,7 @@ local_DEFINES += \
-DDROP_BITMAPS \
-DDISABLE_EMPTYTRAY_UNDO \
-DDISABLE_TILE_SEL \
+ -DXWFEATURE_BOARDWORDS \
-DNODE_CAN_4 \
-DRELAY_ROOM_DEFAULT=\"\"\
-D__LITTLE_ENDIAN \
diff --git a/xwords4/android/XWords4/jni/utilwrapper.c b/xwords4/android/XWords4/jni/utilwrapper.c
index ed0bc12df..a2a1a9cef 100644
--- a/xwords4/android/XWords4/jni/utilwrapper.c
+++ b/xwords4/android/XWords4/jni/utilwrapper.c
@@ -422,6 +422,21 @@ and_util_playerScoreHeld( XW_UtilCtxt* uc, XP_U16 player )
}
#endif
+#ifdef XWFEATURE_BOARDWORDS
+static void
+and_util_cellSquareHeld( XW_UtilCtxt* uc, XWStreamCtxt* words )
+{
+ if ( NULL != words ) {
+ UTIL_CBK_HEADER( "cellSquareHeld", "(Ljava/lang/String;)V" );
+ jstring jwords =
+ streamToJString( MPPARM(util->util.mpool) env, words );
+ (*env)->CallVoidMethod( env, util->jutil, mid, jwords );
+ (*env)->DeleteLocalRef( env, jwords );
+ UTIL_CBK_TAIL();
+ }
+}
+#endif
+
#ifndef XWFEATURE_STANDALONE_ONLY
static void
and_util_addrChange( XW_UtilCtxt* uc, const CommsAddrRec* oldAddr,
@@ -512,6 +527,10 @@ makeUtil( MPFORMAL JNIEnv** envp, jobject jutil, CurGameInfo* gi,
SET_PROC(playerScoreHeld);
#endif
+#ifdef XWFEATURE_BOARDWORDS
+ SET_PROC(cellSquareHeld);
+#endif
+
#ifndef XWFEATURE_STANDALONE_ONLY
SET_PROC(addrChange);
#endif
diff --git a/xwords4/android/XWords4/jni/xwjni.c b/xwords4/android/XWords4/jni/xwjni.c
index 7ec9bae1a..18ac9bb90 100644
--- a/xwords4/android/XWords4/jni/xwjni.c
+++ b/xwords4/android/XWords4/jni/xwjni.c
@@ -1256,21 +1256,6 @@ Java_org_eehouse_android_xw4_jni_XwJNI_server_1endGame
XWJNI_END();
}
-JNIEXPORT jstring JNICALL
-Java_org_eehouse_android_xw4_jni_XwJNI_model_1getWordsPlayed
-( JNIEnv* env, jclass C, jint gamePtr, jint nMoves )
-{
- jstring result;
- XWJNI_START_GLOBALS();
- XWStreamCtxt* stream = and_empty_stream( MPPARM(mpool) globals );
- model_getWordsPlayed( state->game.model, nMoves, stream );
- result = streamToJString( MPPARM(mpool) env, stream );
- (*env)->DeleteLocalRef( env, result );
- stream_destroy( stream );
- XWJNI_END();
- return result;
-}
-
JNIEXPORT void JNICALL
Java_org_eehouse_android_xw4_jni_XwJNI_server_1sendChat
( JNIEnv* env, jclass C, jint gamePtr, jstring jmsg )
diff --git a/xwords4/android/XWords4/res/layout/game_config.xml b/xwords4/android/XWords4/res/layout/game_config.xml
index b7d0c3dbe..f8e0744e7 100644
--- a/xwords4/android/XWords4/res/layout/game_config.xml
+++ b/xwords4/android/XWords4/res/layout/game_config.xml
@@ -47,6 +47,18 @@
android:layout_height="fill_parent"
android:orientation="vertical">
+
+
+
+
+
-
-
-
-
-
+
-
-
+
diff --git a/xwords4/android/XWords4/res/menu/board_menu.xml b/xwords4/android/XWords4/res/menu/board_menu.xml
index 0e4617561..8942cca64 100644
--- a/xwords4/android/XWords4/res/menu/board_menu.xml
+++ b/xwords4/android/XWords4/res/menu/board_menu.xml
@@ -30,8 +30,6 @@
-