mirror of
https://github.com/zhigang1992/RubyMotion.git
synced 2026-04-11 22:42:04 +08:00
Use System.loadLibrary() to load the payload. This is what JNI sample apps use.
Line 64: https://android.googlesource.com/platform/development/+/android-4.4.4_r2/ndk/samples/hello-jni/src/com/example/hellojni/HelloJni.java This makes RubyMotion work on older Android versions (such as API 8). Patch by Mark Villacampa.
This commit is contained in:
@@ -108,7 +108,7 @@ EOS
|
||||
|
||||
# Compile and link payload library.
|
||||
libs_abi_subpath = "lib/#{App.config.armeabi_directory_name}"
|
||||
libpayload_subpath = "#{libs_abi_subpath}/#{App.config.payload_library_name}"
|
||||
libpayload_subpath = "#{libs_abi_subpath}/#{App.config.payload_library_filename}"
|
||||
libpayload_path = "#{app_build_dir}/#{libpayload_subpath}"
|
||||
if !File.exist?(libpayload_path) \
|
||||
or ruby_objs_changed \
|
||||
@@ -231,7 +231,7 @@ EOS
|
||||
java_file_txt << "\t#{method}\n"
|
||||
end
|
||||
if name == App.config.main_activity
|
||||
java_file_txt << "\tstatic {\n\t\tSystem.load(\"#{App.config.payload_library_name}\");\n\t}\n"
|
||||
java_file_txt << "\tstatic {\n\t\tSystem.loadLibrary(\"#{App.config.payload_library_name}\");\n\t}\n"
|
||||
end
|
||||
java_file_txt << "}\n"
|
||||
java_file = File.join(java_app_package_dir, name + '.java')
|
||||
|
||||
@@ -150,12 +150,16 @@ module Motion; module Project;
|
||||
"#{cflags} -I\"#{ndk_path}/sources/cxx-stl/stlport/stlport\""
|
||||
end
|
||||
|
||||
def payload_library_filename
|
||||
"lib#{payload_library_name}.so"
|
||||
end
|
||||
|
||||
def payload_library_name
|
||||
'libpayload.so'
|
||||
'payload'
|
||||
end
|
||||
|
||||
def ldflags
|
||||
"-Wl,-soname,#{payload_library_name} -shared --sysroot=\"#{ndk_path}/platforms/android-#{api_version}/arch-arm\" -lgcc -gcc-toolchain \"#{ndk_path}/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64\" -no-canonical-prefixes -target #{arch}-none-linux-androideabi -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now"
|
||||
"-Wl,-soname,#{payload_library_filename} -shared --sysroot=\"#{ndk_path}/platforms/android-#{api_version}/arch-arm\" -lgcc -gcc-toolchain \"#{ndk_path}/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64\" -no-canonical-prefixes -target #{arch}-none-linux-androideabi -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now"
|
||||
end
|
||||
|
||||
def versioned_datadir
|
||||
|
||||
Reference in New Issue
Block a user