feat: 增加二维码前缀
diff --git a/.gitignore b/.gitignore
index ff0cd5c..4559f36 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,5 @@
 .gradle
 build
 .idea
+dist
+*.tgz
diff --git a/Makefile b/Makefile
index 9ecdece..9972be8 100644
--- a/Makefile
+++ b/Makefile
@@ -1,10 +1,11 @@
 CARGO ?=cargo
 RM ?=rm
-NDK ?= $(ANDROID_NDK)
+TAR ?=tar
+NDK ?=$(ANDROID_NDK)
 ANDROID_ARM64_STRIP ?= $(shell $(NDK)/ndk-which --abi arm64-v8a strip)
 ANDROID_ARM_STRIP ?= $(shell $(NDK)/ndk-which --abi armeabi-v7a strip)
 
-.PHONY: clean
+.PHONY: clean dist
 
 
 build:
@@ -15,8 +16,16 @@
 	$(ANDROID_ARM64_STRIP) target/aarch64-linux-android/release/libdlsmk.so
 	$(CARGO) build --target armv7-linux-androideabi --release
 	$(ANDROID_ARM_STRIP) target/armv7-linux-androideabi/release/libdlsmk.so
+	$(CARGO) build --target i686-linux-android --release
 
-
+dist:
+	mkdir -p dist/src/main/jniLibs/arm64-v8a
+	mkdir -p dist/src/main/jniLibs/armv7
+	cp target/aarch64-linux-android/release/libdlsmk.so dist/src/main/jniLibs/arm64-v8a/
+	cp target/armv7-linux-androideabi/release/libdlsmk.so dist/src/main/jniLibs/armv7/
+	cp -r java/src/main/java dist/src/main/
+	cp -r java/build.gradle java/setting.gradle java/gradle java/gradlew* dist/
+	$(TAR) cfvz dlqrcode-android.tgz dist/*
 
 clean:
-	$(RM) -rf target
+	$(CARGO) clean
diff --git a/dlqrcode/src/lib.rs b/dlqrcode/src/lib.rs
index 12dc747..a82b170 100644
--- a/dlqrcode/src/lib.rs
+++ b/dlqrcode/src/lib.rs
@@ -349,6 +349,7 @@
     Ok(tac)
 }
 
+#[allow(dead_code)]
 fn vec_split_once(data: Vec<u8>, delimiter: u8) -> (Option<Vec<u8>>, Option<Vec<u8>>) {
     let mut pos = 0;
     while pos < data.len() && data[pos] != delimiter {
diff --git a/dlsmk/src/lib.rs b/dlsmk/src/lib.rs
index c8b6cba..9a0c320 100644
--- a/dlsmk/src/lib.rs
+++ b/dlsmk/src/lib.rs
@@ -48,6 +48,8 @@
 
     use dlqrcode::DaliQrCode;
 
+    static QR_PREFIX : &str = "DLSMK_";
+
     fn put_data(env: &JNIEnv, map: &JMap, key: &str, value: &str) {
         map.put(
             *env.new_string(key).unwrap(),
@@ -105,6 +107,18 @@
             }
         };
 
+        if !qrcode.starts_with(QR_PREFIX) {
+            put_data(&env, &qrdata, "error", "qrcode prefix error");
+            return JNI_FALSE;
+        }
+        let qrcode = match qrcode.strip_prefix(QR_PREFIX) {
+            Some(q) => String::from(q),
+            None => {
+                put_data(&env, &qrdata, "error", "qrcode prefix error");
+                return JNI_FALSE;
+            }
+        };
+
         debug!("TOTP step <{}> , skew <{}>", step, skew);
         let decoder = match DaliQrCode::new(key, None, Some(step), Some(skew), None) {
             Ok(d) => d,
diff --git a/java/src/main/java/com/supwisdom/dlsmk/DLSMK.java b/java/src/main/java/com/supwisdom/dlsmk/DLSMK.java
index 916d7b2..d168587 100644
--- a/java/src/main/java/com/supwisdom/dlsmk/DLSMK.java
+++ b/java/src/main/java/com/supwisdom/dlsmk/DLSMK.java
@@ -36,7 +36,7 @@
         String key = "wDp3_3NPEi-R0peokVv010GkDk1mRTp3tUB_lCEVRAAABQo=";
 
         long systimeMillis = 1604469519L * 1000;
-        String qrcode = "Szgp1QkGFy0DJ6mPVg4wMuOE5XuSe7eZrocdPDAs_iq_H7xzb10vQJwRfk6hn6-_fa6SRKRKd00gExbAShJOTgAj2urAPuQm_NxATJs26I4u6khR74iK7oubHjY1Z6qg";
+        String qrcode = "DLSMK_Szgp1QkGFy0DJ6mPVg4wMuOE5XuSe7eZrocdPDAs_iq_H7xzb10vQJwRfk6hn6-_fa6SRKRKd00gExbAShJOTgAj2urAPuQm_NxATJs26I4u6khR74iK7oubHjY1Z6qg";
 
         Map<Object, Object> result = new HashMap();
         long curr = System.currentTimeMillis();