接入ysdk,dex分包shell脚本

#!/bin/bash
# 应用包 build apk script
# file name build-tencent.sh

# 使用说明
# 1.把全部打包资料都准备好放到一个目录里
# 2.把build.sh复制到这个目录里
# 3.用文本编辑器打开build.sh配置里面的信息
# 4.在当前目录下执行脚本

# ---------配置信息 BEGIN----------

# ---打包资源配置---
# 渠道名称
channelName="tencent_ysdk"


#当前目录
BASEDIR=$(dirname $0)"/"

# 游戏APK名字,注意不带后缀
gameApk="4252"

appName="风流霸业"


#填写versionCode要修改的值
versioncode="5"


#修改android api版本,看渠道是否要求上传api26以上,否则就填22即可
targetVersion="26"

baksmali="/Users/DexLin/Desktop/创思游戏/sdk/手游h5/纵剑仙界应用宝打包资料/ysdk_smail/baksmali-2.0.3.jar"
smali="/Users/DexLin/Desktop/创思游戏/sdk/手游h5/纵剑仙界应用宝打包资料/ysdk_smail/smali-2.0.3.jar"


# 游戏母包jar的名字
masterLib="csgame_sdk_h5_2.0.jar"

# 游戏母包渠道jar的名字
masterChannelLib="csgame_h5_ysdk_1.6.3.jar"

# android jar
androidSupportLib="android-support-v4.jar"

# 渠道必须的jar
channelLib1="YSDK_Android_1.6.3.jar"
#channelLib2="GDTActionSDK.min.1.6.3.jar"
#channelLib3="miit_mdid_sdk_v1.0.13.jar"


# buildconfig的jar
buildConfigLib="build-config.jar"

# dex2jar.sh 脚本路径
dex2jarPath="/Users/DexLin/Desktop/创思游戏/doc/dex2jar-2.0"

# ---签名信息---
keystoreFile="test.jks"
keyName="test"
keyPassword="123456"


# ---生成目录信息---
# 解压游戏jar的目录
gameJarDir="gameJar"

sdkJarDir1="sdkJarDir1"
# 解压的sdk jar目录
sdkJarDir="sdkJar"
# 最终打包生成的发布目录
apkReleaseDir="release"

# ---APK命名信息---
# APK最终包的名字
apkReleaseName=${gameApk}-${channelName}-signed.apk
# APK未签名的名字
apkUnsignName=${gameApk}-unsigned.apk

# ---需要复制的资源文件名,一般不需要改---
# jni文件
jniLibs="jniLibs"
# 资源文件
res="res"
# assets文件
assets="assets"

# ---------配置信息 END----------

# ---------FIELD BEGIN-----------

# ---------FIELD END-----------

# ---------METHOD BEGIN------------

# 创建目录
createDir(){
    if [[ ! -d $1 ]]; then
        mkdir $1
    fi
}

# 反编译APK
decompileApk(){
    apktool d -s -f $1
}

# 生成APK
buildApk(){
    apktool b $1
}

# 顾名思义
dex2jar(){
    ${dex2jarPath}/d2j-dex2jar.sh --force $1
}

# 解压jar
unzipJar(){
    jar xvf $1
}

#dex2smail $1输出smail文件夹 $2 dex文件
dex2smail(){
   
  java -jar $baksmali -o $1 $2
}

#smail2dex $1 生成dex文件  $2 smail文件所在文件夹
smail2dex(){

  java -jar $smali -o $1 $2

}


#$1 jar name,$2 目录路径
createJar(){
    jar cvf $1 $2
}

# jar合并成dex
createDex(){ 
    echo $1
    dx --dex --output=classes.dex $1
}

# 签名
apkSigner(){
    jarsigner -verbose -keystore $1 -storepass $3 -signedjar $4 $5 $2 -digestalg SHA1 -sigalg MD5withRSA
}

# 安装
installApk(){
    adb install -r $1
}

# ---------METHOD END------------


# ----------CMD-----------

decompileApk "./${gameApk}.apk"

cp ./${gameApk}/apktool.yml ./
#dex2jar "./${gameApk}/classes.dex"

# ---解压Jar BEGIN---

createDir "$gameJarDir"

cd $gameJarDir

createDir "out1"

dex2smail  "./out" "../${gameApk}/classes.dex"


cd ..

# ---解压Jar END---

# ---合拼Jar生成dex文件 BEGIN---

echo "build classes.dex"

createDex "$masterLib $masterChannelLib $channelLib1 $channelLib2 $channelLib3"

# ---合拼Jar生成dex文件 END---

# ---复制资料到游戏反编译目录 BEGIN---

dex2smail "./$gameJarDir/out" "./classes.dex"

mv -f ./$gameJarDir/out/android ./$gameJarDir/out1
mv -f ./$gameJarDir/out/com ./$gameJarDir/out1
mv -f ./$gameJarDir/out/org ./$gameJarDir/out1

smail2dex "./$gameJarDir/classes2.dex" "./$gameJarDir/out"
smail2dex "./$gameJarDir/classes.dex" "./$gameJarDir/out1"


cp -r -f ./$gameJarDir/classes.dex ./${gameApk}
cp -r -f ./$gameJarDir/classes2.dex ./${gameApk}


# 复制assets
cp -r -f ./${assets}/* ./${gameApk}/assets


createDir "$sdkJarDir1"
cd $sdkJarDir1
unzipJar "../$channelLib1"
cp -r -f ./assets/* ../${gameApk}/assets
cd ..

cd $gameApk

createDir "./lib"

cd ..

# # 复制jniLinbs
 cp -r -f ./${jniLibs}/* ./${gameApk}/lib

# # 复制res
 cp -r -f ./${res}/* ./${gameApk}/res

 echo "info:开始合并清单文件"
#合并清单文件
java  -jar mergeManifest_1.0.3.jar ./AndroidManifestMergeConfig/AndroidManifest.xml ./${gameApk}/AndroidManifest.xml
java  -jar update_appname_1.0.0.jar ./${gameApk}/res/values/strings.xml ./${gameApk}/res/values/strings.xml ${appName} "app_name"
java  -jar modify_versionInfo_1.0.0.jar ./apktool.yml ./${gameApk}/apktool.yml $versioncode $targetVersion


#复制清单文件到根目录以便查看
cp -r -f ./${gameApk}/AndroidManifest.xml .
echo "info:合并清单文件完毕!"

# ---复制资料到游戏反编译目录 END---

buildApk "./$gameApk"

cp ./$gameApk/dist/${gameApk}.apk ./$apkUnsignName

apkSigner "$keystoreFile" "$keyName" "$keyPassword" "$apkReleaseName" "$apkUnsignName"

createDir "$apkReleaseDir"

mv -f ./$apkReleaseName ./$apkReleaseDir

echo "build success"

echo "start install apk. waiting..."

installApk "./${apkReleaseDir}/${apkReleaseName}"

echo "删除没用文件"
rm -rf ./${gameApk}
rm -f ./$apkUnsignName
rm -rf ./gameJar
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值