我想在.bashrc Ubuntu 18.04上创建别名以构建和安装APK,但是在这样的终端中遇到问题
W/asset (22684): Asset path ./app/build/outputs/apk/debug/app-debug.apk is neither a directory nor file (type=1).
ERROR: dump failed because assets could not be loaded
这是我在.bashrc文件中写的别名
## install apk to device
alias apkinstall="adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X install -r $1"
## build and install apk
alias buildAndInstallApk="./gradlew assembleDebug && apkinstall ./app/build/outputs/apk/debug/app-debug.apk"
## launch apk
alias launchDebugApk="adb shell monkey -p `aapt dump badging ./app/build/outputs/apk/debug/app-debug.apk | grep -e 'package: name' | cut -d \' -f 2` 1"
## build+install+launch apk
alias buildInstallLaunchDebugApk="buildAndInstallApk && launchDebugApk"
似乎每次打开终端时都会显示这些错误,因为我没有从这些路径所属的android项目目录中打开终端。
有什么办法解决这个问题吗?我们可以检查.bashrc中是否存在这些路径?
非常感谢!
答案 0 :(得分:1)
您可以轻松地检查路径是否作为别名或函数定义的一部分存在。
为方便起见,我已将您的别名转换为shell函数。
## build and install apk
buildAndInstallApk () {
local p=app/build/outputs/apk/debug/app-debug.apk
if [ -d "$p" ]; then
./gradlew assembleDebug &&
apkinstall "$p"
else
echo "No $p here" >&2
fi
}
顺便说一句,您的launchDebugApk
定义包含一个反引号表达式,该表达式在定义别名时(而不是在您要使用别名时)进行求值。请在别名周围使用单引号,或将其也转换为函数(并可能升级到$(current millenium syntax)
而不是`long since obsolescent backticks`
);但这仍然不能解释为什么会出错。
从广义上讲,我基本上总是建议对别名使用函数。语法更加通用,可以避免各种不愉快的事情。