107 lines
2.7 KiB
Python
107 lines
2.7 KiB
Python
#Package: com.ola.render
|
|
#Description:
|
|
#Author: 王强
|
|
|
|
|
|
load("@build_bazel_rules_android//android:rules.bzl", "android_binary", "android_library")
|
|
|
|
|
|
def ola_aar(name,
|
|
srcs = [],
|
|
assets = [],
|
|
proguard_specs = [],
|
|
assets_dir = "" ):
|
|
|
|
_ola_jni(
|
|
name = name + "_jni",
|
|
)
|
|
|
|
native.genrule(
|
|
name = name + "_aar_manifest_generator",
|
|
outs = ["AndroidManifest.xml"],
|
|
cmd = """
|
|
cat > $(OUTS) <<EOF
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
package="com.ola.render">
|
|
<uses-sdk
|
|
android:minSdkVersion="21"
|
|
android:targetSdkVersion="27" />
|
|
</manifest>
|
|
EOF
|
|
""",
|
|
)
|
|
|
|
android_library(
|
|
name = name + "_android_lib",
|
|
srcs = srcs,
|
|
manifest = "AndroidManifest.xml",
|
|
proguard_specs = proguard_specs,
|
|
assets = assets,
|
|
assets_dir = assets_dir,
|
|
deps = [
|
|
":" + name + "_jni_cc_lib",]
|
|
)
|
|
|
|
_ola_aar_with_jni(name, name + "_android_lib")
|
|
|
|
|
|
|
|
def _ola_jni(name):
|
|
native.cc_binary(
|
|
name = "libora_render_jni.so",
|
|
linkshared = 1,
|
|
linkstatic = 1,
|
|
deps = [
|
|
"//mediapipe/render/module/render_queue:olarender",
|
|
],
|
|
)
|
|
|
|
native.cc_library(
|
|
name = name + "_cc_lib",
|
|
srcs = [":libora_render_jni.so"],
|
|
alwayslink = 1,
|
|
)
|
|
|
|
def _ola_aar_with_jni(name, android_library):
|
|
# Generates dummy AndroidManifest.xml for dummy apk usage
|
|
# (dummy apk is generated by <name>_dummy_app target below)
|
|
native.genrule(
|
|
name = name + "_binary_manifest_generator",
|
|
outs = [name + "_generated_AndroidManifest.xml"],
|
|
cmd = """
|
|
cat > $(OUTS) <<EOF
|
|
<manifest
|
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
package="dummy.package.for.so">
|
|
<uses-sdk android:minSdkVersion="21"/>
|
|
</manifest>
|
|
EOF
|
|
""",
|
|
)
|
|
|
|
# Generates dummy apk including .so files.
|
|
# We extract out .so files and throw away the apk.
|
|
android_binary(
|
|
name = name + "_dummy_app",
|
|
manifest = name + "_generated_AndroidManifest.xml",
|
|
custom_package = "dummy.package.for.so",
|
|
multidex = "native",
|
|
deps = [android_library],
|
|
)
|
|
|
|
native.genrule(
|
|
name = name,
|
|
srcs = [android_library + ".aar", name + "_dummy_app_unsigned.apk"],
|
|
outs = [name + ".aar"],
|
|
tags = ["manual"],
|
|
cmd = """
|
|
cp $(location {}.aar) $(location :{}.aar)
|
|
chmod +w $(location :{}.aar)
|
|
origdir=$$PWD
|
|
cd $$(mktemp -d)
|
|
unzip $$origdir/$(location :{}_dummy_app_unsigned.apk) "lib/*"
|
|
cp -r lib jni
|
|
zip -r $$origdir/$(location :{}.aar) jni/*/*.so
|
|
""".format(android_library, name, name, name, name),
|
|
) |