Could someone show me an example of Android.bp
for the Android Studio Native C++ app to compile it in AOSP source? It can be for the 'hello world' auto generated project.
Is there a tool that auto generates it?
Thank you
I am not sure if this is the best approach but I have created an AIDL inteface to bind Java and C++, and then compilated the java code as a android_app
, the AIDL part as java_library_static
and the C++ code as cc_library_shared
in Android.bp file.
cc_library_shared {
name: "libjavanativetestapp",
owner: "Álison Venâncio <alison.venancio@gmail.com>",
vendor: true,
srcs: [ "app/src/main/cpp/*.cpp" ],
header_libs: [ "jni_headers" ],
shared_libs: [
"libutils",
"liblog",
],
}
java_library_static {
name: "vendor.alvenan.javanativetestapp",
owner: "Álison Venâncio <alison.venancio@gmail.com>",
srcs: [ "app/src/main/aidl/**/*.aidl" ],
installable: true,
sdk_version: "current",
}
android_app {
name: "JavaNativeTestApp",
owner: "Álison Venâncio <alison.venancio@gmail.com>",
srcs: [ "app/src/main/java/**/*.java" ],
resource_dirs: [ "app/src/main/res" ],
static_libs: [
"vendor.alvenan.timermanager",
"vendor.alvenan.javanativetestapp",
"com.google.android.material_material",
"androidx-constraintlayout_constraintlayout",
"androidx.test.ext.junit",
"androidx.test.espresso.core",
],
required: [
"vendor.alvenan.javanativetestapp",
"vendor.alvenan.timermanager",
"libjavanativetestapp",
],
optimize: {
enabled: false
},
system_ext_specific: true,
platform_apis: true,
certificate: "platform",
use_embedded_native_libs: true,
privileged: true,
manifest: "app/src/main/AndroidManifest.xml",
}
Here is the full code: https://github.com/alvenan/aosp_bench/tree/main/bench_test_jni/JavaNativeTestApp
My only issue is that the app is looking for the shared library in system/lib64
while the compilation is sending the .so to vendor/lib64
, but if I copy to system, all works fine.