1. 全局代理,必要条件
2. 环境准备(window)
Android studio 链接:http://www.android-studio.org/
Flutter 链接:https://flutterchina.club/get-started/install/
Rust 链接:https://www.rust-lang.org/zh-CN/tools/install
Java 链接:https://www.java.com/ES/download/
Ndk链接:https://developer.android.com/ndk/downloads
Msvc以及相应的英文语言包。请使用Microsoft C++ Build Tools
(https://visualstudio.microsoft.com/zh-hant/visual-cpp-build-tools/)进行下载。打开勾选如下选项
Vcpkg.链接:https://github.com/microsoft/vcpkg
3. 环境变量
ANDROID_NDK 值为ndk所在目录。
path环境变量中配置flutter,cargo,vcpkg,java。
4. 取下cashbox代码库。
https://github.com/scryinfo/cashbox
5. 以上条件准备完成后开始编译过程编译动态库部分。可以参考
https://github.com/scryinfo/cashbox/blob/master/bc/device_app_lib/readme.md
Windows具体步骤如下:
rustup target add aarch64-linux-android armv7-linux-androideabi
rustup toolchain install x86_64-pc-windows-msvc
rustup default msvc
注:如果此时找不到msvc,请使用rustup toolchain list查看全名,替换到命令中重新执行
vcpkg integrate install
vcpkg install sqlite3:x64-windows-static
vcpkg install sqlite3:x64-windows
Cd 到cashbox\bc\device_app_lib\script目录下运行
build_aarch64-linux-android.bat文件进行动态库的编译。
(1)若在此过程中出现 linker:“cc”not find 问题。请前往cargo所在目录下新建文件config,无后缀。
Config文件中的内容如下:
[target.aarch64-linux-android]
linker=”C:\\Users\\jayce\\Downloads\\android-ndk-r21b\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\aarch64-linux-android28-clang.cmd”
ar=”C:\\Users\\jayce\\Downloads\\android-ndk-r21b\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\aarch64-linux-android-ar.exe”
目录根据你的ndk所在目录进行相应调整。保存再次运行bat文件完成编译。
若在编译过程出现ed25519_dalek相关库的问题,请修改bc\下的cargo.lock文件。找到ed25519_dalek的依赖修改如下内容。
version = “1.0.0-pre.4”
source = “registry+https://github.com/rust-lang/crates.io-index”
checksum = “21a8a37f4e8b35af971e6db5e3897e7a6344caa3f92f6544f88125a1f5f0035a”
dependencies = [
“curve25519-dalek 2.1.0”,
“ed25519”,
“rand 0.7.3”,
“serde”,
“sha2 0.8.2”,
“zeroize 1.1.0”,
]
因7月17日版本改动,且1.0.0-pre.3与1.0.0-pre.4不兼容导致,将上述内容修改如下。
version = “1.0.0-pre.3”
source = “registry+https://github.com/rust-lang/crates.io-index”
checksum = “978710b352437433c97b2bff193f2fb1dfd58a093f863dd95e225a19baa599a2”
dependencies = [
“clear_on_drop”,
“curve25519-dalek 2.1.0”,
“rand 0.7.3”,
“sha2 0.8.2”,
]
修改上述bat文件。
编译apk,具体步骤如下
修改cashbox\app\lib\global_config\vendor_config.dart中的key和value.替换为你自己服务器的接口地址。各个接口详情介绍参见(未完成)。
由于apk签名问题,请修改cashbox\app\android\app\build.gradle的部分内容如下
修改后可生成未签名apk,若要重新签名请参见
https://github.com/scryinfo/cashbox/blob/master/app/README.md
运行flutter build apk即可,生成的apk目录如下:
cashbox\app\build\app\outputs\apk\release\app-release-unsigned.apk