有的时候,为了在不同的渠道下面去上传应用,我们为了满足不同平台的需求,可能需要:启动画面不同,欢迎语不同。
用户进行网络注册的时候,注册上来的用户,公司关心这个用户是从哪一个渠道商下载的,这个是运营商的需要,渠道商的id,
android studio 里面有了专门的分渠道打包的支持,其实也就是“图片,文字”
我们使用到android studio 中的flavor,android studio 会自动的根据不同的flavor去使用该flavor下面的图片和文件,
需要说明的是图片的格式必须是相同的,最好都是png格式的,而且要求该图片本来就是png格式的,不能本来是jpeg格式的然后只是修改了后缀名。
首先未考虑渠道的情况下的布局和MainActivity
package com.kodulf.channeldemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView versionCodeTextView = (TextView)findViewById(R.id.versionCode);
String versionCodeString = getResources().getString(R.string.versioncode);
versionCodeTextView.setText("版本号:"+versionCodeString);
}
}
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.kodulf.channeldemo.MainActivity">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/text"
android:textSize="25sp"
android:layout_centerInParent="true"/>
<ImageView
android:layout_below="@+id/text"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/logo"
/>
<TextView
android:id="@+id/versionCode"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/text"
android:textSize="25sp"
android:text="版本号:"/>
</RelativeLayout>
在values 目录下面右键,new->new resource file->创建一个channels的文件
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="text">你好我是默认文档</string>
<string name="versioncode">10001</string>
</resources>
然后拷贝一个logo.png图片到mimap-xhdpi目录下面。
这样上面的正常的流程走完,下面是考虑全渠道的情况:
首先找到3个百度,360,豌豆荚的logo的图片,都命名为logo.png
右键项目名,点击Open Module Settings,选择flavors,然后点击左下角的+号来进行不同的渠道的添加,这里添加了3个渠道
在Project的视图模式下面,右击src文件,new -》Android resource directory
首先我们选择Resource type 为mipmap,
然后Source set 为baidu
然后Available qualifiers 为Density
选中后点击》》来将它放到Chosen qualifiers里面
然后Density 选择High Density
这个时候就会在src的文件夹下面创建一个baidu的文件夹,这个文件夹和main文件夹是同一个等级的,
同时里面还有一个一个res的文件夹,里面有一个mipmap-xhdpi的文件夹,将我们的百度的logo.png图片放到这里。
然后我们去创建一个values文件夹,还是邮件src文件夹,然后new -》android resource directory
然后resource type 为values,source set 选择baidu。
这样就会在刚才的文件夹目录下面又有一个values文件夹,
然后将之前的main下面的values 的channels文件夹拷贝过来,然后修改
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="text">你好我是百度渠道文档</string>
<string name="versioncode">10002</string>
</resources>
这样baidu渠道的文件部分就好了,
同理进行360和豌豆荚的更新,
更新完以后,开始build我们的apk文件了。和正常的build 只有一点区别就是选择flavor哪里,我们是全部都选的
然后点击finish,知道生成我们需要的apk包:这里可以看到的是我们需要的不同的渠道的包都有了