别人写好的东西,直接拿来用就好了。
背景
最近在做一个简单扫描二维码的单机APP,功能简单,逻辑清晰。只想快速开发完成。用到的三方开源框架:
- butterknife
- litepal
- pgyersdk
集成到项目[android studio build.grade(module)]
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'org.litepal.android:core:1.3.1'
compile 'com.jakewharton:butterknife:7.0.1'
compile 'com.pgyersdk:sdk:2.2.2'
compile files('libs/zxing.jar')
}
Butterknife
注:当然更加快捷的使用Butterknife,要配合 android studio 插件
Android ButterKnife Zelezny
Litepal
注:关系型数据库,和hibernate 3.0版本很像,但是比hibernate 3.0用起来简单的很,开发必备。
pgyersdk
注:前期用来版本分发测试,正式上线就不建议继续使用了。
代码混淆
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
默认minifyEnabled false,如果使用混淆需要改成ture。位置在:build.grade(module)
混淆规则,在proguard-rules.pro文件编写
-optimizationpasses 5 # 指定代码的压缩级别
-dontusemixedcaseclassnames # 是否使用大小写混合
-dontpreverify # 混淆时是否做预校验
-verbose # 混淆时是否记录日志
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆时所采用的算法
#butterknife
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }
-keepclasseswithmembernames class * {
@butterknife.* <fields>;
}
-keepclasseswithmembernames class * {
@butterknife.* <methods>;
}
#butterknife
#pgy
-dontwarn com.pgyersdk.**
-keep class com.pgyersdk.** { *; }
#pgy
#litepal
-dontwarn org.litepal.*
-keep class org.litepal.** { *; }
-keep enum org.litepal.**
-keep interface org.litepal.** { *; }
-keep public class * extends org.litepal.**
-keepattributes *Annotation*
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepclassmembers class * extends org.litepal.crud.DataSupport{*;}
#litepal
#zxing
-dontwarn com.google.zxing.**
-keep class com.google.zxing.** {*; }
#zxing
自己的想法
使用Litepal建立model类的时候,最好实现Parcelable或Serializable接口,方便Intent进行对象传值。
网友评论