我之前从未写过一个bash脚本,我希望你们能帮助我写一个来做以下事情。
我有一个Android Lib
,需要将其复制到Android应用中。我目前仍在研究Lib并解决一些错误,因此我需要在Lib中进行相当多的编辑,这样做变得非常繁琐,因为我需要编译,然后经常重命名和复制lib。 / p>
脚本需要遵循的步骤:
删除文件(如果存在)~/home/StudioProjects/tsslib_v2/tsslib/build/outputs/aar
运行~/home/StudioProjects/tsslib_v2/tsslib/build/outputs/aar/./gradlew assembleRelease
将文件重命名为tsslib.aar
转到目录~/home/StudioProjects/fitment_manager/tsslib/
删除前一目录中的文件tsslib.aar
将新创建的tsslib
从/home/StudioProjects/tsslib_v2/tsslib/build/outputs/aar/
复制到/home/StudioProjects/fitment_manager/tsslib/
我以前从未这样做过,任何帮助都会受到赞赏!
谢谢!
答案 0 :(得分:0)
以下是您的问题的解决方案,但不是您的问题的答案,如果您仍然希望bash脚本随时可以询问,我会编辑添加它。
解决您问题的最简单方法就是使用Android Studio的模块功能,因为lib
和app
是两个Android Studio项目(也是模块),您只需要参考lib module
中app project
app module
并将其用作lib module
的依赖项:
通过将app project
添加到应用项目settings.gradle
文件
include ':lib-module-name'
project(':lib-module-name').projectDir = new File(settingsDir, 'path-to-your-lib-project/lib-module-name')
//With the paths you gave :
include ':tsslib'
project(':tsslib').projectDir = new File(settingsDir, '../tsslib_v2/tsslib')
app
将项目与gradle文件同步,lib应出现在项目资源管理器中。
在您的应用build.gradle
compile project(':lib-module-name')
//With the paths you gave :
compile project(':tsslib')
模块的依赖项
progressDialog = new ProgressDialog(this);
//-------------------------------------
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
progressDialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.custom_progress_background, getTheme()));
}
else{
progressDialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.custom_progress_background));
}
//-------------------------------------
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setMessage(getString(R.string.MSG_SEARCH_DOING));
progressDialog.setCancelable(false);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, getString(R.string.cancel_msg), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
isStop = true;
isCancel = true;
showWaitingDialog();
}
});
progressDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
}
});
progressDialog.show();
因此,每次编译应用程序时,它都会编译lib。它还允许您使用单个打开的Android Studio项目开发lib,并将文件保留在原来的位置。
答案 1 :(得分:0)
很抱歉让每个人的时间都比预期更容易。我有一些在Windows中编写批处理文件的知识,所以采取了类似的方法,它对我有用!
这是脚本:
#!/bin/bash
#This script is created to remove manual compile and copy of the TSSLib to the Android App
#Delete file tsslib.aar in folder/home/StudioProjects/tsslib_v2/tsslib/build/outputs/aar
rm -f /home/StudioProjects/tsslib_v2/tsslib/build/outputs/aar/tsslib.aar
#Delete the file tsslib.aar in the folder /home/StudioProjects/fitment_manager/tsslib/
rm -f /home/StudioProjects/fitment_manager/tsslib/tsslib.aar
#Change directory to /home/StudioProjects/tsslib_v2/
#Run ./gradlew assembleRelease which creates the file tsslib-release.aar
cd /home/StudioProjects/tsslib_v2/
./gradlew assembleRelease
#Rename and move the file to tsslib.aar in /home/StudioProjects/tsslib_v2/
mv /home/StudioProjects/tsslib_v2/tsslib/build/outputs/aar/tsslib-release.aar /home/StudioProjects/fitment_manager/tsslib/tsslib.aar
#output message that script has completed
echo "Prepare has been completed with 0 errors"
感谢您的建议!