chore: initial commit
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
project(jecnaapi)
|
||||
cmake_minimum_required(VERSION 3.9.0)
|
||||
|
||||
set(PACKAGE_NAME jecnaapi)
|
||||
set(CMAKE_VERBOSE_MAKEFILE ON)
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
|
||||
# Define C++ library and add all sources
|
||||
add_library(${PACKAGE_NAME} SHARED src/main/cpp/cpp-adapter.cpp)
|
||||
|
||||
# Add Nitrogen specs :)
|
||||
include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/jecnaapi+autolinking.cmake)
|
||||
|
||||
# Set up local includes
|
||||
include_directories("src/main/cpp" "../cpp")
|
||||
|
||||
find_library(LOG_LIB log)
|
||||
|
||||
# Link all libraries together
|
||||
target_link_libraries(
|
||||
${PACKAGE_NAME}
|
||||
${LOG_LIB}
|
||||
android # <-- Android core
|
||||
)
|
||||
@@ -0,0 +1,112 @@
|
||||
buildscript {
|
||||
ext.Jecnaapi = [
|
||||
kotlinVersion: "2.0.21",
|
||||
minSdkVersion: 24,
|
||||
compileSdkVersion: 36
|
||||
]
|
||||
|
||||
ext.getExtOrDefault = { prop ->
|
||||
if (rootProject.ext.has(prop)) {
|
||||
return rootProject.ext.get(prop)
|
||||
}
|
||||
|
||||
return Jecnaapi[prop]
|
||||
}
|
||||
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath "com.android.tools.build:gradle:8.7.2"
|
||||
// noinspection DifferentKotlinGradleVersion
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion')}"
|
||||
}
|
||||
}
|
||||
|
||||
def reactNativeArchitectures() {
|
||||
def value = rootProject.getProperties().get("reactNativeArchitectures")
|
||||
return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
|
||||
}
|
||||
|
||||
apply plugin: "com.android.library"
|
||||
apply plugin: "kotlin-android"
|
||||
apply from: '../nitrogen/generated/android/jecnaapi+autolinking.gradle'
|
||||
|
||||
apply plugin: "com.facebook.react"
|
||||
|
||||
android {
|
||||
namespace "com.margelo.nitro.jecnaapi"
|
||||
|
||||
compileSdkVersion getExtOrDefault("compileSdkVersion")
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion getExtOrDefault("minSdkVersion")
|
||||
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
cppFlags "-frtti -fexceptions -Wall -fstack-protector-all"
|
||||
arguments "-DANDROID_STL=c++_shared", "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
|
||||
abiFilters (*reactNativeArchitectures())
|
||||
|
||||
buildTypes {
|
||||
debug {
|
||||
cppFlags "-O1 -g"
|
||||
}
|
||||
release {
|
||||
cppFlags "-O2"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
path "CMakeLists.txt"
|
||||
}
|
||||
}
|
||||
|
||||
packaging {
|
||||
resources {
|
||||
excludes += [
|
||||
"META-INF",
|
||||
"META-INF/**"
|
||||
]
|
||||
}
|
||||
|
||||
jniLibs {
|
||||
excludes += [
|
||||
"**/libc++_shared.so",
|
||||
"**/libfbjni.so",
|
||||
"**/libjsi.so",
|
||||
"**/libfolly_json.so",
|
||||
"**/libfolly_runtime.so",
|
||||
"**/libglog.so",
|
||||
"**/libhermes.so",
|
||||
"**/libhermes-executor-debug.so",
|
||||
"**/libhermes_executor.so",
|
||||
"**/libreactnative.so",
|
||||
"**/libreactnativejni.so",
|
||||
"**/libturbomodulejsijni.so",
|
||||
"**/libreact_nativemodule_core.so",
|
||||
"**/libjscexecutor.so"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
prefab true
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_17
|
||||
targetCompatibility JavaVersion.VERSION_17
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation "com.facebook.react:react-android"
|
||||
implementation project(":react-native-nitro-modules")
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
</manifest>
|
||||
@@ -0,0 +1,11 @@
|
||||
#include <jni.h>
|
||||
#include "jecnaapiOnLoad.hpp"
|
||||
|
||||
#include <fbjni/fbjni.h>
|
||||
|
||||
|
||||
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) {
|
||||
return facebook::jni::initialize(vm, []() {
|
||||
margelo::nitro::jecnaapi::registerAllNatives();
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.margelo.nitro.jecnaapi
|
||||
|
||||
import com.facebook.proguard.annotations.DoNotStrip
|
||||
|
||||
@DoNotStrip
|
||||
class Jecnaapi : HybridJecnaapiSpec() {
|
||||
override fun multiply(a: Double, b: Double): Double {
|
||||
return a * b
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.margelo.nitro.jecnaapi
|
||||
|
||||
import com.facebook.react.BaseReactPackage
|
||||
import com.facebook.react.bridge.NativeModule
|
||||
import com.facebook.react.bridge.ReactApplicationContext
|
||||
import com.facebook.react.module.model.ReactModuleInfoProvider
|
||||
|
||||
class JecnaapiPackage : BaseReactPackage() {
|
||||
override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
|
||||
return null
|
||||
}
|
||||
|
||||
override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
|
||||
return ReactModuleInfoProvider { HashMap() }
|
||||
}
|
||||
|
||||
companion object {
|
||||
init {
|
||||
System.loadLibrary("jecnaapi")
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user