#!/bin/bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "$0")" && pwd)" PROJECT_ROOT="$(cd "$ROOT_DIR/../../.." && pwd)" OUT_DIR="$(cd "$ROOT_DIR/.." && pwd)/android" SRC_DIR="$ROOT_DIR/src" BUILD_DIR="$ROOT_DIR/build" STUB_DIR="$BUILD_DIR/stubs" CLASS_DIR="$BUILD_DIR/classes" STUB_CLASS_DIR="$BUILD_DIR/stub-classes" ANDROID_JAR="${ANDROID_JAR:-$HOME/Library/Android/sdk/platforms/android-34/android.jar}" SDK_LIB_JAR="${SDK_LIB_JAR:-$PROJECT_ROOT/打印机SDK/Android/标签打印机安卓SDK-V3.3.1-20230327/TscDemo/app/libs/SDKLib.jar}" OUT_AAR="$OUT_DIR/native_fast_printer-release.aar" rm -rf "$BUILD_DIR" mkdir -p "$STUB_DIR/com/taobao/weex/annotation" \ "$STUB_DIR/com/taobao/weex/bridge" \ "$STUB_DIR/io/dcloud/feature/uniapp/common" \ "$STUB_DIR/com/alibaba/fastjson" \ "$CLASS_DIR" "$STUB_CLASS_DIR" "$OUT_DIR" "$BUILD_DIR/libs" cat > "$STUB_DIR/com/taobao/weex/annotation/JSMethod.java" <<'STUB' package com.taobao.weex.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface JSMethod { boolean uiThread() default true; } STUB cat > "$STUB_DIR/com/taobao/weex/bridge/JSCallback.java" <<'STUB' package com.taobao.weex.bridge; public interface JSCallback { void invoke(Object value); void invokeAndKeepAlive(Object value); } STUB cat > "$STUB_DIR/io/dcloud/feature/uniapp/common/UniModule.java" <<'STUB' package io.dcloud.feature.uniapp.common; public class UniModule {} STUB cat > "$STUB_DIR/com/alibaba/fastjson/JSONObject.java" <<'STUB' package com.alibaba.fastjson; import java.util.HashMap; public class JSONObject extends HashMap { public String getString(String key){ Object v = get(key); return v == null ? null : String.valueOf(v); } public Integer getInteger(String key){ Object v = get(key); if (v == null) return null; if (v instanceof Number) return ((Number)v).intValue(); return Integer.parseInt(String.valueOf(v)); } } STUB find "$STUB_DIR" -name '*.java' -print0 | xargs -0 javac -source 1.8 -target 1.8 -encoding UTF-8 -cp "$ANDROID_JAR" -d "$STUB_CLASS_DIR" jar cf "$BUILD_DIR/stubs.jar" -C "$STUB_CLASS_DIR" . find "$SRC_DIR" -name '*.java' -print0 | xargs -0 javac -source 1.8 -target 1.8 -encoding UTF-8 -cp "$ANDROID_JAR:$BUILD_DIR/stubs.jar:$SDK_LIB_JAR" -d "$CLASS_DIR" jar cf "$BUILD_DIR/classes.jar" -C "$CLASS_DIR" . cp "$SDK_LIB_JAR" "$BUILD_DIR/libs/SDKLib.jar" cat > "$BUILD_DIR/AndroidManifest.xml" <<'MANIFEST' MANIFEST : > "$BUILD_DIR/R.txt" mkdir -p "$BUILD_DIR/META-INF/com/android/build/gradle" cat > "$BUILD_DIR/META-INF/com/android/build/gradle/aar-metadata.properties" <<'META' aarFormatVersion=1.0 aarMetadataVersion=1.0 META cd "$BUILD_DIR" rm -f "$OUT_AAR" zip -q -r "$OUT_AAR" AndroidManifest.xml classes.jar R.txt META-INF libs echo "Built AAR: $OUT_AAR"