ソースを参照

Merge remote-tracking branch 'origin/sheep2.0' into sheep2.0

zengjiebin 7 年 前
コミット
f4f854e1b8

+ 5 - 1
app/build.gradle

@@ -1,5 +1,7 @@
 apply plugin: 'com.android.application'
 apply plugin: 'com.android.application'
 apply plugin: 'com.jakewharton.butterknife'
 apply plugin: 'com.jakewharton.butterknife'
+// 依赖插件脚本
+apply from: 'tinker-support.gradle'
 android {
 android {
     compileSdkVersion androidConfigs.compileSdkVersion
     compileSdkVersion androidConfigs.compileSdkVersion
     buildToolsVersion androidConfigs.buildToolsVersion
     buildToolsVersion androidConfigs.buildToolsVersion
@@ -131,7 +133,9 @@ dependencies {
     compile 'com.zhy:base-adapter:3.0.3'
     compile 'com.zhy:base-adapter:3.0.3'
 
 
     //    compile 'com.liulishuo.filedownloader:library:1.6.9'
     //    compile 'com.liulishuo.filedownloader:library:1.6.9'
-    compile 'com.tencent.bugly:crashreport_upgrade:1.3.4'
+    compile 'com.tencent.bugly:crashreport_upgrade:1.3.5'
+    // 指定tinker依赖版本(注:应用升级1.3.5版本起,不再内置tinker)
+    compile 'com.tencent.tinker:tinker-android-lib:1.9.6'
 
 
     //其中latest.release指代最新版本号,也可以指定明确的版本号,例如1.2.0
     //其中latest.release指代最新版本号,也可以指定明确的版本号,例如1.2.0
     compile 'com.tencent.bugly:nativecrashreport:3.3.1'
     compile 'com.tencent.bugly:nativecrashreport:3.3.1'

+ 2 - 0
app/proguard-rules.pro

@@ -51,6 +51,8 @@
 -keep class com.tencent.mm.** {
 -keep class com.tencent.mm.** {
    *;
    *;
 }
 }
+-keep class com.tencent.tinker.** { *; }
+#
-keep class android.support.**{*;}
 
 
 -dontwarn twitter4j.**
 -dontwarn twitter4j.**
 -keep class twitter4j.** { *; }
 -keep class twitter4j.** { *; }

+ 21 - 28
app/src/main/java/com/kfzs/duanduan/fragment/FgtPersonalCenter.java

@@ -88,36 +88,35 @@ public class FgtPersonalCenter extends BaseCompatFragment {
                 try{
                 try{
                     if (baseMessage != null){
                     if (baseMessage != null){
                         AgentEntity agentEntity = baseMessage.getData(AgentEntity.class);
                         AgentEntity agentEntity = baseMessage.getData(AgentEntity.class);
-                        if(agentEntity != null){
-                            SpUtils.saveAgencyState(1);
-                        }else {
-                            SpUtils.saveAgencyState(0);
+                        if(agentEntity != null && agentEntity.getIs_banned() == 0){
+                            //设置是否显示代理服务
+                            proxy_service_layout_line.setVisibility(View.VISIBLE);
+                            proxy_service_layout.setVisibility(View.VISIBLE);
                         }
                         }
 
 
-                    }else {
-                        SpUtils.saveAgencyState(0);
                     }
                     }
                 }catch (Exception e){
                 }catch (Exception e){
                     e.printStackTrace();
                     e.printStackTrace();
                 }
                 }
-                SheepApp.getInstance().getNetComponent().getApiService().getInfo()
-                        .subscribeOn(Schedulers.io())
-                        .observeOn(AndroidSchedulers.mainThread())
-                        .subscribe(new SheepSubscriber<BaseMessage>(getContext()) {
-                            @Override
-                            public void onNext(BaseMessage baseMessage) {
-                                LogUtil.println("baseMessage onNext " + JSON.toJSONString(baseMessage));
-                                updateData(baseMessage);
-                            }
-
-                            @Override
-                            public void onError(BaseMessage baseMessage) {
-                                LogUtil.println("baseMessage onError " + JSON.toJSONString(baseMessage));
-                            }
-                        });
             }
             }
         });
         });
 
 
+        SheepApp.getInstance().getNetComponent().getApiService().getInfo()
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(getContext()) {
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        LogUtil.println("baseMessage onNext " + JSON.toJSONString(baseMessage));
+                        updateData(baseMessage);
+                    }
+
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        LogUtil.println("baseMessage onError " + JSON.toJSONString(baseMessage));
+                    }
+                });
+
         String appVersonName = ApkUtils.getCurrentPkgVersionName(SheepApp.getInstance());
         String appVersonName = ApkUtils.getCurrentPkgVersionName(SheepApp.getInstance());
         version_item_tv.setText("小绵羊V");
         version_item_tv.setText("小绵羊V");
         version_item_tv.append(appVersonName);
         version_item_tv.append(appVersonName);
