在 iOS 和 Android 上运行 Go 代码( 三 )

注意确保为您的 Android SDK 和已下载的 NDK 版本设置正确的位置 。
make android 将我们需要的所有共享库构建到正确的文件夹中 。 现在 , 我们需要将库添加到 CMake:
// android/app/src/main/cpp/CMakeLists.txt// ...add_library(lib_foo SHARED IMPORTED)set_property(TARGET lib_foo PROPERTY IMPORTED_NO_SONAME 1)set_target_properties(lib_foo PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libfoo.so)include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../jniLibs/${CMAKE_ANDROID_ARCH_ABI}/)// ...target_link_libraries(native-lib lib_foo ${log-lib})我花了一段时间才弄清楚这些设置 , 再次命名很重要 , 因此使用库命名 lib_xxxx 并设置属性很重要 , 同时设置 IMPORTED_NO_SONAME 1, 否则您的 apk 会在错误的位置查找你的库 。
现在 , 我们可以将 JN I 代码连接到 Go 库中 , 然后运行我们的应用程序:
// android/app/src/main/cpp/native-lib.cpp#include "libfoo.h"extern "C" {jstringJava_com_rogchap_foobar_MainActivity_reverse(JNIEnv* env, jobject, jstring str) {const char* cstr = env->GetStringUTFChars(str, 0);char* cout = reverse(const_cast(cstr));jstring out = env->NewStringUTF(cout);env->ReleaseStringUTFChars(str, cstr);free(cout);return out;}}
在 iOS 和 Android 上运行 Go 代码文章插图
libfoo android应用
结论Go 的优势之一就是它是跨平台的 , 这不仅意味着 Window , Mac 和 Linux , Go 还可以针对许多其他体系结构 , 包括 iOS 和 Android 。 现在 , 您可以在工具栏中找到另一个选项 , 以创建在服务器、移动应用程序甚至 Web(通过 Web 程序集)上运行的共享库 。
本教程的所有代码均可在 GitHub 上获得:
期待听到您使用 Go 构建的新杀手级应用程序 。
原文链接:
作者:Roger Chapman
译者:polarisxu
本文地址:
参考资料[1]go mobile:
[2]Fat 二进制文件:
【在 iOS 和 Android 上运行 Go 代码】[3]$GOROOT/misc/ios/clangwrap.sh :