• Stars
    star
    147
  • Rank 242,273 (Top 5 %)
  • Language
    Python
  • License
    MIT License
  • Created over 8 years ago
  • Updated almost 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

[不支持v2签名]Android多渠道输出脚本

Android多渠道输出脚本

这是博文另辟蹊径实现Android多渠道打包的一个简单实现,通过直接修改二进制AndroidManifest.xml实现渠道替换。

注意,只能修改编码为UTF-16的二进制AndroidManifest.xml。

替换二进制字符串核心代码来自:https://github.com/wanchouchou/playWithAXML

文件说明:

  1. signingapks.py: 签名多个apk
    ./signingapks.py <signingConfig> [--zipalignexe=path/to/zipalign] <apkfile>...
  2. repackage.py:输出渠道包
    ./repackage.py [options] <path/to/apk>
  3. 多渠道文件的格式:'#'开头为注释,不为空的字符串即为渠道名,如有文件channels
##############
#channel list#
##############
aaaa
bbb

ccc

使用方法:

  • 请先将AndroidManifest.xml渠道名改为占位符 "xxxxxxxxxxxxxxxx",如umeng渠道:
<meta-data android:name="UMENG_CHANNEL"  android:value="xxxxxxxxxxxxxxxx" />

示例:

  1. 输出当前目录source.apk的渠道包"aaa","bbb","ccc"到out目录并签名:
    ./repackage.py -c aaa,bbb,ccc -o out --keystore=android.key --keypass=android --storepass=android --keyalias=debug source.apk

  2. 输出当前目录source.apk的所有定义在文件channels中的渠道包,输出到out目录并签名
    ./repackage.py -f channels -o out --keystore=android.key --keypass=android --storepass=android --keyalias=debug source.apk

  3. 签名之前进行zipalign
    ./repackage.py -f channels -o out --zipalignexe=$ANDROID_SDK/build-tools/23.0.1/zipalign --keystore=android.key --keypass=android --storepass=android --keyalias=debug source.apk

  4. 与android gradle构建工具(1.3.0)一起使用: 在app的build.gradle中添加task如releaseAllChannels

afterEvaluate {
    android.applicationVariants.all { variant ->
        def output = variant.outputs.get(0).outputFile as File
        if ("release".equals(variant.name) && variant.signingConfig != null) {
            def task = tasks.findByName("zipalign${variant.name.capitalize()}")
            def zipalignExe = task?.zipAlignExe
            def repackageTask = tasks.create(name: "releaseAllChannels",
                    description: "Build all channel apks",
                    group: "build", type: Exec) {
                commandLine 'python', rootProject.file("repackage.py").absolutePath,
                        '-f', rootProject.file('channels').absolutePath,
                        '-o', builderOutput.absolutePath,
                        "--keystore=${variant.signingConfig.storeFile}",
                        "--keypass=${variant.signingConfig.keyPassword}",
                        "--storepass=${variant.signingConfig.storePassword}",
                        "--keyalias=${variant.signingConfig.keyAlias}",
                        "--zipalignexe=${zipalignExe}",
                        output.absolutePath
            }
            repackageTask.dependsOn variant.assemble
        }
}

执行task releaseAllChannels 即可以直接从源码编译并输出渠道包到build目录

More Repositories

1

ijkplayer

Android/iOS video player based on FFmpeg n3.4, with MediaCodec, VideoToolbox support.
C
32,047
star
2

flv.js

HTML5 FLV Player
JavaScript
22,695
star
3

DanmakuFlameMaster

Android开源弹幕引擎·烈焰弹幕使 ~
Java
9,490
star
4

ailab

Python
5,450
star
5

MagicaSakura

MagicaSakura 是 Android 多主题框架。~ is an Android multi theme library which supporting both daily colorful theme and night theme.
Java
3,544
star
6

boxing

Android multi-media selector based on MVP mode.
Java
3,193
star
7

overlord

Overlord是哔哩哔哩基于Go语言编写的memcache和redis&cluster的代理及集群管理功能,致力于提供自动化高可用的缓存服务解决方案。
Go
2,187
star
8

gengine

Go
1,867
star
9

discovery

A registry for resilient mid-tier load balancing and failover.
Go
1,764
star
10

vim-vide

Lightest vimrc, while strong enough. 最轻的vim配置,却足够强!
Vim Script
781
star
11

drawee-text-view

Simple drawee spannable text view based on Fresco
Java
764
star
12

join-us

大B站需要更多的小伙伴~ ( ゜- ゜)つロ 乾杯~
702
star
13

LastOrder-Dota2

Dota2 AI bot
Python
399
star
14

NativeBitmapFactory

DFM jni
C++
320
star
15

jni4android

JNI Generater for Android
C
305
star
16

BRouter

Kotlin
301
star
17

biliobs

C++
240
star
18

quiche

C++
191
star
19

UnityBVA

C#
189
star
20

kratos-demo

a project that use kratos
Go
188
star
21

bas

Bilibili Animation Script
HTML
187
star
22

libyuv

mirror of https://chromium.googlesource.com/external/libyuv/
C++
147
star
23

BurstLinker

🚀 A simple GIF encoder for Android.
C++
131
star
24

xpref

A SharedPreferences' wrapper that truly supported sharing data across multi-process
Kotlin
85
star
25

soundtouch

SoundTouch library compiled for ijkplayer/Android http://www.surina.net/soundtouch/sourcecode.html
C++
80
star
26

mahimahi

C++
76
star
27

muzei-bilibili

Muzei 插件,bilibili 壁纸源
Java
71
star
28

vlc-android-macbuild

Deprecated, official site is recommended http://git.videolan.org
Java
70
star
29

LastOrder

StarCraft AI bot
C++
61
star
30

vlc-ports-android

fork of git://git.videolan.org/vlc-ports/android.git
C++
56
star
31

bbip

Bilibili High Performance IP Resolve Library
C++
55
star
32

oresty

Lua
52
star
33

SMGo

Shang-Mi cipher library. Constant-time implementation of SM2 and SM4.
Go
40
star
34

bilibili.github.io

35
star
35

adaptation

too painful to work with PagerAdapter
Java
32
star
36

vlc

fork of git://git.videolan.org/vlc.git
C
30
star
37

openssl

mirror of https://www.openssl.org
C
29
star
38

twirp

twirp rpc
Go
26
star
39

ci-ijk-ffmpeg-ios

Prebuilt FFmpeg for ijkplayer on iOS
Shell
18
star
40

abtest

A layered experiment framework for C++/java/go
15
star
41

flvbind

A tools to combine multiple flv file to a single flv file.
C
13
star
42

uptool

JavaScript
12
star
43

gas-preprocessor

personal fork of git://git.libav.org/gas-preprocessor.git
Perl
12
star
44

nginx_quic_module

C
12
star
45

jmp_logpipe

A tool for jumper analyize log and send the command to remove UDP server for aduit. And this tool will denied for lszrz protocol to prevent a large log for storage.
C
10
star
46

nginx_quic_stack

C++
10
star
47

ci-ijk-ffmpeg-android

Continuous integration for ijkplayer on Android
8
star
48

vim

B站Vim会所
6
star
49

arrange-play

Java
5
star
50

bilibili_wtm

Python
1
star