You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
vi buildSrc/base/version.properties
# Release version definition
# This file is read by gradle build scripts, but also packaged with builder and
# builder-model as a resource, for Version classes to read.
baseVersion = 30.3.0
buildVersion = 7.3.0 #should be same as the version being used in the studio
cmdlineToolsVersion = 7.0
build gradle plugin
cd studio_src/tools
./gradlew :publishAndroidGradleLocal
Build Application for RISC-V
Creat an new project in Android studio
File->New->New Project
Chose an templates->Next
Change settings for the project
Add JNI call example(Can be different when you are trying to write your own application)
Project navigator> [right click] > Add C++ to module
Add JNI example code
#include <jni.h>
#include <string>
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_myapplication_FirstFragment_stringFromJNI(
JNIEnv* env,
jobject /* this */) {
std::string hello = "Hello from C++ LCY";
return env->NewStringUTF(hello.c_str());
}
Add JNI call in Java
public class MainActivity extends AppCompatActivity {
+ static {
+ System.loadLibrary("myapplication");
+ }
private ActivityMainBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
// Example of a call to a native method
+ TextView tv = binding.sampleText;
+ tv.setText(stringFromJNI());
}
+ public native String stringFromJNI();
}
Download gradle plugin from here or build plugin with steps from section 1
Extract tarball to an directory
Add gradle path to build.gradle
buildscript {
repositories {
maven { url "/Users/maohan/Downloads/repo" }
}
dependencies {
classpath 'com.android.tools.build:gradle:7.3.0'
}
}
plugins {
id 'com.android.application' version '7.3.0' apply false
id 'com.android.library' version '7.3.0' apply false
}
Update all of the versions for corresponding gradle plugin
If you meet this link error
ld: error: undefined symbol: operator delete(void*)
>>> referenced by new:334 (/Users/maohan/Library/Android/sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/new:334)
>>> CMakeFiles/myapplication.dir/myapplication.cpp.o:(Java_com_example_myapplication_FirstFragment_stringFromJNI)
>>> referenced by new:334 (/Users/maohan/Library/Android/sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/new:334)
>>> CMakeFiles/myapplication.dir/myapplication.cpp.o:(Java_com_example_myapplication_FirstFragment_stringFromJNI)
ld: error: undefined symbol: __gxx_personality_v0
>>> referenced by myapplication.cpp
>>> CMakeFiles/myapplication.dir/myapplication.cpp.o:(DW.ref.__gxx_personality_v0)
clang-12: error: linker command failed with exit code 1 (use -v to see invocation)
Please add following line in CMakeLists.txt
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lc++")