这几天拿到了一款以前开发完成的项目,是音箱的项目,很有意思,然后就开始尝试看看。sdk打包是用shell脚本写的,对于没有接触过shell的菜鸡来说。跑个 打包的shell都很费劲,记录一下坑和解决办法。
忽略某个文件 在 app -> build 下 packagingOptions { exclude 'notice.html' }
shell脚本是以 .sh 结尾的文件。一般放在项目根目录下我们的打包shell 名字叫做 release.sh
网上搜了一下 在linux下 直接可以运行shell脚本,mac 是基于 Unix的 可以直接运行shell脚本
首先在 Android Studio的控制台 Terminal 敲一下ls 来看一下是否有要运行的脚本文件
然后直接 ./release.sh 执行脚本
嗯然后嗖一下
Permission denied :./release.sh
嗯 解决吧 两种方式
这种错误是因为权限问题,重新设置一下权限就可以运行
libs chmod 777 release.sh
或者可以
chmod +x ./release.sh 使脚本具有执行权限
再次运行 很意外
bash: ./release.sh: /bin/bash^M: bad interpreter: No such file or directory
继续解决
使用 vim命令操作,网上看了半天,我比较菜 不容易理解,还是自己总结一下 方便自己。。
首先 敲 vim release.sh
直接在控制台显示出文件的内容,然后查看文件格式
: set ff
最后一行会显示
fileformat=dos
正确的应该是这样
fileformat=unix
转格式
:set ff=unix
不要忘记保存
:wq
然后就可以了在运行看看,小崩溃
错误又来了
./release.sh: line 19: ./gradlew: Permission denied
./release.sh: line 11: ./gradlew: Permission denied
这是脚本里面用 gradlew打包呢,但是没有权限
大概说
原因在于gradlew文件没有可执行属性,可以使用命令
ls -l path/filename
来列举文件的已有属性。
之后,使用下列命令为文件添加可执行属性即可:
chmod +x gradlew
但是我
没办法继续解决吧
由于这个项目比较老,所以 ndk的东西 没有,我当时导入的时候比较懒直接手动把目录替换了
提前埋坑了。。。。 错误
No toolchains found in the NDK toolchains folder for ABI with prefix: mipsel-linux-android
解决办法
就是把当前少什么 就复制过来。
然后再敲。。。。。
./gradlew clear
bash: ./gradlew: Permission denied
这个错不是没有权限吗 给一下试试。
chmod +x gradlew
如果不行再试试 git update-index --chmod=+x gradlew
再试一下
./gradlew clear
env: bash\r: No such file or directory
嗯嗯 跟之前一样了。
vim解决它
vim gradlew
:set ff
:set ff=unix
:wq
再敲一下 可以了。
试试 命令打包把
终于动了,不容易啊。记录一下 这个坑真深。