build-aar.sh
3.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/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<String, Object> {
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 xmlns:android="http://schemas.android.com/apk/res/android"
package="com.foodlabel.nativeprinter" />
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"