@@ -150,13 +149,7 @@ public class FgtPersonalCenter extends BaseCompatFragment {
                 .load(userEntitys.getAvatar() + "")
                 .load(userEntitys.getAvatar() + "")
                 .apply(new RequestOptions().circleCrop().placeholder(R.drawable.icon))
                 .apply(new RequestOptions().circleCrop().placeholder(R.drawable.icon))
                 .into(iconImgIv);
                 .into(iconImgIv);
-        //设置是否显示代理服务
-        proxy_service_layout_line.setVisibility(
-//                BuildConfig.DEBUG ||
-                SpUtils.getAgencyState() == 1 ? View.VISIBLE : View.GONE);
-        proxy_service_layout.setVisibility(
-//                BuildConfig.DEBUG ||
-                SpUtils.getAgencyState() == 1 ? View.VISIBLE : View.GONE);
+
     }
     }
 
 
     @Override
     @Override

+ 2 - 0
app/src/main/java/com/kfzs/duanduan/fragment/FgtSmallSheep.java

@@ -417,6 +417,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
             R.id.q_iv, R.id.q_name_tv, R.id.q_dec_tv,
             R.id.q_iv, R.id.q_name_tv, R.id.q_dec_tv,
             R.id.lying_iv, R.id.lying_dec_tv, R.id.lying_name_tv})
             R.id.lying_iv, R.id.lying_dec_tv, R.id.lying_name_tv})
     public void onViewClicked(View view) {
     public void onViewClicked(View view) {
+        G.showToast("test 热更新");
         switch (view.getId()) {
         switch (view.getId()) {
             case R.id.user_layout:
             case R.id.user_layout:
                 break;
                 break;
@@ -442,6 +443,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
                 NEWBIE_TASK.onEvent();
                 NEWBIE_TASK.onEvent();
                 break;
                 break;
             case R.id.icon_layout://
             case R.id.icon_layout://
+                TestUtil.test(activity);
                 if(TestUtil.isTest()) {
                 if(TestUtil.isTest()) {
                     TestUtil.test(activity);
                     TestUtil.test(activity);
                 }else
                 }else

+ 9 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/AgentEntity.java

@@ -13,6 +13,15 @@ public class AgentEntity {
     private String name;//private String string",
     private String name;//private String string",
     private String p_adcode;// 0,上级的adcode
     private String p_adcode;// 0,上级的adcode
     private String update_time;// 0\自动更新时间
     private String update_time;// 0\自动更新时间
+    private int is_banned;//是否禁用:0正常用户,1禁止用户
+
+    public int getIs_banned() {
+        return is_banned;
+    }
+
+    public void setIs_banned(int is_banned) {
+        this.is_banned = is_banned;
+    }
 
 
     public String getAdcode() {
     public String getAdcode() {
         return adcode;
         return adcode;

+ 7 - 1
app/src/main/java/com/sheep/jiuyan/samllsheep/SheepApp.java

@@ -25,6 +25,7 @@ import com.sheep.gamegroup.view.activity.SplashAct;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.tencent.bugly.Bugly;
 import com.tencent.bugly.Bugly;
+import com.tencent.bugly.beta.Beta;
 
 
 import rx.functions.Action1;
 import rx.functions.Action1;
 
 
@@ -91,7 +92,9 @@ public class SheepApp extends BaseApplication {
             initGoble();
             initGoble();
             initNet();
             initNet();
 //            Beta.autoCheckUpgrade = false;
 //            Beta.autoCheckUpgrade = false;
-            Bugly.init(getApplicationContext(), Config.BUGLY_APPID, BuildConfig.DEBUG);
+            Bugly.init(getApplicationContext(), Config.BUGLY_APPID, true);
+            //开发设备
+            Bugly.setIsDevelopmentDevice(getApplicationContext(), true);
         }
         }
     }
     }
 
 
@@ -198,5 +201,8 @@ public class SheepApp extends BaseApplication {
     protected void attachBaseContext(Context base) {
     protected void attachBaseContext(Context base) {
         super.attachBaseContext(base);
         super.attachBaseContext(base);
         MultiDex.install(this);
         MultiDex.install(this);
+
+        // 安装tinker
+        Beta.installTinker();
     }
     }
 }
 }

+ 1 - 1
app/src/main/res/layout/fgt_personalcenter_item_center_one.xml

@@ -171,7 +171,7 @@
         android:background="@color/white_bg_line"
         android:background="@color/white_bg_line"
         android:layout_marginLeft="15dp"
         android:layout_marginLeft="15dp"
         android:layout_marginRight="15dp"
         android:layout_marginRight="15dp"
-        />
+        android:visibility="gone"/>
 
 
     <RelativeLayout
     <RelativeLayout
         android:id="@+id/proxy_service_layout"
         android:id="@+id/proxy_service_layout"

+ 90 - 0
app/tinker-support.gradle

@@ -0,0 +1,90 @@
+apply plugin: 'com.tencent.bugly.tinker-support'
+
+def bakPath = file("${buildDir}/bakApk/")
+
+/**
+ * 此处填写每次构建生成的基准包目录
+ */
+def baseApkDir = "app-0706-14-28-51"
+
+/**
+ * 对于插件各参数的详细解析请参考
+ */
+tinkerSupport {
+
+    // 开启tinker-support插件,默认值true
+    enable = true
+
+    // 指定归档目录,默认值当前module的子目录tinker
+    autoBackupApkDir = "${bakPath}"
+
+    // 是否启用覆盖tinkerPatch配置功能,默认值false
+    // 开启后tinkerPatch配置不生效,即无需添加tinkerPatch
+    overrideTinkerPatchConfiguration = true
+
+    // 编译补丁包时,必需指定基线版本的apk,默认值为空
+    // 如果为空,则表示不是进行补丁包的编译
+    // @{link tinkerPatch.oldApk }
+    baseApk = "${bakPath}/${baseApkDir}/app-sheep-release.apk"
+
+    // 对应tinker插件applyMapping
+    baseApkProguardMapping = "${bakPath}/${baseApkDir}/app-sheep-release-mapping.txt"
+
+    // 对应tinker插件applyResourceMapping
+    baseApkResourceMapping = "${bakPath}/${baseApkDir}/app-sheep-release-R.txt"
+
+    // 构建基准包和补丁包都要指定不同的tinkerId,并且必须保证唯一性(2007000-patch;)
+//    tinkerId = "2007000-base"
+    tinkerId = "2007000-patch"
+
+    // 构建多渠道补丁时使用
+    // buildAllFlavorsDir = "${bakPath}/${baseApkDir}"
+
+    // 是否启用加固模式,默认为false.(tinker-spport 1.0.7起支持)
+    // isProtectedApp = true
+
+    // 是否开启反射Application模式
+    enableProxyApplication = true
+
+    // 是否支持新增非export的Activity(注意:设置为true才能修改AndroidManifest文件)
+    supportHotplugComponent = true
+
+}
+
+/**
+ * 一般来说,我们无需对下面的参数做任何的修改
+ * 对于各参数的详细介绍请参考:
+ * https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97
+ */
+tinkerPatch {
+    //oldApk ="${bakPath}/${appName}/app-release.apk"
+    ignoreWarning = false
+    useSign = true
+    dex {
+        dexMode = "jar"
+        pattern = ["classes*.dex"]
+        loader = []
+    }
+    lib {
+        pattern = ["lib/*/*.so"]
+    }
+
+    res {
+        pattern = ["res/*", "r/*", "assets/*", "resources.arsc", "AndroidManifest.xml"]
+        ignoreChange = []
+        largeModSize = 100
+    }
+
+    packageConfig {
+    }
+    sevenZip {
+        zipArtifact = "com.tencent.mm:SevenZip:1.1.10"
+//        path = "/usr/local/bin/7za"
+    }
+    buildConfig {
+        keepDexApply = false
+        //tinkerId = "1.0.1-base"
+        //applyMapping = "${bakPath}/${appName}/app-release-mapping.txt" //  可选,设置mapping文件,建议保持旧apk的proguard混淆方式
+        //applyResourceMapping = "${bakPath}/${appName}/app-release-R.txt" // 可选,设置R.txt文件,通过旧apk文件保持ResId的分配
+    }
+}

+ 3 - 0
build.gradle

@@ -21,6 +21,9 @@ buildscript {
 //        classpath 'com.didi.virtualapk:gradle:0.9.1'
 //        classpath 'com.didi.virtualapk:gradle:0.9.1'
         // NOTE: Do not place your application dependencies here; they belong
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
         // in the individual module build.gradle files
+
+        // tinkersupport插件, 其中lastest.release指拉取最新版本,也可以指定明确版本号,例如1.0.4
+        classpath "com.tencent.bugly:tinker-support:1.1.2"
     }
     }
 }
 }