From cf70a7d738360847f5a8f0fecc04cac1dbd638a5 Mon Sep 17 00:00:00 2001 From: msdx <645079761@qq.com> Date: Wed, 25 Apr 2018 13:43:23 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E8=87=B3=20AndroidStudio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 24 +-- build.gradle | 17 ++ gradle.properties | 18 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 49896 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 164 ++++++++++++++++++ gradlew.bat | 90 ++++++++++ library/build.gradle | 28 +++ library/proguard-android-optimize.txt | 39 ----- library/proguard-rules.pro | 30 ++++ library/project.properties | 15 -- library/{ => src/main}/AndroidManifest.xml | 9 +- .../java}/com/litesuits/orm/LiteOrm.java | 0 .../java}/com/litesuits/orm/db/DataBase.java | 0 .../com/litesuits/orm/db/DataBaseConfig.java | 0 .../com/litesuits/orm/db/TableManager.java | 0 .../litesuits/orm/db/annotation/Check.java | 0 .../litesuits/orm/db/annotation/Collate.java | 0 .../litesuits/orm/db/annotation/Column.java | 0 .../litesuits/orm/db/annotation/Conflict.java | 0 .../litesuits/orm/db/annotation/Default.java | 0 .../litesuits/orm/db/annotation/Ignore.java | 0 .../orm/db/annotation/MapCollection.java | 0 .../litesuits/orm/db/annotation/Mapping.java | 0 .../litesuits/orm/db/annotation/NotNull.java | 0 .../orm/db/annotation/PrimaryKey.java | 0 .../litesuits/orm/db/annotation/Table.java | 0 .../orm/db/annotation/Temporary.java | 0 .../litesuits/orm/db/annotation/Unique.java | 0 .../orm/db/annotation/UniqueCombine.java | 0 .../com/litesuits/orm/db/assit/Checker.java | 0 .../litesuits/orm/db/assit/CollSpliter.java | 0 .../com/litesuits/orm/db/assit/Encrypt.java | 0 .../com/litesuits/orm/db/assit/Querier.java | 0 .../litesuits/orm/db/assit/QueryBuilder.java | 0 .../litesuits/orm/db/assit/SQLBuilder.java | 0 .../litesuits/orm/db/assit/SQLStatement.java | 0 .../litesuits/orm/db/assit/SQLiteHelper.java | 0 .../litesuits/orm/db/assit/Transaction.java | 0 .../litesuits/orm/db/assit/WhereBuilder.java | 0 .../litesuits/orm/db/enums/AssignType.java | 0 .../com/litesuits/orm/db/enums/Relation.java | 0 .../com/litesuits/orm/db/enums/Strategy.java | 0 .../orm/db/impl/CascadeSQLiteImpl.java | 0 .../orm/db/impl/SingleSQLiteImpl.java | 0 .../litesuits/orm/db/model/ColumnsValue.java | 0 .../orm/db/model/ConflictAlgorithm.java | 0 .../litesuits/orm/db/model/EntityTable.java | 0 .../com/litesuits/orm/db/model/MapInfo.java | 0 .../litesuits/orm/db/model/MapProperty.java | 0 .../litesuits/orm/db/model/Primarykey.java | 0 .../com/litesuits/orm/db/model/Property.java | 0 .../litesuits/orm/db/model/RelationKey.java | 0 .../litesuits/orm/db/model/SQLiteColumn.java | 0 .../litesuits/orm/db/model/SQLiteTable.java | 0 .../com/litesuits/orm/db/utils/ClassUtil.java | 0 .../com/litesuits/orm/db/utils/DataUtil.java | 0 .../com/litesuits/orm/db/utils/FieldUtil.java | 0 .../com/litesuits/orm/kvdb/DataCache.java | 0 .../com/litesuits/orm/kvdb/FileDataCahe.java | 0 .../java}/com/litesuits/orm/log/OrmLog.java | 0 sample/build.gradle | 16 ++ sample/ic_launcher-web.png | Bin 7837 -> 0 bytes sample/libs/lite-orm-1.9.1.jar | Bin 124901 -> 0 bytes sample/proguard-android-optimize.txt | 88 ---------- sample/project.properties | 14 -- sample/{ => src/main}/AndroidManifest.xml | 0 .../java}/com/litesuits/orm/model/Model.java | 0 .../java}/com/litesuits/orm/model/Person.java | 0 .../com/litesuits/orm/model/TestModel.java | 0 .../java}/com/litesuits/orm/model/User.java | 0 .../com/litesuits/orm/model/cascade/Book.java | 0 .../litesuits/orm/model/cascade/Classes.java | 0 .../litesuits/orm/model/cascade/School.java | 0 .../litesuits/orm/model/cascade/Student.java | 0 .../litesuits/orm/model/cascade/Teacher.java | 0 .../litesuits/orm/model/single/Address.java | 0 .../litesuits/orm/model/single/BaseModel.java | 0 .../com/litesuits/orm/model/single/Boss.java | 0 .../litesuits/orm/model/single/Company.java | 0 .../com/litesuits/orm/model/single/Man.java | 0 .../litesuits/orm/model/single/Person.java | 0 .../com/litesuits/orm/model/single/Wife.java | 0 .../litesuits/orm/samples/BaseActivity.java | 0 .../orm/samples/CascadeTestActivity.java | 0 .../orm/samples/LiteOrmInstance.java | 0 .../litesuits/orm/samples/MainActivity.java | 0 .../orm/samples/SingleTestActivity.java | 0 .../com/litesuits/orm/test/SqliteUtils.java | 0 .../com/litesuits/orm/test/TestClassType.java | 0 .../litesuits/orm/test/TestCollection.java | 0 .../com/litesuits/orm/test/TestGeneric.java | 0 .../com/litesuits/orm/test/TestGetClass.java | 0 .../com/litesuits/orm/test/TestInstance.java | 0 .../litesuits/orm/test/TestNewInstance.java | 0 .../com/litesuits/orm/test/TestNext.java | 0 .../com/litesuits/orm/test/TestSpliter.java | 0 .../java}/com/litesuits/orm/test/TestTry.java | 0 .../main}/res/drawable-xxhdpi/ic_launcher.png | Bin .../main}/res/drawable/ic_launcher.png | Bin .../main}/res/drawable/selector_button.xml | 0 .../main}/res/layout/act_list_btn.xml | 0 sample/{ => src/main}/res/layout/act_main.xml | 0 .../{ => src/main}/res/values-zh/strings.xml | 0 sample/{ => src/main}/res/values/colors.xml | 0 sample/{ => src/main}/res/values/dimens.xml | 0 sample/{ => src/main}/res/values/strings.xml | 0 sample/{ => src/main}/res/values/styles.xml | 0 settings.gradle | 1 + 109 files changed, 381 insertions(+), 178 deletions(-) create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 library/build.gradle delete mode 100644 library/proguard-android-optimize.txt create mode 100644 library/proguard-rules.pro delete mode 100644 library/project.properties rename library/{ => src/main}/AndroidManifest.xml (60%) rename library/src/{ => main/java}/com/litesuits/orm/LiteOrm.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/DataBase.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/DataBaseConfig.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/TableManager.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/annotation/Check.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/annotation/Collate.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/annotation/Column.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/annotation/Conflict.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/annotation/Default.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/annotation/Ignore.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/annotation/MapCollection.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/annotation/Mapping.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/annotation/NotNull.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/annotation/PrimaryKey.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/annotation/Table.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/annotation/Temporary.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/annotation/Unique.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/annotation/UniqueCombine.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/assit/Checker.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/assit/CollSpliter.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/assit/Encrypt.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/assit/Querier.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/assit/QueryBuilder.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/assit/SQLBuilder.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/assit/SQLStatement.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/assit/SQLiteHelper.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/assit/Transaction.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/assit/WhereBuilder.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/enums/AssignType.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/enums/Relation.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/enums/Strategy.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/impl/CascadeSQLiteImpl.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/impl/SingleSQLiteImpl.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/model/ColumnsValue.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/model/ConflictAlgorithm.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/model/EntityTable.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/model/MapInfo.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/model/MapProperty.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/model/Primarykey.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/model/Property.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/model/RelationKey.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/model/SQLiteColumn.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/model/SQLiteTable.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/utils/ClassUtil.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/utils/DataUtil.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/db/utils/FieldUtil.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/kvdb/DataCache.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/kvdb/FileDataCahe.java (100%) rename library/src/{ => main/java}/com/litesuits/orm/log/OrmLog.java (100%) create mode 100644 sample/build.gradle delete mode 100755 sample/ic_launcher-web.png delete mode 100644 sample/libs/lite-orm-1.9.1.jar delete mode 100644 sample/proguard-android-optimize.txt delete mode 100755 sample/project.properties rename sample/{ => src/main}/AndroidManifest.xml (100%) rename sample/src/{ => main/java}/com/litesuits/orm/model/Model.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/model/Person.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/model/TestModel.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/model/User.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/model/cascade/Book.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/model/cascade/Classes.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/model/cascade/School.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/model/cascade/Student.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/model/cascade/Teacher.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/model/single/Address.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/model/single/BaseModel.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/model/single/Boss.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/model/single/Company.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/model/single/Man.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/model/single/Person.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/model/single/Wife.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/samples/BaseActivity.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/samples/CascadeTestActivity.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/samples/LiteOrmInstance.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/samples/MainActivity.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/samples/SingleTestActivity.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/test/SqliteUtils.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/test/TestClassType.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/test/TestCollection.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/test/TestGeneric.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/test/TestGetClass.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/test/TestInstance.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/test/TestNewInstance.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/test/TestNext.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/test/TestSpliter.java (100%) rename sample/src/{ => main/java}/com/litesuits/orm/test/TestTry.java (100%) rename sample/{ => src/main}/res/drawable-xxhdpi/ic_launcher.png (100%) rename sample/{ => src/main}/res/drawable/ic_launcher.png (100%) rename sample/{ => src/main}/res/drawable/selector_button.xml (100%) rename sample/{ => src/main}/res/layout/act_list_btn.xml (100%) rename sample/{ => src/main}/res/layout/act_main.xml (100%) rename sample/{ => src/main}/res/values-zh/strings.xml (100%) rename sample/{ => src/main}/res/values/colors.xml (100%) rename sample/{ => src/main}/res/values/dimens.xml (100%) rename sample/{ => src/main}/res/values/strings.xml (100%) rename sample/{ => src/main}/res/values/styles.xml (100%) create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore index 0ac83b3..26cafd8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,3 @@ -# root files -sample-server/ - # built application files *.apk *.ap_ @@ -14,24 +11,19 @@ sample-server/ # generated files bin/ gen/ -out/ # Local configuration file (sdk path, etc) -*.properties -proguard-project.txt +local.properties -# Eclipse project files -.classpath -.project -.settings +# Eclipse +.metadata -# Proguard folder generated by Eclipse -proguard/ +.DS_Store -# Intellij project files +# Idea +.gradle *.iml -*.ipr -*.iws .idea/ -.DS_Store +# Gradle +build/ diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..ea5a0a4 --- /dev/null +++ b/build.gradle @@ -0,0 +1,17 @@ +buildscript { + repositories { + jcenter() + google() + } + dependencies { + classpath 'com.android.tools.build:gradle:3.1.1' + } +} + +allprojects { + repositories { + jcenter() + google() + } +} + diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..1d3591c --- /dev/null +++ b/gradle.properties @@ -0,0 +1,18 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx10248m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..8c0fb64a8698b08ecc4158d828ca593c4928e9dd GIT binary patch literal 49896 zcmagFb986H(k`5d^NVfUwr$(C?M#x1ZQHiZiEVpg+jrjgoQrerx!>1o_ul)D>ebz~ zs=Mmxr&>W81QY-S1PKWQ%N-;H^tS;2*XwVA`dej1RRn1z<;3VgfE4~kaG`A%QSPsR z#ovnZe+tS9%1MfeDyz`RirvdjPRK~p(#^q2(^5@O&NM19EHdvN-A&StN>0g6QA^VN z0Gx%Gq#PD$QMRFzmK+utjS^Y1F0e8&u&^=w5K<;4Rz|i3A=o|IKLY+g`iK6vfr9?+ z-`>gmU&i?FGSL5&F?TXFu`&Js6h;15QFkXp2M1H9|Eq~bpov-GU(uz%mH0n55wUl- zv#~ccAz`F5wlQ>e_KlJS3@{)B?^v*EQM=IxLa&76^y51a((wq|2-`qON>+4dLc{Oo z51}}o^Zen(oAjxDK7b++9_Yg`67p$bPo3~BCpGM7uAWmvIhWc5Gi+gQZ|Pwa-Gll@<1xmcPy z|NZmu6m)g5Ftu~BG&Xdxclw7Cij{xbBMBn-LMII#Slp`AElb&2^Hw+w>(3crLH!;I zN+Vk$D+wP1#^!MDCiad@vM>H#6+`Ct#~6VHL4lzmy;lSdk>`z6)=>Wh15Q2)dQtGqvn0vJU@+(B5{MUc*qs4!T+V=q=wy)<6$~ z!G>e_4dN@lGeF_$q9`Ju6Ncb*x?O7=l{anm7Eahuj_6lA{*#Gv*TaJclevPVbbVYu z(NY?5q+xxbO6%g1xF0r@Ix8fJ~u)VRUp`S%&rN$&e!Od`~s+64J z5*)*WSi*i{k%JjMSIN#X;jC{HG$-^iX+5f5BGOIHWAl*%15Z#!xntpk($-EGKCzKa zT7{siZ9;4TICsWQ$pu&wKZQTCvpI$Xvzwxoi+XkkpeE&&kFb!B?h2hi%^YlXt|-@5 zHJ~%AN!g_^tmn1?HSm^|gCE#!GRtK2(L{9pL#hp0xh zME}|DB>(5)`iE7CM)&_+S}-Bslc#@B5W4_+k4Cp$l>iVyg$KP>CN?SVGZ(&02>iZK zB<^HP$g$Lq*L$BWd?2(F?-MUbNWTJVQdW7$#8a|k_30#vHAD1Z{c#p;bETk0VnU5A zBgLe2HFJ3032$G<`m*OB!KM$*sdM20jm)It5OSru@tXpK5LT>#8)N!*skNu1$TpIw zufjjdp#lyH5bZ%|Iuo|iu9vG1HrIVWLH>278xo>aVBkPN3V$~!=KnlXQ4eDqS7%E% zQ!z^$Q$b^6Q)g#cLpwur(|<0gWHo6A6jc;n`t(V9T;LzTAU{IAu*uEQ%Ort1k+Kn+f_N`9|bxYC+~Z1 zCC1UCWv*Orx$_@ydv9mIe(liLfOr7mhbV@tKw{6)q^1DH1nmvZ0cj215R<~&I<4S| zgnr;9Cdjqpz#o8i0CQjtl`}{c*P)aSdH|abxGdrR)-3z+02-eX(k*B)Uqv6~^nh** z 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 \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..aec9973 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/library/build.gradle b/library/build.gradle new file mode 100644 index 0000000..ac4601f --- /dev/null +++ b/library/build.gradle @@ -0,0 +1,28 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion 27 + buildToolsVersion "27.0.3" + + defaultConfig { + minSdkVersion 7 + targetSdkVersion 27 + versionCode 28 + versionName "1.9.2" + consumerProguardFiles 'proguard-rules.pro' + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + lintOptions { + abortOnError false + } +} + +dependencies { +} + diff --git a/library/proguard-android-optimize.txt b/library/proguard-android-optimize.txt deleted file mode 100644 index b0330b4..0000000 --- a/library/proguard-android-optimize.txt +++ /dev/null @@ -1,39 +0,0 @@ -#Orm混淆建议: -# 1. 给你要持久化的每一个Java(Model)类设置一个表名:即为类添加@Table("table_name")注解。 -# 2. 给你要持久化的每一个属性(成员变量)设置一个列名: 即为属性加@Column("column_name")注解。 -# 满足1、2则可以将你要持久化的类和者属性随意混淆; -# 反之,则需要将你要持久化的类和属性keep住,不可混淆。 - --optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* --optimizationpasses 5 --allowaccessmodification --dontpreverify - -# The remainder of this file is identical to the non-optimized version -# of the Proguard configuration file (except that the other file has -# flags to turn off optimization). - --dontusemixedcaseclassnames --dontskipnonpubliclibraryclasses --verbose - -# 使用注解 --keepattributes *Annotation*,Signature,Exceptions,InnerClasses - -# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations --keepclassmembers enum * { - **[] $VALUES; - public *; -} - -# 保持混淆时类的实名及行号(--------------- 调试时打开 --------------) -#-keepattributes SourceFile,LineNumberTable - -# 开发者需要调用,不可以混淆 --keep public class com.litesuits.orm.LiteOrm { *; } --keep public class com.litesuits.orm.db.* { *; } --keep public class com.litesuits.orm.db.model.** { *; } --keep public class com.litesuits.orm.db.annotation.** { *; } --keep public class com.litesuits.orm.db.enums.** { *; } --keep public class com.litesuits.orm.log.* { *; } --keep public class com.litesuits.orm.db.assit.* { *; } \ No newline at end of file diff --git a/library/proguard-rules.pro b/library/proguard-rules.pro new file mode 100644 index 0000000..91ff372 --- /dev/null +++ b/library/proguard-rules.pro @@ -0,0 +1,30 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /home/quinn/Android/Sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + + +# 使用注解 +-keepattributes *Annotation*,Signature,Exceptions,InnerClasses + +# 开发者需要调用,不可以混淆 +-keep public class com.litesuits.orm.LiteOrm { *; } +-keep public class com.litesuits.orm.db.* { *; } +-keep public class com.litesuits.orm.db.model.** { *; } +-keep public class com.litesuits.orm.db.annotation.** { *; } +-keep public class com.litesuits.orm.db.enums.** { *; } +-keep public class com.litesuits.orm.log.* { *; } +-keep public class com.litesuits.orm.db.assit.* { *; } \ No newline at end of file diff --git a/library/project.properties b/library/project.properties deleted file mode 100644 index 9bdb3da..0000000 --- a/library/project.properties +++ /dev/null @@ -1,15 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -android.library=true -# Project target. -target=android-11 diff --git a/library/AndroidManifest.xml b/library/src/main/AndroidManifest.xml similarity index 60% rename from library/AndroidManifest.xml rename to library/src/main/AndroidManifest.xml index 11e050d..00f4082 100644 --- a/library/AndroidManifest.xml +++ b/library/src/main/AndroidManifest.xml @@ -1,10 +1,7 @@ - - - + diff --git a/library/src/com/litesuits/orm/LiteOrm.java b/library/src/main/java/com/litesuits/orm/LiteOrm.java similarity index 100% rename from library/src/com/litesuits/orm/LiteOrm.java rename to library/src/main/java/com/litesuits/orm/LiteOrm.java diff --git a/library/src/com/litesuits/orm/db/DataBase.java b/library/src/main/java/com/litesuits/orm/db/DataBase.java similarity index 100% rename from library/src/com/litesuits/orm/db/DataBase.java rename to library/src/main/java/com/litesuits/orm/db/DataBase.java diff --git a/library/src/com/litesuits/orm/db/DataBaseConfig.java b/library/src/main/java/com/litesuits/orm/db/DataBaseConfig.java similarity index 100% rename from library/src/com/litesuits/orm/db/DataBaseConfig.java rename to library/src/main/java/com/litesuits/orm/db/DataBaseConfig.java diff --git a/library/src/com/litesuits/orm/db/TableManager.java b/library/src/main/java/com/litesuits/orm/db/TableManager.java similarity index 100% rename from library/src/com/litesuits/orm/db/TableManager.java rename to library/src/main/java/com/litesuits/orm/db/TableManager.java diff --git a/library/src/com/litesuits/orm/db/annotation/Check.java b/library/src/main/java/com/litesuits/orm/db/annotation/Check.java similarity index 100% rename from library/src/com/litesuits/orm/db/annotation/Check.java rename to library/src/main/java/com/litesuits/orm/db/annotation/Check.java diff --git a/library/src/com/litesuits/orm/db/annotation/Collate.java b/library/src/main/java/com/litesuits/orm/db/annotation/Collate.java similarity index 100% rename from library/src/com/litesuits/orm/db/annotation/Collate.java rename to library/src/main/java/com/litesuits/orm/db/annotation/Collate.java diff --git a/library/src/com/litesuits/orm/db/annotation/Column.java b/library/src/main/java/com/litesuits/orm/db/annotation/Column.java similarity index 100% rename from library/src/com/litesuits/orm/db/annotation/Column.java rename to library/src/main/java/com/litesuits/orm/db/annotation/Column.java diff --git a/library/src/com/litesuits/orm/db/annotation/Conflict.java b/library/src/main/java/com/litesuits/orm/db/annotation/Conflict.java similarity index 100% rename from library/src/com/litesuits/orm/db/annotation/Conflict.java rename to library/src/main/java/com/litesuits/orm/db/annotation/Conflict.java diff --git a/library/src/com/litesuits/orm/db/annotation/Default.java b/library/src/main/java/com/litesuits/orm/db/annotation/Default.java similarity index 100% rename from library/src/com/litesuits/orm/db/annotation/Default.java rename to library/src/main/java/com/litesuits/orm/db/annotation/Default.java diff --git a/library/src/com/litesuits/orm/db/annotation/Ignore.java b/library/src/main/java/com/litesuits/orm/db/annotation/Ignore.java similarity index 100% rename from library/src/com/litesuits/orm/db/annotation/Ignore.java rename to library/src/main/java/com/litesuits/orm/db/annotation/Ignore.java diff --git a/library/src/com/litesuits/orm/db/annotation/MapCollection.java b/library/src/main/java/com/litesuits/orm/db/annotation/MapCollection.java similarity index 100% rename from library/src/com/litesuits/orm/db/annotation/MapCollection.java rename to library/src/main/java/com/litesuits/orm/db/annotation/MapCollection.java diff --git a/library/src/com/litesuits/orm/db/annotation/Mapping.java b/library/src/main/java/com/litesuits/orm/db/annotation/Mapping.java similarity index 100% rename from library/src/com/litesuits/orm/db/annotation/Mapping.java rename to library/src/main/java/com/litesuits/orm/db/annotation/Mapping.java diff --git a/library/src/com/litesuits/orm/db/annotation/NotNull.java b/library/src/main/java/com/litesuits/orm/db/annotation/NotNull.java similarity index 100% rename from library/src/com/litesuits/orm/db/annotation/NotNull.java rename to library/src/main/java/com/litesuits/orm/db/annotation/NotNull.java diff --git a/library/src/com/litesuits/orm/db/annotation/PrimaryKey.java b/library/src/main/java/com/litesuits/orm/db/annotation/PrimaryKey.java similarity index 100% rename from library/src/com/litesuits/orm/db/annotation/PrimaryKey.java rename to library/src/main/java/com/litesuits/orm/db/annotation/PrimaryKey.java diff --git a/library/src/com/litesuits/orm/db/annotation/Table.java b/library/src/main/java/com/litesuits/orm/db/annotation/Table.java similarity index 100% rename from library/src/com/litesuits/orm/db/annotation/Table.java rename to library/src/main/java/com/litesuits/orm/db/annotation/Table.java diff --git a/library/src/com/litesuits/orm/db/annotation/Temporary.java b/library/src/main/java/com/litesuits/orm/db/annotation/Temporary.java similarity index 100% rename from library/src/com/litesuits/orm/db/annotation/Temporary.java rename to library/src/main/java/com/litesuits/orm/db/annotation/Temporary.java diff --git a/library/src/com/litesuits/orm/db/annotation/Unique.java b/library/src/main/java/com/litesuits/orm/db/annotation/Unique.java similarity index 100% rename from library/src/com/litesuits/orm/db/annotation/Unique.java rename to library/src/main/java/com/litesuits/orm/db/annotation/Unique.java diff --git a/library/src/com/litesuits/orm/db/annotation/UniqueCombine.java b/library/src/main/java/com/litesuits/orm/db/annotation/UniqueCombine.java similarity index 100% rename from library/src/com/litesuits/orm/db/annotation/UniqueCombine.java rename to library/src/main/java/com/litesuits/orm/db/annotation/UniqueCombine.java diff --git a/library/src/com/litesuits/orm/db/assit/Checker.java b/library/src/main/java/com/litesuits/orm/db/assit/Checker.java similarity index 100% rename from library/src/com/litesuits/orm/db/assit/Checker.java rename to library/src/main/java/com/litesuits/orm/db/assit/Checker.java diff --git a/library/src/com/litesuits/orm/db/assit/CollSpliter.java b/library/src/main/java/com/litesuits/orm/db/assit/CollSpliter.java similarity index 100% rename from library/src/com/litesuits/orm/db/assit/CollSpliter.java rename to library/src/main/java/com/litesuits/orm/db/assit/CollSpliter.java diff --git a/library/src/com/litesuits/orm/db/assit/Encrypt.java b/library/src/main/java/com/litesuits/orm/db/assit/Encrypt.java similarity index 100% rename from library/src/com/litesuits/orm/db/assit/Encrypt.java rename to library/src/main/java/com/litesuits/orm/db/assit/Encrypt.java diff --git a/library/src/com/litesuits/orm/db/assit/Querier.java b/library/src/main/java/com/litesuits/orm/db/assit/Querier.java similarity index 100% rename from library/src/com/litesuits/orm/db/assit/Querier.java rename to library/src/main/java/com/litesuits/orm/db/assit/Querier.java diff --git a/library/src/com/litesuits/orm/db/assit/QueryBuilder.java b/library/src/main/java/com/litesuits/orm/db/assit/QueryBuilder.java similarity index 100% rename from library/src/com/litesuits/orm/db/assit/QueryBuilder.java rename to library/src/main/java/com/litesuits/orm/db/assit/QueryBuilder.java diff --git a/library/src/com/litesuits/orm/db/assit/SQLBuilder.java b/library/src/main/java/com/litesuits/orm/db/assit/SQLBuilder.java similarity index 100% rename from library/src/com/litesuits/orm/db/assit/SQLBuilder.java rename to library/src/main/java/com/litesuits/orm/db/assit/SQLBuilder.java diff --git a/library/src/com/litesuits/orm/db/assit/SQLStatement.java b/library/src/main/java/com/litesuits/orm/db/assit/SQLStatement.java similarity index 100% rename from library/src/com/litesuits/orm/db/assit/SQLStatement.java rename to library/src/main/java/com/litesuits/orm/db/assit/SQLStatement.java diff --git a/library/src/com/litesuits/orm/db/assit/SQLiteHelper.java b/library/src/main/java/com/litesuits/orm/db/assit/SQLiteHelper.java similarity index 100% rename from library/src/com/litesuits/orm/db/assit/SQLiteHelper.java rename to library/src/main/java/com/litesuits/orm/db/assit/SQLiteHelper.java diff --git a/library/src/com/litesuits/orm/db/assit/Transaction.java b/library/src/main/java/com/litesuits/orm/db/assit/Transaction.java similarity index 100% rename from library/src/com/litesuits/orm/db/assit/Transaction.java rename to library/src/main/java/com/litesuits/orm/db/assit/Transaction.java diff --git a/library/src/com/litesuits/orm/db/assit/WhereBuilder.java b/library/src/main/java/com/litesuits/orm/db/assit/WhereBuilder.java similarity index 100% rename from library/src/com/litesuits/orm/db/assit/WhereBuilder.java rename to library/src/main/java/com/litesuits/orm/db/assit/WhereBuilder.java diff --git a/library/src/com/litesuits/orm/db/enums/AssignType.java b/library/src/main/java/com/litesuits/orm/db/enums/AssignType.java similarity index 100% rename from library/src/com/litesuits/orm/db/enums/AssignType.java rename to library/src/main/java/com/litesuits/orm/db/enums/AssignType.java diff --git a/library/src/com/litesuits/orm/db/enums/Relation.java b/library/src/main/java/com/litesuits/orm/db/enums/Relation.java similarity index 100% rename from library/src/com/litesuits/orm/db/enums/Relation.java rename to library/src/main/java/com/litesuits/orm/db/enums/Relation.java diff --git a/library/src/com/litesuits/orm/db/enums/Strategy.java b/library/src/main/java/com/litesuits/orm/db/enums/Strategy.java similarity index 100% rename from library/src/com/litesuits/orm/db/enums/Strategy.java rename to library/src/main/java/com/litesuits/orm/db/enums/Strategy.java diff --git a/library/src/com/litesuits/orm/db/impl/CascadeSQLiteImpl.java b/library/src/main/java/com/litesuits/orm/db/impl/CascadeSQLiteImpl.java similarity index 100% rename from library/src/com/litesuits/orm/db/impl/CascadeSQLiteImpl.java rename to library/src/main/java/com/litesuits/orm/db/impl/CascadeSQLiteImpl.java diff --git a/library/src/com/litesuits/orm/db/impl/SingleSQLiteImpl.java b/library/src/main/java/com/litesuits/orm/db/impl/SingleSQLiteImpl.java similarity index 100% rename from library/src/com/litesuits/orm/db/impl/SingleSQLiteImpl.java rename to library/src/main/java/com/litesuits/orm/db/impl/SingleSQLiteImpl.java diff --git a/library/src/com/litesuits/orm/db/model/ColumnsValue.java b/library/src/main/java/com/litesuits/orm/db/model/ColumnsValue.java similarity index 100% rename from library/src/com/litesuits/orm/db/model/ColumnsValue.java rename to library/src/main/java/com/litesuits/orm/db/model/ColumnsValue.java diff --git a/library/src/com/litesuits/orm/db/model/ConflictAlgorithm.java b/library/src/main/java/com/litesuits/orm/db/model/ConflictAlgorithm.java similarity index 100% rename from library/src/com/litesuits/orm/db/model/ConflictAlgorithm.java rename to library/src/main/java/com/litesuits/orm/db/model/ConflictAlgorithm.java diff --git a/library/src/com/litesuits/orm/db/model/EntityTable.java b/library/src/main/java/com/litesuits/orm/db/model/EntityTable.java similarity index 100% rename from library/src/com/litesuits/orm/db/model/EntityTable.java rename to library/src/main/java/com/litesuits/orm/db/model/EntityTable.java diff --git a/library/src/com/litesuits/orm/db/model/MapInfo.java b/library/src/main/java/com/litesuits/orm/db/model/MapInfo.java similarity index 100% rename from library/src/com/litesuits/orm/db/model/MapInfo.java rename to library/src/main/java/com/litesuits/orm/db/model/MapInfo.java diff --git a/library/src/com/litesuits/orm/db/model/MapProperty.java b/library/src/main/java/com/litesuits/orm/db/model/MapProperty.java similarity index 100% rename from library/src/com/litesuits/orm/db/model/MapProperty.java rename to library/src/main/java/com/litesuits/orm/db/model/MapProperty.java diff --git a/library/src/com/litesuits/orm/db/model/Primarykey.java b/library/src/main/java/com/litesuits/orm/db/model/Primarykey.java similarity index 100% rename from library/src/com/litesuits/orm/db/model/Primarykey.java rename to library/src/main/java/com/litesuits/orm/db/model/Primarykey.java diff --git a/library/src/com/litesuits/orm/db/model/Property.java b/library/src/main/java/com/litesuits/orm/db/model/Property.java similarity index 100% rename from library/src/com/litesuits/orm/db/model/Property.java rename to library/src/main/java/com/litesuits/orm/db/model/Property.java diff --git a/library/src/com/litesuits/orm/db/model/RelationKey.java b/library/src/main/java/com/litesuits/orm/db/model/RelationKey.java similarity index 100% rename from library/src/com/litesuits/orm/db/model/RelationKey.java rename to library/src/main/java/com/litesuits/orm/db/model/RelationKey.java diff --git a/library/src/com/litesuits/orm/db/model/SQLiteColumn.java b/library/src/main/java/com/litesuits/orm/db/model/SQLiteColumn.java similarity index 100% rename from library/src/com/litesuits/orm/db/model/SQLiteColumn.java rename to library/src/main/java/com/litesuits/orm/db/model/SQLiteColumn.java diff --git a/library/src/com/litesuits/orm/db/model/SQLiteTable.java b/library/src/main/java/com/litesuits/orm/db/model/SQLiteTable.java similarity index 100% rename from library/src/com/litesuits/orm/db/model/SQLiteTable.java rename to library/src/main/java/com/litesuits/orm/db/model/SQLiteTable.java diff --git a/library/src/com/litesuits/orm/db/utils/ClassUtil.java b/library/src/main/java/com/litesuits/orm/db/utils/ClassUtil.java similarity index 100% rename from library/src/com/litesuits/orm/db/utils/ClassUtil.java rename to library/src/main/java/com/litesuits/orm/db/utils/ClassUtil.java diff --git a/library/src/com/litesuits/orm/db/utils/DataUtil.java b/library/src/main/java/com/litesuits/orm/db/utils/DataUtil.java similarity index 100% rename from library/src/com/litesuits/orm/db/utils/DataUtil.java rename to library/src/main/java/com/litesuits/orm/db/utils/DataUtil.java diff --git a/library/src/com/litesuits/orm/db/utils/FieldUtil.java b/library/src/main/java/com/litesuits/orm/db/utils/FieldUtil.java similarity index 100% rename from library/src/com/litesuits/orm/db/utils/FieldUtil.java rename to library/src/main/java/com/litesuits/orm/db/utils/FieldUtil.java diff --git a/library/src/com/litesuits/orm/kvdb/DataCache.java b/library/src/main/java/com/litesuits/orm/kvdb/DataCache.java similarity index 100% rename from library/src/com/litesuits/orm/kvdb/DataCache.java rename to library/src/main/java/com/litesuits/orm/kvdb/DataCache.java diff --git a/library/src/com/litesuits/orm/kvdb/FileDataCahe.java b/library/src/main/java/com/litesuits/orm/kvdb/FileDataCahe.java similarity index 100% rename from library/src/com/litesuits/orm/kvdb/FileDataCahe.java rename to library/src/main/java/com/litesuits/orm/kvdb/FileDataCahe.java diff --git a/library/src/com/litesuits/orm/log/OrmLog.java b/library/src/main/java/com/litesuits/orm/log/OrmLog.java similarity index 100% rename from library/src/com/litesuits/orm/log/OrmLog.java rename to library/src/main/java/com/litesuits/orm/log/OrmLog.java diff --git a/sample/build.gradle b/sample/build.gradle new file mode 100644 index 0000000..0db46dc --- /dev/null +++ b/sample/build.gradle @@ -0,0 +1,16 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 27 + buildToolsVersion "27.0.3" + + defaultConfig { + minSdkVersion 7 + targetSdkVersion 22 + } +} + +dependencies { + implementation project(':library') +} + diff --git a/sample/ic_launcher-web.png b/sample/ic_launcher-web.png deleted file mode 100755 index 64bb92a7b8f75f9ddd754c75d6e682b23d0409af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7837 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 P@Xr~rgv#|}DzN_pkcqP5 diff --git a/sample/proguard-android-optimize.txt b/sample/proguard-android-optimize.txt deleted file mode 100644 index 11f7ec7..0000000 --- a/sample/proguard-android-optimize.txt +++ /dev/null @@ -1,88 +0,0 @@ -# This is a configuration file for ProGuard. -# http://proguard.sourceforge.net/index.html#manual/usage.html - -# Optimizations: If you don't want to optimize, use the -# proguard-android.txt configuration file instead of this one, which -# turns off the optimization flags. Adding optimization introduces -# certain risks, since for example not all optimizations performed by -# ProGuard works on all versions of Dalvik. The following flags turn -# off various optimizations known to have issues, but the list may not -# be complete or up to date. (The "arithmetic" optimization can be -# used if you are only targeting Android 2.0 or later.) Make sure you -# test thoroughly if you go this route. - -# ---------------------android sdk 推荐混淆配置-------------------# --optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* --optimizationpasses 5 --allowaccessmodification --dontpreverify - -# The remainder of this file is identical to the non-optimized version -# of the Proguard configuration file (except that the other file has -# flags to turn off optimization). - --dontusemixedcaseclassnames --dontskipnonpubliclibraryclasses --verbose - --keepattributes *Annotation* --keep public class com.google.vending.licensing.ILicensingService --keep public class com.android.vending.licensing.ILicensingService - -# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native --keepclasseswithmembernames class * { - native ; -} - -# keep setters in Views so that animations can still work. -# see http://proguard.sourceforge.net/manual/examples.html#beans --keepclassmembers public class * extends android.view.View { - void set*(***); - *** get*(); -} - -# We want to keep methods in Activity that could be used in the XML attribute onClick --keepclassmembers class * extends android.app.Activity { - public void *(android.view.View); -} - -# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations --keepclassmembers enum * { - public static **[] values(); - public static ** valueOf(java.lang.String); -} - --keep class * implements android.os.Parcelable { - public static final android.os.Parcelable$Creator *; -} - --keepclassmembers class **.R$* { - public static ; -} - - -# The support library contains references to newer platform versions. -# Don't warn about those in case this app is linking against an older -# platform version. We know about them, and they are safe. --dontwarn android.support.** - -# ---------------------android sdk 推荐的混淆配置结束-------------------# - -# 使用注解 --keepattributes Signature -# -keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod - -# 模型数据需要序列化,不可混淆 -#-keep class * implements java.io.Serializable { *; } - -##---------------Begin: proguard configuration for Gson ---------- -# Gson uses generic type information stored in a class file when working with fields. Proguard -# removes such information by default, so configure it to keep all of it. -#-keep class com.google.gson.** { *; } -# Gson specific classes -#-keep class sun.misc.Unsafe { *; } -#-keep class com.google.gson.stream.** { *; } -# Application classes that will be serialized/deserialized over Gson -#-keep class com.google.gson.examples.android.model.** { *; } -##---------------End: proguard configuration for Gson ---------- - diff --git a/sample/project.properties b/sample/project.properties deleted file mode 100755 index 4ab1256..0000000 --- a/sample/project.properties +++ /dev/null @@ -1,14 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-19 diff --git a/sample/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml similarity index 100% rename from sample/AndroidManifest.xml rename to sample/src/main/AndroidManifest.xml diff --git a/sample/src/com/litesuits/orm/model/Model.java b/sample/src/main/java/com/litesuits/orm/model/Model.java similarity index 100% rename from sample/src/com/litesuits/orm/model/Model.java rename to sample/src/main/java/com/litesuits/orm/model/Model.java diff --git a/sample/src/com/litesuits/orm/model/Person.java b/sample/src/main/java/com/litesuits/orm/model/Person.java similarity index 100% rename from sample/src/com/litesuits/orm/model/Person.java rename to sample/src/main/java/com/litesuits/orm/model/Person.java diff --git a/sample/src/com/litesuits/orm/model/TestModel.java b/sample/src/main/java/com/litesuits/orm/model/TestModel.java similarity index 100% rename from sample/src/com/litesuits/orm/model/TestModel.java rename to sample/src/main/java/com/litesuits/orm/model/TestModel.java diff --git a/sample/src/com/litesuits/orm/model/User.java b/sample/src/main/java/com/litesuits/orm/model/User.java similarity index 100% rename from sample/src/com/litesuits/orm/model/User.java rename to sample/src/main/java/com/litesuits/orm/model/User.java diff --git a/sample/src/com/litesuits/orm/model/cascade/Book.java b/sample/src/main/java/com/litesuits/orm/model/cascade/Book.java similarity index 100% rename from sample/src/com/litesuits/orm/model/cascade/Book.java rename to sample/src/main/java/com/litesuits/orm/model/cascade/Book.java diff --git a/sample/src/com/litesuits/orm/model/cascade/Classes.java b/sample/src/main/java/com/litesuits/orm/model/cascade/Classes.java similarity index 100% rename from sample/src/com/litesuits/orm/model/cascade/Classes.java rename to sample/src/main/java/com/litesuits/orm/model/cascade/Classes.java diff --git a/sample/src/com/litesuits/orm/model/cascade/School.java b/sample/src/main/java/com/litesuits/orm/model/cascade/School.java similarity index 100% rename from sample/src/com/litesuits/orm/model/cascade/School.java rename to sample/src/main/java/com/litesuits/orm/model/cascade/School.java diff --git a/sample/src/com/litesuits/orm/model/cascade/Student.java b/sample/src/main/java/com/litesuits/orm/model/cascade/Student.java similarity index 100% rename from sample/src/com/litesuits/orm/model/cascade/Student.java rename to sample/src/main/java/com/litesuits/orm/model/cascade/Student.java diff --git a/sample/src/com/litesuits/orm/model/cascade/Teacher.java b/sample/src/main/java/com/litesuits/orm/model/cascade/Teacher.java similarity index 100% rename from sample/src/com/litesuits/orm/model/cascade/Teacher.java rename to sample/src/main/java/com/litesuits/orm/model/cascade/Teacher.java diff --git a/sample/src/com/litesuits/orm/model/single/Address.java b/sample/src/main/java/com/litesuits/orm/model/single/Address.java similarity index 100% rename from sample/src/com/litesuits/orm/model/single/Address.java rename to sample/src/main/java/com/litesuits/orm/model/single/Address.java diff --git a/sample/src/com/litesuits/orm/model/single/BaseModel.java b/sample/src/main/java/com/litesuits/orm/model/single/BaseModel.java similarity index 100% rename from sample/src/com/litesuits/orm/model/single/BaseModel.java rename to sample/src/main/java/com/litesuits/orm/model/single/BaseModel.java diff --git a/sample/src/com/litesuits/orm/model/single/Boss.java b/sample/src/main/java/com/litesuits/orm/model/single/Boss.java similarity index 100% rename from sample/src/com/litesuits/orm/model/single/Boss.java rename to sample/src/main/java/com/litesuits/orm/model/single/Boss.java diff --git a/sample/src/com/litesuits/orm/model/single/Company.java b/sample/src/main/java/com/litesuits/orm/model/single/Company.java similarity index 100% rename from sample/src/com/litesuits/orm/model/single/Company.java rename to sample/src/main/java/com/litesuits/orm/model/single/Company.java diff --git a/sample/src/com/litesuits/orm/model/single/Man.java b/sample/src/main/java/com/litesuits/orm/model/single/Man.java similarity index 100% rename from sample/src/com/litesuits/orm/model/single/Man.java rename to sample/src/main/java/com/litesuits/orm/model/single/Man.java diff --git a/sample/src/com/litesuits/orm/model/single/Person.java b/sample/src/main/java/com/litesuits/orm/model/single/Person.java similarity index 100% rename from sample/src/com/litesuits/orm/model/single/Person.java rename to sample/src/main/java/com/litesuits/orm/model/single/Person.java diff --git a/sample/src/com/litesuits/orm/model/single/Wife.java b/sample/src/main/java/com/litesuits/orm/model/single/Wife.java similarity index 100% rename from sample/src/com/litesuits/orm/model/single/Wife.java rename to sample/src/main/java/com/litesuits/orm/model/single/Wife.java diff --git a/sample/src/com/litesuits/orm/samples/BaseActivity.java b/sample/src/main/java/com/litesuits/orm/samples/BaseActivity.java similarity index 100% rename from sample/src/com/litesuits/orm/samples/BaseActivity.java rename to sample/src/main/java/com/litesuits/orm/samples/BaseActivity.java diff --git a/sample/src/com/litesuits/orm/samples/CascadeTestActivity.java b/sample/src/main/java/com/litesuits/orm/samples/CascadeTestActivity.java similarity index 100% rename from sample/src/com/litesuits/orm/samples/CascadeTestActivity.java rename to sample/src/main/java/com/litesuits/orm/samples/CascadeTestActivity.java diff --git a/sample/src/com/litesuits/orm/samples/LiteOrmInstance.java b/sample/src/main/java/com/litesuits/orm/samples/LiteOrmInstance.java similarity index 100% rename from sample/src/com/litesuits/orm/samples/LiteOrmInstance.java rename to sample/src/main/java/com/litesuits/orm/samples/LiteOrmInstance.java diff --git a/sample/src/com/litesuits/orm/samples/MainActivity.java b/sample/src/main/java/com/litesuits/orm/samples/MainActivity.java similarity index 100% rename from sample/src/com/litesuits/orm/samples/MainActivity.java rename to sample/src/main/java/com/litesuits/orm/samples/MainActivity.java diff --git a/sample/src/com/litesuits/orm/samples/SingleTestActivity.java b/sample/src/main/java/com/litesuits/orm/samples/SingleTestActivity.java similarity index 100% rename from sample/src/com/litesuits/orm/samples/SingleTestActivity.java rename to sample/src/main/java/com/litesuits/orm/samples/SingleTestActivity.java diff --git a/sample/src/com/litesuits/orm/test/SqliteUtils.java b/sample/src/main/java/com/litesuits/orm/test/SqliteUtils.java similarity index 100% rename from sample/src/com/litesuits/orm/test/SqliteUtils.java rename to sample/src/main/java/com/litesuits/orm/test/SqliteUtils.java diff --git a/sample/src/com/litesuits/orm/test/TestClassType.java b/sample/src/main/java/com/litesuits/orm/test/TestClassType.java similarity index 100% rename from sample/src/com/litesuits/orm/test/TestClassType.java rename to sample/src/main/java/com/litesuits/orm/test/TestClassType.java diff --git a/sample/src/com/litesuits/orm/test/TestCollection.java b/sample/src/main/java/com/litesuits/orm/test/TestCollection.java similarity index 100% rename from sample/src/com/litesuits/orm/test/TestCollection.java rename to sample/src/main/java/com/litesuits/orm/test/TestCollection.java diff --git a/sample/src/com/litesuits/orm/test/TestGeneric.java b/sample/src/main/java/com/litesuits/orm/test/TestGeneric.java similarity index 100% rename from sample/src/com/litesuits/orm/test/TestGeneric.java rename to sample/src/main/java/com/litesuits/orm/test/TestGeneric.java diff --git a/sample/src/com/litesuits/orm/test/TestGetClass.java b/sample/src/main/java/com/litesuits/orm/test/TestGetClass.java similarity index 100% rename from sample/src/com/litesuits/orm/test/TestGetClass.java rename to sample/src/main/java/com/litesuits/orm/test/TestGetClass.java diff --git a/sample/src/com/litesuits/orm/test/TestInstance.java b/sample/src/main/java/com/litesuits/orm/test/TestInstance.java similarity index 100% rename from sample/src/com/litesuits/orm/test/TestInstance.java rename to sample/src/main/java/com/litesuits/orm/test/TestInstance.java diff --git a/sample/src/com/litesuits/orm/test/TestNewInstance.java b/sample/src/main/java/com/litesuits/orm/test/TestNewInstance.java similarity index 100% rename from sample/src/com/litesuits/orm/test/TestNewInstance.java rename to sample/src/main/java/com/litesuits/orm/test/TestNewInstance.java diff --git a/sample/src/com/litesuits/orm/test/TestNext.java b/sample/src/main/java/com/litesuits/orm/test/TestNext.java similarity index 100% rename from sample/src/com/litesuits/orm/test/TestNext.java rename to sample/src/main/java/com/litesuits/orm/test/TestNext.java diff --git a/sample/src/com/litesuits/orm/test/TestSpliter.java b/sample/src/main/java/com/litesuits/orm/test/TestSpliter.java similarity index 100% rename from sample/src/com/litesuits/orm/test/TestSpliter.java rename to sample/src/main/java/com/litesuits/orm/test/TestSpliter.java diff --git a/sample/src/com/litesuits/orm/test/TestTry.java b/sample/src/main/java/com/litesuits/orm/test/TestTry.java similarity index 100% rename from sample/src/com/litesuits/orm/test/TestTry.java rename to sample/src/main/java/com/litesuits/orm/test/TestTry.java diff --git a/sample/res/drawable-xxhdpi/ic_launcher.png b/sample/src/main/res/drawable-xxhdpi/ic_launcher.png similarity index 100% rename from sample/res/drawable-xxhdpi/ic_launcher.png rename to sample/src/main/res/drawable-xxhdpi/ic_launcher.png diff --git a/sample/res/drawable/ic_launcher.png b/sample/src/main/res/drawable/ic_launcher.png similarity index 100% rename from sample/res/drawable/ic_launcher.png rename to sample/src/main/res/drawable/ic_launcher.png diff --git a/sample/res/drawable/selector_button.xml b/sample/src/main/res/drawable/selector_button.xml similarity index 100% rename from sample/res/drawable/selector_button.xml rename to sample/src/main/res/drawable/selector_button.xml diff --git a/sample/res/layout/act_list_btn.xml b/sample/src/main/res/layout/act_list_btn.xml similarity index 100% rename from sample/res/layout/act_list_btn.xml rename to sample/src/main/res/layout/act_list_btn.xml diff --git a/sample/res/layout/act_main.xml b/sample/src/main/res/layout/act_main.xml similarity index 100% rename from sample/res/layout/act_main.xml rename to sample/src/main/res/layout/act_main.xml diff --git a/sample/res/values-zh/strings.xml b/sample/src/main/res/values-zh/strings.xml similarity index 100% rename from sample/res/values-zh/strings.xml rename to sample/src/main/res/values-zh/strings.xml diff --git a/sample/res/values/colors.xml b/sample/src/main/res/values/colors.xml similarity index 100% rename from sample/res/values/colors.xml rename to sample/src/main/res/values/colors.xml diff --git a/sample/res/values/dimens.xml b/sample/src/main/res/values/dimens.xml similarity index 100% rename from sample/res/values/dimens.xml rename to sample/src/main/res/values/dimens.xml diff --git a/sample/res/values/strings.xml b/sample/src/main/res/values/strings.xml similarity index 100% rename from sample/res/values/strings.xml rename to sample/src/main/res/values/strings.xml diff --git a/sample/res/values/styles.xml b/sample/src/main/res/values/styles.xml similarity index 100% rename from sample/res/values/styles.xml rename to sample/src/main/res/values/styles.xml diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..1c52b4c --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +include ':sample', ':library' \ No newline at end of file From d4a8acfdc525a706127725c0fc3e768e8e621aa1 Mon Sep 17 00:00:00 2001 From: msdx <645079761@qq.com> Date: Wed, 25 Apr 2018 14:14:53 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E4=BA=86=20Parcelable=20=E6=8E=A5=E5=8F=A3=E7=9A=84=E7=B1=BB?= =?UTF-8?q?=E6=88=96=E9=99=A4=E8=AF=A5=E6=9E=84=E9=80=A0=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E4=B9=8B=E5=A4=96=EF=BC=8C=E6=B2=A1=E6=9C=89=E6=97=A0=E5=8F=82?= =?UTF-8?q?=E6=9E=84=E9=80=A0=E6=96=B9=E6=B3=95=E5=AF=BC=E8=87=B4=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E5=AE=9E=E4=BE=8B=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 创建实例参考 moshi 的实现。并对创始实例的对象进行缓存,提升查询效率。 --- .../litesuits/orm/db/utils/ClassFactory.java | 135 ++++++++++++++++++ .../com/litesuits/orm/db/utils/ClassUtil.java | 28 ++-- 2 files changed, 143 insertions(+), 20 deletions(-) create mode 100644 library/src/main/java/com/litesuits/orm/db/utils/ClassFactory.java diff --git a/library/src/main/java/com/litesuits/orm/db/utils/ClassFactory.java b/library/src/main/java/com/litesuits/orm/db/utils/ClassFactory.java new file mode 100644 index 0000000..2e39195 --- /dev/null +++ b/library/src/main/java/com/litesuits/orm/db/utils/ClassFactory.java @@ -0,0 +1,135 @@ +package com.litesuits.orm.db.utils; + +import java.io.ObjectInputStream; +import java.io.ObjectStreamClass; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +/** + * Magic that creates instances of arbitrary concrete classes. Derived from Gson's UnsafeAllocator + * and ConstructorConstructor classes. + * Copy from square/moshi project. + * @author Joel Leitch + * @author Jesse Wilson + */ +abstract class ClassFactory { + abstract T newInstance() throws + InvocationTargetException, IllegalAccessException, InstantiationException; + + public static ClassFactory get(final Class rawType) { + // Try to find a no-args constructor. May be any visibility including private. + try { + final Constructor constructor = rawType.getDeclaredConstructor(); + constructor.setAccessible(true); + return new ClassFactory() { + @SuppressWarnings("unchecked") // T is the same raw type as is requested + @Override + public T newInstance() throws IllegalAccessException, InvocationTargetException, + InstantiationException { + Object[] args = null; + return (T) constructor.newInstance(args); + } + + @Override + public String toString() { + return rawType.getName(); + } + }; + } catch (NoSuchMethodException ignored) { + // No no-args constructor. Fall back to something more magical... + } + + // Try the JVM's Unsafe mechanism. + // public class Unsafe { + // public Object allocateInstance(Class type); + // } + try { + Class unsafeClass = Class.forName("sun.misc.Unsafe"); + Field f = unsafeClass.getDeclaredField("theUnsafe"); + f.setAccessible(true); + final Object unsafe = f.get(null); + final Method allocateInstance = unsafeClass.getMethod("allocateInstance", Class.class); + return new ClassFactory() { + @SuppressWarnings("unchecked") + @Override + public T newInstance() throws InvocationTargetException, IllegalAccessException { + return (T) allocateInstance.invoke(unsafe, rawType); + } + + @Override + public String toString() { + return rawType.getName(); + } + }; + } catch (IllegalAccessException e) { + throw new AssertionError(); + } catch (ClassNotFoundException ignored) { + // Not the expected version of the Oracle Java library! + } catch (NoSuchMethodException ignore) { + // Not the expected version of the Oracle Java library! + } catch (NoSuchFieldException ignore) { + // Not the expected version of the Oracle Java library! + } + + // Try (post-Gingerbread) Dalvik/libcore's ObjectStreamClass mechanism. + // public class ObjectStreamClass { + // private static native int getConstructorId(Class c); + // private static native Object newInstance(Class instantiationClass, int methodId); + // } + try { + Method getConstructorId = ObjectStreamClass.class.getDeclaredMethod( + "getConstructorId", Class.class); + getConstructorId.setAccessible(true); + final int constructorId = (Integer) getConstructorId.invoke(null, Object.class); + final Method newInstance = ObjectStreamClass.class.getDeclaredMethod("newInstance", + Class.class, int.class); + newInstance.setAccessible(true); + return new ClassFactory() { + @SuppressWarnings("unchecked") + @Override + public T newInstance() throws InvocationTargetException, IllegalAccessException { + return (T) newInstance.invoke(null, rawType, constructorId); + } + + @Override + public String toString() { + return rawType.getName(); + } + }; + } catch (IllegalAccessException e) { + throw new AssertionError(); + } catch (InvocationTargetException e) { + throw new RuntimeException(e); + } catch (NoSuchMethodException ignored) { + // Not the expected version of Dalvik/libcore! + } + + // Try (pre-Gingerbread) Dalvik/libcore's ObjectInputStream mechanism. + // public class ObjectInputStream { + // private static native Object newInstance( + // Class instantiationClass, Class constructorClass); + // } + try { + final Method newInstance = ObjectInputStream.class.getDeclaredMethod( + "newInstance", Class.class, Class.class); + newInstance.setAccessible(true); + return new ClassFactory() { + @SuppressWarnings("unchecked") + @Override + public T newInstance() throws InvocationTargetException, IllegalAccessException { + return (T) newInstance.invoke(null, rawType, Object.class); + } + + @Override + public String toString() { + return rawType.getName(); + } + }; + } catch (Exception ignored) { + } + + throw new IllegalArgumentException("cannot construct instances of " + rawType.getName()); + } +} \ No newline at end of file diff --git a/library/src/main/java/com/litesuits/orm/db/utils/ClassUtil.java b/library/src/main/java/com/litesuits/orm/db/utils/ClassUtil.java index 00eb65e..037adba 100755 --- a/library/src/main/java/com/litesuits/orm/db/utils/ClassUtil.java +++ b/library/src/main/java/com/litesuits/orm/db/utils/ClassUtil.java @@ -1,17 +1,14 @@ package com.litesuits.orm.db.utils; -import android.annotation.TargetApi; -import android.os.Build; import com.litesuits.orm.db.annotation.MapCollection; import java.lang.reflect.Array; -import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; -import java.util.Arrays; import java.util.Collection; import java.util.Date; -import java.util.List; +import java.util.HashMap; +import java.util.Map; /** * 类工具 @@ -20,6 +17,7 @@ * @date 2013-6-10下午8:00:46 */ public class ClassUtil { + private static final Map CLASS_FACTORIES = new HashMap(); /** * 判断类是否是基础数据类型 @@ -39,22 +37,12 @@ public static boolean isBaseDataType(Class clazz) { */ public static T newInstance(Class claxx) throws IllegalAccessException, InvocationTargetException, InstantiationException { - Constructor[] cons = claxx.getDeclaredConstructors(); - for (Constructor c : cons) { - Class[] cls = c.getParameterTypes(); - if (cls.length == 0) { - c.setAccessible(true); - return (T) c.newInstance(); - } else { - Object[] objs = new Object[cls.length]; - for (int i = 0; i < cls.length; i++) { - objs[i] = getDefaultPrimiticeValue(cls[i]); - } - c.setAccessible(true); - return (T) c.newInstance(objs); - } + ClassFactory factory = CLASS_FACTORIES.get(claxx); + if (factory == null) { + factory = ClassFactory.get(claxx); + CLASS_FACTORIES.put(claxx, factory); } - return null; + return factory.newInstance(); } public static Object newCollection(Class claxx) throws IllegalAccessException, InstantiationException { From ca342df9fec70ad14ae7a2aaedcc1d2f09ed0bff Mon Sep 17 00:00:00 2001 From: msdx <645079761@qq.com> Date: Wed, 25 Apr 2018 14:55:54 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E5=8F=91=E5=B8=83=201.9.3=20=E8=87=B3=20jc?= =?UTF-8?q?enter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bintray.gradle | 128 ++++++++++++++++++++++++++++++++++++++ library/build.gradle | 14 +++++ library/gradle.properties | 13 ++++ 3 files changed, 155 insertions(+) create mode 100644 bintray.gradle create mode 100644 library/gradle.properties diff --git a/bintray.gradle b/bintray.gradle new file mode 100644 index 0000000..db2731c --- /dev/null +++ b/bintray.gradle @@ -0,0 +1,128 @@ +group = PROJ_GROUP +version = PROJ_VERSION +project.archivesBaseName = PROJ_ARTIFACT_ID + +apply plugin: 'com.jfrog.bintray' +apply plugin: 'com.github.dcendents.android-maven' + +task sourcesJar(type: Jar) { + from android.sourceSets.main.java.srcDirs + classifier = 'sources' +} + +task javadoc(type: Javadoc) { + source = android.sourceSets.main.java.srcDirs + classpath += configurations.compile + classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) +} + +task javadocJar(type: Jar, dependsOn: javadoc) { + classifier = 'javadoc' + from javadoc.destinationDir +} + +javadoc { + options{ + encoding "UTF-8" + charSet 'UTF-8' + author true + version true + links "http://androiddoc.qiniudn.com/reference/" + title "$PROJ_ARTIFACT_ID $PROJ_VERSION" + } +} + +artifacts { + archives sourcesJar + archives javadocJar +} + +install { + repositories.mavenInstaller { + pom.project { + name PROJ_NAME + description PROJ_DESCRIPTION + url PROJ_WEBSITEURL + inceptionYear PROJ_INCEPTION_YEAR + + packaging 'aar' + groupId PROJ_GROUP + artifactId PROJ_ARTIFACT_ID + version PROJ_VERSION + + licenses { + license { + name 'The Apache Software License, Version 2.0' + url 'http://www.apache.org/licenses/LICENSE-2.0.txt' + distribution 'repo' + } + } + scm { + connection PROJ_VCSURL + url PROJ_WEBSITEURL + + } + } + } +} + +bintray { + user = project.hasProperty('bintrayUser') ? project.property('bintrayUser') : project.property('BINTRAY_USER') + key = project.hasProperty('bintrayKey') ? project.property('bintrayKey') : project.property('BINTRAY_KEY') + + configurations = ['archives'] + + dryRun = false + publish = true + + pkg { + repo = 'maven' + name = PROJ_NAME + licenses = ['Apache-2.0'] + vcsUrl = PROJ_VCSURL + websiteUrl = PROJ_WEBSITEURL + issueTrackerUrl = PROJ_ISSUETRACKERURL + publicDownloadNumbers = true + version { + name = PROJ_VERSION + desc = PROJ_DESCRIPTION + vcsTag = PROJ_VERSION + + gpg { + sign = true + } + + mavenCentralSync { + sync = project.hasProperty('SONATYPE_USER') && project.hasProperty('SONATYPE_KEY') + user = project.hasProperty('SONATYPE_USER') ? project.property('SONATYPE_USER') : "" + password = project.hasProperty('SONATYPE_PASS') ? project.property('SONATYPE_PASS') : "" + close = '1' + } + } + } +} + +//以下内容用于发布SNAPSHOT版本,如果不需要可以移除。 +//参考自:https://www.jfrog.com/confluence/display/RTF/Gradle+Artifactory+Plugin + +apply plugin: "com.jfrog.artifactory" +artifactory { + contextUrl = 'https://oss.jfrog.org/artifactory' //The base Artifactory URL if not overridden by the publisher/resolver + resolve { + repository { + repoKey = 'libs-release' + } + } + publish { + repository { + repoKey = 'oss-snapshot-local' //The Artifactory repository key to publish to + username = bintray.user + password = bintray.key + maven = true + } + defaults { + //这里的名字和前面bintray.configurations的值一致即可,会将其包含的输出上传到jfrog上去 + publishConfigs('archives') + } + } +} diff --git a/library/build.gradle b/library/build.gradle index ac4601f..1d95943 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -1,3 +1,14 @@ +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0' + classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3' + classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.0.0" // Remove it if you won't to publish SNAPSHOT version. + } +} + apply plugin: 'com.android.library' android { @@ -26,3 +37,6 @@ android { dependencies { } +if (hasProperty("bintrayUser") || hasProperty("BINTRAY_USER")) { + apply from: '../bintray.gradle' +} diff --git a/library/gradle.properties b/library/gradle.properties new file mode 100644 index 0000000..530cf36 --- /dev/null +++ b/library/gradle.properties @@ -0,0 +1,13 @@ +PROJ_GROUP=com.githang +PROJ_ARTIFACT_ID=android-lite-orm +PROJ_VERSION=1.9.3 +PROJ_NAME=android-lite-orm +PROJ_DESCRIPTION=LiteOrm is a fast, small, powerful ORM framework for Android. LiteOrm makes you do CRUD operarions on SQLite database with a sigle line of code efficiently. +PROJ_INCEPTION_YEAR=2016 +PROJ_WEBSITEURL=https://github.com/msdx/android-lite-orm +PROJ_VCSURL=git@github.com:msdx/android-lite-orm.git +PROJ_ISSUETRACKERURL=https://github.com/msdx/android-lite-orm/issues + +LICENSE_NAME=The Apache Software License, Version 2.0 +LICENSE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt +LICENSE_DISTRIBUTION=repo From 6c89f6532b20d05c32a72d4ac23de951e0dc54dc Mon Sep 17 00:00:00 2001 From: msdx <645079761@qq.com> Date: Wed, 16 May 2018 13:15:47 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8DEnCrypt.getEncodeString(S?= =?UTF-8?q?tring,=20String)=E5=AE=9E=E9=99=85=E4=B8=8A=E6=98=AF=E4=BD=BF?= =?UTF-8?q?=E7=94=A8MD5=E6=91=98=E8=A6=81=E7=AE=97=E6=B3=95=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/src/main/java/com/litesuits/orm/db/assit/Encrypt.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/main/java/com/litesuits/orm/db/assit/Encrypt.java b/library/src/main/java/com/litesuits/orm/db/assit/Encrypt.java index 17fcfd6..0301de7 100755 --- a/library/src/main/java/com/litesuits/orm/db/assit/Encrypt.java +++ b/library/src/main/java/com/litesuits/orm/db/assit/Encrypt.java @@ -37,7 +37,7 @@ public static String getSHA512EncString(String txt) { public static String getEncodeString(String src, String algorithm) { try { - MessageDigest digest = MessageDigest.getInstance("MD5"); + MessageDigest digest = MessageDigest.getInstance(algorithm); digest.update(src.getBytes()); byte[] md = digest.digest(); int j = md.length; From 0fa57467d14b147662dffd072a29b3d43e05e570 Mon Sep 17 00:00:00 2001 From: msdx <645079761@qq.com> Date: Wed, 24 Oct 2018 16:13:06 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E6=9B=B4=E6=96=B0Gradle=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E8=87=B33.2.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 ++-- library/build.gradle | 1 - sample/build.gradle | 3 +-- sample/src/main/AndroidManifest.xml | 3 --- 5 files changed, 4 insertions(+), 9 deletions(-) diff --git a/build.gradle b/build.gradle index ea5a0a4..8b0aeb4 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.1' + classpath 'com.android.tools.build:gradle:3.2.1' } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5340b70..4510e10 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Apr 09 12:42:57 CST 2018 +#Wed May 16 13:09:32 CST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip diff --git a/library/build.gradle b/library/build.gradle index 1d95943..c16b630 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -13,7 +13,6 @@ apply plugin: 'com.android.library' android { compileSdkVersion 27 - buildToolsVersion "27.0.3" defaultConfig { minSdkVersion 7 diff --git a/sample/build.gradle b/sample/build.gradle index 0db46dc..2dfb6d0 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -2,10 +2,9 @@ apply plugin: 'com.android.application' android { compileSdkVersion 27 - buildToolsVersion "27.0.3" defaultConfig { - minSdkVersion 7 + minSdkVersion 16 targetSdkVersion 22 } } diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml index b3b1ce6..436e144 100755 --- a/sample/src/main/AndroidManifest.xml +++ b/sample/src/main/AndroidManifest.xml @@ -4,9 +4,6 @@ android:versionCode="1" android:versionName="1.0"> - - From 78c1651535b6a8302aa4c029d15316d4b4f0b100 Mon Sep 17 00:00:00 2001 From: msdx <645079761@qq.com> Date: Wed, 24 Oct 2018 16:20:31 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E4=BC=98=E5=8C=96FieldUtil.setNumber()?= =?UTF-8?q?=E6=96=B9=E6=B3=95=EF=BC=8C=E5=87=8F=E5=B0=91=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/litesuits/orm/db/utils/FieldUtil.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/library/src/main/java/com/litesuits/orm/db/utils/FieldUtil.java b/library/src/main/java/com/litesuits/orm/db/utils/FieldUtil.java index d52b525..2ee07d9 100755 --- a/library/src/main/java/com/litesuits/orm/db/utils/FieldUtil.java +++ b/library/src/main/java/com/litesuits/orm/db/utils/FieldUtil.java @@ -139,13 +139,13 @@ public static void setNumber(Object o, Field field, long n) throws IllegalAccess } else if (claxx == byte.class) { field.setByte(o, (byte) n); } else if (claxx == Long.class) { - field.set(o, new Long(n)); + field.set(o, Long.valueOf(n)); } else if (claxx == Integer.class) { - field.set(o, new Integer((int) n)); + field.set(o, Integer.valueOf((int) n)); } else if (claxx == Short.class) { - field.set(o, new Short((short) n)); + field.set(o, Short.valueOf((short) n)); } else if (claxx == Byte.class) { - field.set(o, new Byte((byte) n)); + field.set(o, Byte.valueOf((byte) n)); } else { throw new RuntimeException("field is not a number class"); } From fd95bbaac6fcbd2558eb988385c15ccce82b6385 Mon Sep 17 00:00:00 2001 From: msdx <645079761@qq.com> Date: Wed, 24 Oct 2018 17:02:16 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E4=B8=BAList=E6=88=96Set=E7=AD=89=E9=9D=9E?= =?UTF-8?q?=E5=85=B7=E4=BD=93=E7=B1=BB=E5=9E=8B=E6=97=B6=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/build.gradle | 2 +- .../com/litesuits/orm/db/utils/ClassUtil.java | 25 ++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/library/build.gradle b/library/build.gradle index c16b630..7c43b2a 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -15,7 +15,7 @@ android { compileSdkVersion 27 defaultConfig { - minSdkVersion 7 + minSdkVersion 9 targetSdkVersion 27 versionCode 28 versionName "1.9.2" diff --git a/library/src/main/java/com/litesuits/orm/db/utils/ClassUtil.java b/library/src/main/java/com/litesuits/orm/db/utils/ClassUtil.java index 037adba..bc92366 100755 --- a/library/src/main/java/com/litesuits/orm/db/utils/ClassUtil.java +++ b/library/src/main/java/com/litesuits/orm/db/utils/ClassUtil.java @@ -5,10 +5,18 @@ import java.lang.reflect.Array; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; +import java.util.ArrayDeque; +import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; +import java.util.LinkedHashSet; +import java.util.List; import java.util.Map; +import java.util.Queue; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; /** * 类工具 @@ -52,7 +60,22 @@ public static Object newCollection(Class claxx) throws IllegalAccessException public static Object newCollectionForField(Field field) throws IllegalAccessException, InstantiationException { MapCollection coll = field.getAnnotation(MapCollection.class); if (coll == null) { - return field.getType().newInstance(); + final Class rawType = field.getType(); + if (rawType.isInterface()) { + if (List.class.isAssignableFrom(rawType)) { + return new ArrayList<>(); + } else if (SortedSet.class.isAssignableFrom(rawType)) { + return new TreeSet<>(); + } else if (Set.class.isAssignableFrom(rawType)) { + return new LinkedHashSet<>(); + } else if (Queue.class.isAssignableFrom(rawType)) { + return new ArrayDeque<>(); + } else { + throw new IllegalAccessException("The type " + rawType.getName() + " cannot be instantiated"); + } + } else { + return rawType.newInstance(); + } } else { return coll.value().newInstance(); }