对于没有 Android 开发经验的我来讲这是值得记录一下的事情……

编译

装备工作

  • 安装 Arch Linux
  • 配置好梯子
  • 下载 CDDA 源码
  • 切换到 CDDA 源码里的 android 目录(以下均假设你已经在这个目录里)

安装 JDK

1
2
3
# 此处也可以使用 openjdk8
pacman -S jdk8
sudo archlinux-java set java-8-jdk

安装 Android SDK

我是直接用 Android Studio 的 SDK Manager 装的,注意 CDDA 要求的是 28 的 SDK,不要装成 30 的了。官方也提供了手动安装的方法(如下):

1
2
3
4
5
6
7
wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
# 将 sdk 放在 ~/.local/share/android 下能够被 gradle 自动识别,可以免去配置环境变量的步骤
unzip sdk-tools-linux-4333796.zip -d ~/.local/share/android
rm sdk-tools-linux-4333796.zip
~/.local/share/android/tools/bin/sdkmanager --update
~/.local/share/android/tools/bin/sdkmanager "tools" "platform-tools" "ndk-bundle"
~/.local/share/android/tools/bin/sdkmanager --licenses

为 gradle 配置代理

辣鸡 Java 不吃 HTTP(S)_PROXY,需要手动为 gradle 设置代理。这是卡了我很久的一步之一。

1
2
3
4
5
6
7
mkdir -p ~/.gradle
cat >> ~/.gradle/gradle.properties <<EOF
systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=12333
systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=12333
EOF

构建

辣鸡官方的示例不知道构建了多少个版本,我寻思着怎么编译这么慢。

1
2
3
# 你可以用 ./gradlew tasks 查看可用的任务
# 这个命令限定了至构建实验版的 64 位 release 版本,并且使用四线程
./gradlew compileExperimentalReleaseSources -Pj=4 -Pabi_arm_32=false

生成证书

你需要给你 apk 签个名才能装到手机上

1
2
3
4
5
keytool -genkey -v -keystore cdda.keystore -alias gundam_wing -keyalg RSA -validity 20000
keytool -importkeystore -srckeystore cdda.keystore -destkeystore cdda.p12 -srcstoretype JKS -deststoretype PKCS12
openssl pkcs12 -in cdda.p12 -nodes -out cdda.rsa.pem
sed -n '/BEGIN PRIVATE KEY/,/END PRIVATE KEY/p' cdda.rsa.pem > cdda.private.rsa.pem
sed -n '/BEGIN CERTIFICATE/,/END CERTIFICATE/p' cdda.rsa.pem > cdda.x509.pem

签名

1
2
3
# APK 路径就自己改算了……
APK_PATH=./app/build/outputs/apk/experimental/release/cataclysmdda-64b8950ada-experimental-arm64-v8a-release-unsigned.apk
~/.local/share/android/build-tools/28.0.3/apksigner sign --key cdda.pk8 --cert cdda.x509.pem $APK_PATH

没了

完成了,直接把 $APK_PATH 指向的文件复制出来就可以安装了。

重新打包

如果只是单纯地塞 MOD 进去的话,没必要手动编译一遍。只需要重新打包即可。步骤非常简单:

解压 apk

解压,就是字面意思。apk 本质是 zip,随便挑个工具解压就行。

修改

assets 里存放着游戏的资源文件,随便塞就行了。

重新压缩

也是字面意思,直接压缩(注意不要把父文件夹也压进去了),完事儿以后改后缀名为 .apk

签名

参照前面的过程,签名完就能愉快地安装了~