git clone https://github.com/osfans/trime --recursive
diff --git a/app/src/main/jni/librime_jni/rime_jni.cc b/app/src/main/jni/librime_jni/rime_jni.cc
index 0dfd132b..419d3a07 100644
--- a/app/src/main/jni/librime_jni/rime_jni.cc
+++ b/app/src/main/jni/librime_jni/rime_jni.cc
@@ -11,7 +11,7 @@ extern void rime_require_module_lua();
extern void rime_require_module_charcode();
extern void rime_require_module_octagram();
// librime is compiled as a static library, we have to link modules explicitly
-static void declare_librime_module_dependencies() {
+extern "C" void declare_librime_module_dependencies() {
rime_require_module_lua();
rime_require_module_charcode();
rime_require_module_octagram();
@@ -132,11 +132,11 @@ static inline bool is_rime_running() { return Rime::Instance().isRunning(); }
GlobalRefSingleton *GlobalRef;
-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved) {
+/*JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved) {
GlobalRef = new GlobalRefSingleton(jvm);
declare_librime_module_dependencies();
return JNI_VERSION_1_6;
-}
+}*/
extern "C" JNIEXPORT void JNICALL Java_com_osfans_trime_core_Rime_startupRime(
JNIEnv *env, jclass clazz, jstring shared_dir, jstring user_dir,
Save this script as app/src/main/jni/build
:
#!/bin/env ruby
`rm -rf libs; mkdir libs`
ndk_dir = ENV['ANDROID_HOME'] + '/ndk-ln'
targets = 'arm64-v8a-29,x86-29,armeabi-v7a-21,x86_64-29'
targets.split(',').each do |group|
`rm -rf target; mkdir target`
Dir.chdir 'target'
scan = group.scan(/^(.*)-([0-9]+)$/)
abi = scan[0][0]
api = scan[0][1]
puts [abi, api].inspect
lib_copy_dir = "../libs/#{abi}"
Dir.mkdir lib_copy_dir
system "cmake \
-DCMAKE_TOOLCHAIN_FILE=#{ndk_dir}/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=#{abi} \
-DANDROID_PLATFORM=android-#{api} -G Ninja .."
system 'ninja'
`cp -v 'librime_jni/librime_jni.so' #{lib_copy_dir}/librime.so`
Dir.chdir '..'
end
Then check and replace ndk_dir
variable, and run it:
cd /app/src/main/jni
./build
~/open-source/trime/app/src/main/jni develop ⇡2 !1 ?4 ❯ tree libs 11:23:51
libs
├── arm64-v8a
│ └── librime.so
├── armeabi-v7a
│ └── librime.so
├── x86
│ └── librime.so
└── x86_64
└── librime.so
5 directories, 4 files