}
+ * @return if file not exist, return null, else return content of file
+ * @throws RuntimeException if an error occurs while operator BufferedReader
+ */
+ public static ArrayList readFileToList(String filePath, String charsetName) {
+ File file = new File(filePath);
+ ArrayList fileContent = new ArrayList();
+ if (file == null || !file.isFile()) {
+ return null;
+ }
+
+ BufferedReader reader = null;
+ try {
+ InputStreamReader is = new InputStreamReader(new FileInputStream(file), charsetName);
+ reader = new BufferedReader(is);
+ String line = null;
+ while ((line = reader.readLine()) != null) {
+ WePoint wePoint = GsonHelper.fromJson(line, WePoint.class);
+ if (wePoint == null) continue;
+ fileContent.add(wePoint);
+ }
+ reader.close();
+ return fileContent;
+ } catch (IOException e) {
+ throw new RuntimeException("Flash test : +++++++++ IOException occurred. ", e);
+ } finally {
+ if (reader != null) {
+ try {
+ reader.close();
+ } catch (IOException e) {
+ throw new RuntimeException("Flash test : +++++++++ IOException occurred. ", e);
+ }
+ }
+ }
+ }
+
+ public static ArrayList readAssetsFileToList(Context cxt, String filePath) {
+ ArrayList fileContent = new ArrayList();
+ BufferedReader reader = null;
+ try {
+ InputStreamReader is = new InputStreamReader(cxt.getAssets().open(filePath), "utf-8");
+ reader = new BufferedReader(is);
+ String line = null;
+ while ((line = reader.readLine()) != null) {
+ WePoint wePoint = GsonHelper.fromJson(line, WePoint.class);
+ if (wePoint == null) continue;
+ fileContent.add(wePoint);
+ }
+ reader.close();
+ return fileContent;
+ } catch (IOException e) {
+ throw new RuntimeException("Flash test : +++++++++ IOException occurred. ", e);
+ } finally {
+ if (reader != null) {
+ try {
+ reader.close();
+ } catch (IOException e) {
+ throw new RuntimeException("Flash test : +++++++++ IOException occurred. ", e);
+ }
+ }
+ }
+
+ }
+
+ /**
+ * write file【写文件:字符串】
+ *
+ * @param filePath
+ * @param content
+ * @param append is append, if true, write to the end of file, else clear content of file and write into it
+ * @return return false if content is empty, true otherwise
+ * @throws RuntimeException if an error occurs while operator FileWriter
+ */
+ public static boolean writeFile(String filePath, String content, boolean append) {
+ //字符串判空
+ if (StringUtils.isEmpty(content)) {
+ return false;
+ }
+
+ FileWriter fileWriter = null;
+ try {
+ makeDirs(filePath);
+ fileWriter = new FileWriter(filePath, append);
+ fileWriter.write(content);
+ fileWriter.close();
+ //updateGallery(filePath);//媒体库数据更新
+ return true;
+ } catch (IOException e) {
+ throw new RuntimeException("IOException occurred. ", e);
+ } finally {
+ if (fileWriter != null) {
+ try {
+ fileWriter.close();
+ } catch (IOException e) {
+ throw new RuntimeException("IOException occurred. ", e);
+ }
+ }
+ }
+ }
+
+
+ /**
+ * write file
+ *
+ * @param file the file to be opened for writing.
+ * @param stream the input stream
+ * @param append if true, then bytes will be written to the end of the file rather than the beginning
+ * @return return true
+ * @throws RuntimeException if an error occurs while operator FileOutputStream
+ */
+ public static boolean writeFile(File file, InputStream stream, boolean append) {
+ OutputStream o = null;
+ try {
+ makeDirs(file.getAbsolutePath());
+ if (!file.exists()) file.createNewFile();
+ o = new FileOutputStream(file, append);
+ byte data[] = new byte[1024];
+ int length = -1;
+ while ((length = stream.read(data)) != -1) {
+ o.write(data, 0, length);
+ }
+ o.flush();
+ //updateGallery(file.getAbsolutePath());//媒体库数据更新
+ return true;
+ } catch (FileNotFoundException e) {
+ throw new RuntimeException("FileNotFoundException occurred. ", e);
+ } catch (IOException e) {
+ throw new RuntimeException("IOException occurred. ", e);
+ } finally {
+ if (o != null) {
+ try {
+ o.close();
+ stream.close();
+ } catch (IOException e) {
+ throw new RuntimeException("IOException occurred. ", e);
+ }
+ }
+ }
+ }
+
+ public static boolean makeDirs(String filePath) {
+ String folderName = getFolderName(filePath);
+ if (StringUtils.isEmpty(folderName)) {
+ return false;
+ }
+
+ File folder = new File(folderName);
+ return (folder.exists() && folder.isDirectory()) ? true : folder.mkdirs();
+ }
+
+ public static String getFolderName(String filePath) {
+
+ if (StringUtils.isEmpty(filePath)) {
+ return filePath;
+ }
+
+ int filePosi = filePath.lastIndexOf(File.separator);
+ return (filePosi == -1) ? "" : filePath.substring(0, filePosi);
+ }
+
+}
diff --git a/app/src/main/java/com/yzx/webebook/utils/GsonHelper.java b/app/src/main/java/com/yzx/webebook/utils/GsonHelper.java
new file mode 100644
index 0000000..af7c90d
--- /dev/null
+++ b/app/src/main/java/com/yzx/webebook/utils/GsonHelper.java
@@ -0,0 +1,58 @@
+package com.yzx.webebook.utils;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * Created by andrew on 2016/8/15 0015.
+ */
+public class GsonHelper {
+
+ public static String toJson(Object src){
+ try {
+ return new Gson().toJson(src);
+ } catch (Exception e){
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ public static T fromJson(String json, Class clazz) {
+ try {
+ return new Gson().fromJson(json, clazz);
+ } catch (Exception e){
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ public static List fromJsonArray(String json, Class clazz) {
+ try {
+ List lst = new ArrayList();
+ JsonArray array = new JsonParser().parse(json).getAsJsonArray();
+ for(final JsonElement elem : array){
+ lst.add(new Gson().fromJson(elem, clazz));
+ }
+ return lst;
+ } catch (Exception e){
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ public static T fromJsonObject(String json, Class clazz) {
+ try {
+ JsonElement elem = new JsonParser().parse(json).getAsJsonObject();
+ return new Gson().fromJson(elem, clazz);
+ } catch (Exception e){
+ e.printStackTrace();
+ }
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yzx/webebook/utils/ListUtils.java b/app/src/main/java/com/yzx/webebook/utils/ListUtils.java
new file mode 100644
index 0000000..7719fb5
--- /dev/null
+++ b/app/src/main/java/com/yzx/webebook/utils/ListUtils.java
@@ -0,0 +1,204 @@
+package com.yzx.webebook.utils;
+
+import android.text.TextUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * List Utils
+ *
+ * @author andrew 2015-9-2
+ */
+public class ListUtils {
+
+ /** default join separator **/
+ public static final String DEFAULT_JOIN_SEPARATOR = ",";
+
+ private ListUtils() {
+ throw new AssertionError();
+ }
+
+ /**
+ * get size of list
+ *
+ *
+ * getSize(null) = 0;
+ * getSize({}) = 0;
+ * getSize({1}) = 1;
+ *
+ *
+ * @param
+ * @param sourceList
+ * @return if list is null or empty, return 0, else return {@link List#size()}.
+ */
+ public static int getSize(List sourceList) {
+ return sourceList == null ? 0 : sourceList.size();
+ }
+
+ /**
+ * is null or its size is 0
+ *
+ *
+ * isEmpty(null) = true;
+ * isEmpty({}) = true;
+ * isEmpty({1}) = false;
+ *
+ *
+ * @param
+ * @param sourceList
+ * @return if list is null or its size is 0, return true, else return false.
+ */
+ public static boolean isEmpty(List sourceList) {
+ return (sourceList == null || sourceList.size() == 0);
+ }
+
+ /**
+ * join list to string, separator is ","
+ *
+ *
+ * join(null) = "";
+ * join({}) = "";
+ * join({a,b}) = "a,b";
+ *
+ *
+ * @param list
+ * @return join list to string, separator is ",". if list is empty, return ""
+ */
+ public static String join(List list) {
+ return join(list, DEFAULT_JOIN_SEPARATOR);
+ }
+
+ /**
+ * join list to string
+ *
+ *
+ * join(null, '#') = "";
+ * join({}, '#') = "";
+ * join({a,b,c}, ' ') = "abc";
+ * join({a,b,c}, '#') = "a#b#c";
+ *
+ *
+ * @param list
+ * @param separator
+ * @return join list to string. if list is empty, return ""
+ */
+ public static String join(List list, char separator) {
+ return join(list, new String(new char[] {separator}));
+ }
+
+ /**
+ * join list to string. if separator is null, use {@link #DEFAULT_JOIN_SEPARATOR}
+ *
+ *
+ * join(null, "#") = "";
+ * join({}, "#$") = "";
+ * join({a,b,c}, null) = "a,b,c";
+ * join({a,b,c}, "") = "abc";
+ * join({a,b,c}, "#") = "a#b#c";
+ * join({a,b,c}, "#$") = "a#$b#$c";
+ *
+ *
+ * @param list
+ * @param separator
+ * @return join list to string with separator. if list is empty, return ""
+ */
+ public static String join(List list, String separator) {
+ return list == null ? "" : TextUtils.join(separator, list);
+ }
+
+ /**
+ * add distinct entry to list
+ *
+ * @param
+ * @param sourceList
+ * @param entry
+ * @return if entry already exist in sourceList, return false, else add it and return true.
+ */
+ public static boolean addDistinctEntry(List sourceList, V entry) {
+ return (sourceList != null && !sourceList.contains(entry)) ? sourceList.add(entry) : false;
+ }
+
+ /**
+ * add all distinct entry to list1 from list2
+ *
+ * @param
+ * @param sourceList
+ * @param entryList
+ * @return the count of entries be added
+ */
+ public static int addDistinctList(List sourceList, List entryList) {
+ if (sourceList == null || isEmpty(entryList)) {
+ return 0;
+ }
+
+ int sourceCount = sourceList.size();
+ for (V entry : entryList) {
+ if (!sourceList.contains(entry)) {
+ sourceList.add(entry);
+ }
+ }
+ return sourceList.size() - sourceCount;
+ }
+
+ /**
+ * remove duplicate entries in list
+ *
+ * @param
+ * @param sourceList
+ * @return the count of entries be removed
+ */
+ public static int distinctList(List sourceList) {
+ if (isEmpty(sourceList)) {
+ return 0;
+ }
+
+ int sourceCount = sourceList.size();
+ int sourceListSize = sourceList.size();
+ for (int i = 0; i < sourceListSize; i++) {
+ for (int j = (i + 1); j < sourceListSize; j++) {
+ if (sourceList.get(i).equals(sourceList.get(j))) {
+ sourceList.remove(j);
+ sourceListSize = sourceList.size();
+ j--;
+ }
+ }
+ }
+ return sourceCount - sourceList.size();
+ }
+
+ /**
+ * add not null entry to list
+ *
+ * @param sourceList
+ * @param value
+ * @return
+ * - if sourceList is null, return false
+ * - if value is null, return false
+ * - return {@link List#add(Object)}
+ *
+ */
+ public static boolean addListNotNullValue(List sourceList, V value) {
+ return (sourceList != null && value != null) ? sourceList.add(value) : false;
+ }
+
+
+ /**
+ * invert list
+ *
+ * @param
+ * @param sourceList
+ * @return
+ */
+ public static List invertList(List sourceList) {
+ if (isEmpty(sourceList)) {
+ return sourceList;
+ }
+
+ List invertList = new ArrayList(sourceList.size());
+ for (int i = sourceList.size() - 1; i >= 0; i--) {
+ invertList.add(sourceList.get(i));
+ }
+ return invertList;
+ }
+}
diff --git a/app/src/main/java/com/yzx/webebook/utils/StringUtils.java b/app/src/main/java/com/yzx/webebook/utils/StringUtils.java
new file mode 100644
index 0000000..e9793c5
--- /dev/null
+++ b/app/src/main/java/com/yzx/webebook/utils/StringUtils.java
@@ -0,0 +1,332 @@
+package com.yzx.webebook.utils;
+
+import android.text.TextUtils;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * String Utils
+ *
+ * @author andrew 2015-9-2
+ */
+public class StringUtils {
+
+ private StringUtils() {
+ throw new AssertionError();
+ }
+
+ /**
+ * is null or its length is 0 or it is made by space【字符串为空、长度为0、一个空格】
+ *
+ *
+ * isBlank(null) = true;
+ * isBlank("") = true;
+ * isBlank(" ") = true;
+ * isBlank("a") = false;
+ * isBlank("a ") = false;
+ * isBlank(" a") = false;
+ * isBlank("a b") = false;
+ *
+ *
+ * @param str
+ * @return if string is null or its size is 0 or it is made by space, return true, else return false.
+ */
+ public static boolean isBlank(String str) {
+ return (str == null || str.trim().length() == 0);
+ }
+
+ /**
+ * is null or its length is 0【字符串为空、长度为0】
+ *
+ *
+ * isEmpty(null) = true;
+ * isEmpty("") = true;
+ * isEmpty(" ") = false;
+ *
+ *
+ * @param str
+ * @return if string is null or its size is 0, return true, else return false.
+ */
+ public static boolean isEmpty(CharSequence str) {
+ return (str == null || str.length() == 0);
+ }
+
+ public static boolean isEqual(String paramString1, String paramString2) {
+ return paramString1.equals(paramString2);
+ }
+
+ /**
+ * get length of CharSequence【字符串的长度】
+ *
+ *
+ * length(null) = 0;
+ * length(\"\") = 0;
+ * length(\"abc\") = 3;
+ *
+ *
+ * @param str
+ * @return if str is null or empty, return 0, else return {@link CharSequence#length()}.
+ */
+ public static int length(CharSequence str) {
+ return str == null ? 0 : str.length();
+ }
+
+ /**
+ * null Object to empty string
+ *
+ *
+ * nullStrToEmpty(null) = "";
+ * nullStrToEmpty("") = "";
+ * nullStrToEmpty("aa") = "aa";
+ *
+ *
+ * @param str
+ * @return
+ */
+ public static String nullStrToEmpty(Object str) {
+ return (str == null ? "" : (str instanceof String ? (String)str : str.toString()));
+ }
+
+ /**
+ * capitalize first letter
+ *
+ *
+ * capitalizeFirstLetter(null) = null;
+ * capitalizeFirstLetter("") = "";
+ * capitalizeFirstLetter("2ab") = "2ab"
+ * capitalizeFirstLetter("a") = "A"
+ * capitalizeFirstLetter("ab") = "Ab"
+ * capitalizeFirstLetter("Abc") = "Abc"
+ *
+ *
+ * @param str
+ * @return
+ */
+ public static String capitalizeFirstLetter(String str) {
+ if (isEmpty(str)) {
+ return str;
+ }
+
+ char c = str.charAt(0);
+ return (!Character.isLetter(c) || Character.isUpperCase(c)) ? str : new StringBuilder(str.length())
+ .append(Character.toUpperCase(c)).append(str.substring(1)).toString();
+ }
+
+ /**
+ * encoded in utf-8
+ *
+ *
+ * utf8Encode(null) = null
+ * utf8Encode("") = "";
+ * utf8Encode("aa") = "aa";
+ * utf8Encode("啊啊啊啊") = "%E5%95%8A%E5%95%8A%E5%95%8A%E5%95%8A";
+ *
+ *
+ * @param str
+ * @return
+ * @throws UnsupportedEncodingException if an error occurs
+ */
+ public static String utf8Encode(String str) {
+ if (!isEmpty(str) && str.getBytes().length != str.length()) {
+ try {
+ return URLEncoder.encode(str, "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException("UnsupportedEncodingException occurred. ", e);
+ }
+ }
+ return str;
+ }
+
+ /**
+ * encoded in utf-8, if exception, return defultReturn
+ *
+ * @param str
+ * @param defultReturn
+ * @return
+ */
+ public static String utf8Encode(String str, String defultReturn) {
+ if (!isEmpty(str) && str.getBytes().length != str.length()) {
+ try {
+ return URLEncoder.encode(str, "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ return defultReturn;
+ }
+ }
+ return str;
+ }
+
+ /**
+ * get innerHtml from href
+ *
+ *
+ * getHrefInnerHtml(null) = ""
+ * getHrefInnerHtml("") = ""
+ * getHrefInnerHtml("mp3") = "mp3";
+ * getHrefInnerHtml("<a innerHtml</a>") = "<a innerHtml</a>";
+ * getHrefInnerHtml("<a>innerHtml</a>") = "innerHtml";
+ * getHrefInnerHtml("<a<a>innerHtml</a>") = "innerHtml";
+ * getHrefInnerHtml("<a href="baidu.com">innerHtml</a>") = "innerHtml";
+ * getHrefInnerHtml("<a href="baidu.com" title="baidu">innerHtml</a>") = "innerHtml";
+ * getHrefInnerHtml(" <a>innerHtml</a> ") = "innerHtml";
+ * getHrefInnerHtml("<a>innerHtml</a></a>") = "innerHtml";
+ * getHrefInnerHtml("jack<a>innerHtml</a></a>") = "innerHtml";
+ * getHrefInnerHtml("<a>innerHtml1</a><a>innerHtml2</a>") = "innerHtml2";
+ *
+ *
+ * @param href
+ * @return
+ * - if href is null, return ""
+ * - if not match regx, return source
+ * - return the last string that match regx
+ *
+ */
+ public static String getHrefInnerHtml(String href) {
+ if (isEmpty(href)) {
+ return "";
+ }
+
+ String hrefReg = ".*<[\\s]*a[\\s]*.*>(.+?)<[\\s]*/a[\\s]*>.*";
+ Pattern hrefPattern = Pattern.compile(hrefReg, Pattern.CASE_INSENSITIVE);
+ Matcher hrefMatcher = hrefPattern.matcher(href);
+ if (hrefMatcher.matches()) {
+ return hrefMatcher.group(1);
+ }
+ return href;
+ }
+
+ /**
+ * process special char in html
+ *
+ *
+ * htmlEscapeCharsToString(null) = null;
+ * htmlEscapeCharsToString("") = "";
+ * htmlEscapeCharsToString("mp3") = "mp3";
+ * htmlEscapeCharsToString("mp3<") = "mp3<";
+ * htmlEscapeCharsToString("mp3>") = "mp3\>";
+ * htmlEscapeCharsToString("mp3&mp4") = "mp3&mp4";
+ * htmlEscapeCharsToString("mp3"mp4") = "mp3\"mp4";
+ * htmlEscapeCharsToString("mp3<>&"mp4") = "mp3\<\>&\"mp4";
+ *
+ *
+ * @param source
+ * @return
+ */
+ public static String htmlEscapeCharsToString(String source) {
+ return StringUtils.isEmpty(source) ? source : source.replaceAll("<", "<").replaceAll(">", ">")
+ .replaceAll("&", "&").replaceAll(""", "\"");
+ }
+
+ /**
+ * transform half width char to full width char
+ *
+ *
+ * fullWidthToHalfWidth(null) = null;
+ * fullWidthToHalfWidth("") = "";
+ * fullWidthToHalfWidth(new String(new char[] {12288})) = " ";
+ * fullWidthToHalfWidth("!"#$%&) = "!\"#$%&";
+ *
+ *
+ * @param s
+ * @return
+ */
+ public static String fullWidthToHalfWidth(String s) {
+ if (isEmpty(s)) {
+ return s;
+ }
+
+ char[] source = s.toCharArray();
+ for (int i = 0; i < source.length; i++) {
+ if (source[i] == 12288) {
+ source[i] = ' ';
+ // } else if (source[i] == 12290) {
+ // source[i] = '.';
+ } else if (source[i] >= 65281 && source[i] <= 65374) {
+ source[i] = (char)(source[i] - 65248);
+ } else {
+ source[i] = source[i];
+ }
+ }
+ return new String(source);
+ }
+
+ /**
+ * transform full width char to half width char
+ *
+ *
+ * halfWidthToFullWidth(null) = null;
+ * halfWidthToFullWidth("") = "";
+ * halfWidthToFullWidth(" ") = new String(new char[] {12288});
+ * halfWidthToFullWidth("!\"#$%&) = "!"#$%&";
+ *
+ *
+ * @param s
+ * @return
+ */
+ public static String halfWidthToFullWidth(String s) {
+ if (isEmpty(s)) {
+ return s;
+ }
+
+ char[] source = s.toCharArray();
+ for (int i = 0; i < source.length; i++) {
+ if (source[i] == ' ') {
+ source[i] = (char)12288;
+ // } else if (source[i] == '.') {
+ // source[i] = (char)12290;
+ } else if (source[i] >= 33 && source[i] <= 126) {
+ source[i] = (char)(source[i] + 65248);
+ } else {
+ source[i] = source[i];
+ }
+ }
+ return new String(source);
+ }
+
+ private static String bytesToHexString(byte[] paramArrayOfByte) {
+
+ StringBuilder localStringBuilder = new StringBuilder();
+ for (int i = 0; i < paramArrayOfByte.length; i++)
+ {
+ String str = Integer.toHexString(0xFF & paramArrayOfByte[i]);
+ if (str.length() == 1)
+ localStringBuilder.append('0');
+ localStringBuilder.append(str);
+ }
+ return localStringBuilder.toString();
+ }
+
+ public static String hashKey(String paramString) {
+ String localObject = "";
+ if (!TextUtils.isEmpty(paramString));
+ try
+ {
+ MessageDigest localMessageDigest = MessageDigest.getInstance("MD5");
+ localMessageDigest.update(paramString.getBytes());
+ String str = bytesToHexString(localMessageDigest.digest());
+ localObject = str;
+ return localObject;
+ }
+ catch (NoSuchAlgorithmException localNoSuchAlgorithmException)
+ {
+ }
+ return String.valueOf(paramString.hashCode());
+ }
+
+ public static String stripLeadingSlash(String paramString) {
+
+ if (TextUtils.isEmpty(paramString))
+ {
+ return paramString;
+ }
+ int i = 0;
+ while (paramString.charAt(i) == '/'){
+ i ++;
+ }
+ return paramString.substring(i);
+ }
+}
diff --git a/app/src/main/jniLibs/armeabi/libpaintworker.so b/app/src/main/jniLibs/armeabi/libpaintworker.so
deleted file mode 100644
index 466849e..0000000
--- a/app/src/main/jniLibs/armeabi/libpaintworker.so
+++ /dev/null
@@ -1 +0,0 @@
-/system/lib/libpaintworker.so
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 49f57d0..24fa0c6 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -83,7 +83,15 @@
android:id="@+id/btn5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="电子书页面(不带背景)"
+ android:text="电子书页面(笔记本)"
+ android:visibility="visible"
+ android:layout_marginTop="@dimen/d_20"/>
+
+
diff --git a/app/src/main/res/layout/activity_main1.xml b/app/src/main/res/layout/activity_main1.xml
new file mode 100644
index 0000000..ac49cc2
--- /dev/null
+++ b/app/src/main/res/layout/activity_main1.xml
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/buildKey/wenote.jks b/buildKey/wenote.jks
new file mode 100644
index 0000000..e95f0bf
Binary files /dev/null and b/buildKey/wenote.jks differ
diff --git a/buildKey/wetao_app_key b/buildKey/wetao_app_key
new file mode 100644
index 0000000..03d8ef9
Binary files /dev/null and b/buildKey/wetao_app_key differ