Blame view

打印机安卓基座/native-fast-printer/android-src/build-aar.sh 3.02 KB
a6f5c1af   “wangming”   开发了安卓基座
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"