diff --git a/orderfile/app/build.gradle b/orderfile/app/build.gradle index 0737dd4d..cbefe9c2 100644 --- a/orderfile/app/build.gradle +++ b/orderfile/app/build.gradle @@ -26,11 +26,13 @@ android { } buildFeatures { + prefab true viewBinding true } } dependencies { + implementation project(":base") implementation libs.appcompat implementation libs.material implementation libs.androidx.constraintlayout diff --git a/orderfile/app/src/main/cpp/CMakeLists.txt b/orderfile/app/src/main/cpp/CMakeLists.txt index aa563db0..37f5f0c2 100644 --- a/orderfile/app/src/main/cpp/CMakeLists.txt +++ b/orderfile/app/src/main/cpp/CMakeLists.txt @@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.22.1) project(OrderfileDemo CXX) include(AppLibrary) +find_package(base CONFIG REQUIRED) # We have setup build variables that you can just comment or uncomment to use. # Make sure to have only one build variable uncommented at a time. @@ -13,7 +14,7 @@ set(GENERATE_PROFILES ON) #set(USE_PROFILE "${CMAKE_SOURCE_DIR}/demo.orderfile") add_app_library(orderfiledemo SHARED orderfile.cpp) -target_link_libraries(orderfiledemo log) +target_link_libraries(orderfiledemo PRIVATE base::base log) if(GENERATE_PROFILES) # Generating profiles requires any optimization flag aside from -O0. diff --git a/orderfile/app/src/main/cpp/orderfile.cpp b/orderfile/app/src/main/cpp/orderfile.cpp index f091075d..9fdd69f4 100644 --- a/orderfile/app/src/main/cpp/orderfile.cpp +++ b/orderfile/app/src/main/cpp/orderfile.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -46,9 +47,26 @@ void DumpProfileDataIfNeeded(const char* temp_dir) { #endif } -extern "C" JNIEXPORT void JNICALL -Java_com_example_orderfiledemo_MainActivity_runWorkload(JNIEnv* env, - jobject /* this */, - jstring temp_dir) { +void RunWorkload(JNIEnv* env, jobject /* this */, jstring temp_dir) { DumpProfileDataIfNeeded(env->GetStringUTFChars(temp_dir, 0)); } + +extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* _Nonnull vm, + void* _Nullable) { + JNIEnv* env; + if (vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_6) != JNI_OK) { + return JNI_ERR; + } + + jclass c = env->FindClass("com/example/orderfiledemo/MainActivity"); + if (c == nullptr) return JNI_ERR; + + static const JNINativeMethod methods[] = { + {"runWorkload", "(Ljava/lang/String;)V", + reinterpret_cast(RunWorkload)}, + }; + int rc = env->RegisterNatives(c, methods, arraysize(methods)); + if (rc != JNI_OK) return rc; + + return JNI_VERSION_1_6; +}