????Andorid?????г??ж?????????????Android??????????????????????????????????????????????????????????????????????е????????????????????????????????????????????????????????????????????????
?????????????????????
??????????
??????AndroidManifest????????????????????????????????????????
???????????????????±?????????????±???????????AndroidManifest??????????????
???????????????ApkTool???н??????????AndroidManifest?????????????????????ApkTool???д?????????
????????????????????????????Ч????????????????Ч????????????????????????С??????????Ч???????Щ?????????????????????????????????????????????????????????????????????????????????????硣?????????к???????????ù??????????????????????????????????????????……
?????????Ч??????????????
?????????Ч????????????????????Android??ó???????????zip????????н?????????????????????????????????????????????????????????????????????????????????????????????????????裬???????????????Ч??
??????????????apk???
?????????????apk??????????????????META-INF??????????????

?????????META-INF?????????????????????????????á?????????????????????????????????????????????????
?????????????python?????apk????????????????
??????????python????????apk?????????????????????????mtchannel_??
????import zipfile zipped = zipfile.ZipFile(your_apk?? 'a'?? zipfile.ZIP_DEFLATED)  empty_channel_file = "META-INF/mtchannel_{channel}".format(channel=your_channel) zipped.write(your_empty_file?? empty_channel_file)
????????????????????????META-INFO????????????mtchannel_meituan????????

??????????????java?????????????????????????????
?????????y?????????????????????????????????????????????????????????????????????java???????????????????????????á?
????java???????????????????
public static String getChannel(Context context) {
ApplicationInfo appinfo = context.getApplicationInfo();
String sourceDir = appinfo.sourceDir;
String ret = "";
ZipFile zipfile = null;
try {
zipfile = new ZipFile(sourceDir);
Enumeration<?> entries = zipfile.entries();
while (entries.hasMoreElements()) {
ZipEntry entry = ((ZipEntry) entries.nextElement());
String entryName = entry.getName();
if (entryName.startsWith("mtchannel")) {
ret = entryName;
break;
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (zipfile != null) {
try {
zipfile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
String[] split = ret.split("_");
if (split != null && split.length >= 2) {
return ret.substring(split[0].length() + 1);
} else {
return "";
}
}