Skip to content

Latest commit

 

History

History
80 lines (62 loc) · 1.95 KB

README.md

File metadata and controls

80 lines (62 loc) · 1.95 KB

V8ForAndroid

V8 build setting for android (arm, arm64, x86) on Linux (Ubuntu).

Complie V8 for Android

V8

Create android NDK project

It is assumed that you have compiled armeabi-v7a, arm64-v8a, x86.

  1. import include, armeabi-v7a, arm64-v8a, x86, include folder
app
-- libs
   -- arm64-v8a
   -- armeabi-v7a
   -- x86
   -- include
  1. edit CMakeLists.txt file
cmake_minimum_required(VERSION 3.4.1)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")

# import libv8_base.a called v8_base
add_library( v8_base STATIC IMPORTED )
set_target_properties( v8_base PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libv8_base.a )

# import libv8_nosnapshot.a called v8_nosnapshot
add_library( v8_nosnapshot STATIC IMPORTED )
set_target_properties( v8_nosnapshot PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libv8_nosnapshot.a )

add_library( native-lib SHARED src/main/cpp/native-lib.cpp )
target_include_directories( native-lib PRIVATE ${CMAKE_SOURCE_DIR}/libs/include )

target_link_libraries( native-lib v8_base v8_nosnapshot log )

  1. add cmake option in build.gragle
cmake {
    cppFlags "-std=c++11 -frtti -fexceptions"
    abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a'
    arguments "-DANDROID_UNIFIED_HEADERS=ON"
}
  1. add function in native-lib.cpp
// return value is version of v8
Java_com_leibniz55_v8test_MainActivity_getVersion(
        JNIEnv *env,
        jobject /* this */) {
    const char* utfString = v8::V8::GetVersion();
    return env->NewStringUTF(utfString);
}
  1. add native java function in MainActivity
public native String getVersion();

  1. call getVersion()
TextView tv = (TextView) findViewById(R.id.sample_text);
tv.setText(getVersion());
  1. run application
version of v8 will appear on the screen.

Author

devikkim, devikkim@gmail.com