这是过年最后一篇博文了,正好也忙完了,好好写写~这一年我经历了很多,也成长不少,不论是技术还是财富,还是感情,自己都看开了许多,生活如阳光般shining~一起加油~
如果你的APP版本比较多,但是功能类似,这时候用的是一套代码,打版就是一件费事的事情了,跑一次要好久,所以就出现了一次性多版本打版的方法。
如图:
1.先把公共变量配置一下,调用的时候去调分版的设置,分版的设置公共变量在主流程的代码中~
代码1:
package com.example.p010_recycleviewall.application;
/**
* Created by shining on 2017/1/4 0004.
*/
public class ConstantNetUtil {
//
public static final boolean SERVER_CHANGE_B = VersionConfig.SET_VIS_B;
public static final boolean SERVER_CHANGE_B1 = VersionConfig.SET_VIS_B1;
public static final boolean SERVER_CHANGE_B2 = VersionConfig.SET_VIS_B2;
public static final boolean SERVER_CHANGE_B3 = VersionConfig.SET_VIS_B3;
public static final boolean SERVER_CHANGE_B4 = VersionConfig.SET_VIS_B4;
public static final boolean SERVER_CHANGE_B5 = VersionConfig.SET_VIS_B5;
public static final boolean SERVER_CHANGE_B6 = VersionConfig.SET_VIS_B6;
}
代码2:
package com.example.p010_recycleviewall.application;
/**
* Created by shining on 2017/1/4 0004.
*/
public class VersionConfig {
public static final boolean SET_VIS_B = NetConfig.B_TRUE;
public static final boolean SET_VIS_B1 = NetConfig.B_FALSE;
public static final boolean SET_VIS_B2 = NetConfig.B_FALSE;
public static final boolean SET_VIS_B3 = NetConfig.B_FALSE;
public static final boolean SET_VIS_B4 = NetConfig.B_FALSE;
public static final boolean SET_VIS_B5 = NetConfig.B_FALSE;
public static final boolean SET_VIS_B6 = NetConfig.B_FALSE;
}
代码3:
package com.example.p010_recycleviewall.application;
/**
* Created by shining on 2017/1/4 0004.
*/
public class NetConfig {
//
public static final boolean B_TRUE = true;
public static final boolean B_FALSE = false;
}
2.然后新建各种分版配置包:其实是先新建~O(∩_∩)O哈哈~
3.如果你的配置里面有resource配置,那就如上图配置xml就可以~
4.接着就是gradle的配置:
def int minSdk = 15;
def int targetSdk = 23;
def String appId = 'com.example.p010_recycleviewall';
def int vCode = 1;
def String vNameCode = vCode + "";
productFlavors {
//demo
DemoAPK {
minSdkVersion minSdk
applicationId appId
targetSdkVersion targetSdk
versionCode vCode
versionName "DemoAPK"
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
//demo1
DemoAPK1 {
minSdkVersion minSdk
applicationId appId
targetSdkVersion targetSdk
versionCode vCode
versionName "DemoAPK1"
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
//demo2
DemoAPK2 {
minSdkVersion minSdk
applicationId appId
targetSdkVersion targetSdk
versionCode vCode
versionName "DemoAPK2"
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
//demo3
DemoAPK3 {
minSdkVersion minSdk
applicationId appId
targetSdkVersion targetSdk
versionCode vCode
versionName "DemoAPK3"
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
//demo4
DemoAPK4 {
minSdkVersion minSdk
applicationId appId
targetSdkVersion targetSdk
versionCode vCode
versionName "DemoAPK4"
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
//demo5
DemoAPK5 {
minSdkVersion minSdk
applicationId appId
targetSdkVersion targetSdk
versionCode vCode
versionName "DemoAPK5"
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
//demo6
DemoAPK6 {
minSdkVersion minSdk
applicationId appId
targetSdkVersion targetSdk
versionCode vCode
versionName "DemoAPK6"
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
// 自定义输出配置
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// def fileName = "UerbT_v${variant.versionName}_${releaseTime()}_${variant.flavorName}.apk"
def fileName = "${variant.versionName}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
5.最后就是demo的一次打七个版本,每个版本分别多显示一个TextView~
package com.example.p010_recycleviewall;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePrecreateRequest;
import com.alipay.api.response.AlipayTradePrecreateResponse;
import com.example.p010_recycleviewall.application.ConstantNetUtil;
import com.example.p010_recycleviewall.recycleviewgridview.MainActivity2;
import com.example.p010_recycleviewall.recycleviewgridviewaddheadandfooter.MainActivity4;
import com.example.p010_recycleviewall.recycleviewlistview.MainActivity1;
import com.example.p010_recycleviewall.recycleviewlistviewaddheadandfooter.MainActivity3;
import com.example.p010_recycleviewall.tablayout.fragmentframelayout.ShopIndexActivity;
import com.example.p010_recycleviewall.tablayout.fragmentviewpager.MainActivityTabLayout;
public class MainActivity extends AppCompatActivity {
private static final String APP_ID = "App_id";
private AlipayClient alipayClient;
private static final String APP_PRIVATE_KEY = "密钥";
private static final String APP_PUBLIC_KEY = "支付宝公钥";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
set_vis(ConstantNetUtil.SERVER_CHANGE_B, ConstantNetUtil.SERVER_CHANGE_B1, ConstantNetUtil.SERVER_CHANGE_B2,
ConstantNetUtil.SERVER_CHANGE_B3, ConstantNetUtil.SERVER_CHANGE_B4, ConstantNetUtil.SERVER_CHANGE_B5,
ConstantNetUtil.SERVER_CHANGE_B6);
findViewById(R.id.tv1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, MainActivity1.class);
startActivity(intent);
}
});
findViewById(R.id.tv2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, MainActivity2.class);
startActivity(intent);
}
});
findViewById(R.id.tv3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, MainActivity3.class);
startActivity(intent);
}
});
findViewById(R.id.tv4).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, MainActivity4.class);
startActivity(intent);
}
});
findViewById(R.id.tv5).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, MainActivityTabLayout.class);
startActivity(intent);
}
});
findViewById(R.id.tv6).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, ShopIndexActivity.class);
startActivity(intent);
}
});
//支付宝扫码支付bufen
alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", "GBK", APP_PUBLIC_KEY);
findViewById(R.id.tv7).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();//创建API对应的request类
request.setBizContent("{" +
" \"out_trade_no\":\"20150320010101002\"," +
" \"total_amount\":88.88," +
" \"subject\":\"Iphone6 16G\"," +
" \"store_id\":\"NJ_001\"," +
" \"timeout_express\":\"90m\"," +
" }");//设置业务参数
new Thread(new Runnable() {
@Override
public void run() {
try {
AlipayTradePrecreateResponse response = alipayClient.execute(request);
System.out.println("结果=" + response.getQrCode());
} catch (AlipayApiException e) {
System.out.println("进入异常");
Log.e("1", "Exception: " + Log.getStackTraceString(e));
e.printStackTrace();
}
}
}).start();
}
});
}
/**
* @param b
* @param b1
* @param b2
* @param b3
* @param b4
* @param b5
* @param b6
*/
private void set_vis(boolean b, boolean b1, boolean b2, boolean b3, boolean b4, boolean b5, boolean b6) {
if (b) {
findViewById(R.id.tv1).setVisibility(View.VISIBLE);
} else {
findViewById(R.id.tv1).setVisibility(View.GONE);
}
if (b1) {
findViewById(R.id.tv2).setVisibility(View.VISIBLE);
} else {
findViewById(R.id.tv2).setVisibility(View.GONE);
}
if (b2) {
findViewById(R.id.tv3).setVisibility(View.VISIBLE);
} else {
findViewById(R.id.tv3).setVisibility(View.GONE);
}
if (b3) {
findViewById(R.id.tv4).setVisibility(View.VISIBLE);
} else {
findViewById(R.id.tv4).setVisibility(View.GONE);
}
if (b4) {
findViewById(R.id.tv5).setVisibility(View.VISIBLE);
} else {
findViewById(R.id.tv5).setVisibility(View.GONE);
}
if (b5) {
findViewById(R.id.tv6).setVisibility(View.VISIBLE);
} else {
findViewById(R.id.tv6).setVisibility(View.GONE);
}
if (b6) {
findViewById(R.id.tv7).setVisibility(View.VISIBLE);
} else {
findViewById(R.id.tv7).setVisibility(View.GONE);
}
}
}
6.找到gradle.bat路径下执行gradlew assembleDebug~Waitting~
7.是不是很帅~最后讲一下版本running的切换,选择哪个就会切换到哪个版本~看图:
这一年忙的很苦,但是也很幸福,有追求的目标和方向~生活还是充满正能量~希望2017年能实现自己的梦想和感受幸福~新年快乐~
Shining(*^__^*) 嘻嘻……
git地址:https://github.com/geeklx/MyApplication/tree/master/p010_recycleviewall