Android 小项目快速开发

作者: 韩大发 | 来源:发表于2016-04-15 15:47 被阅读414次

    别人写好的东西,直接拿来用就好了。


    背景

    最近在做一个简单扫描二维码的单机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进行对象传值。

    相关文章

      网友评论

        本文标题:Android 小项目快速开发

        本文链接:https://www.haomeiwen.com/subject/dgsnlttx.html