Bash脚本编译并将aar lib复制到app

时间:2016-02-23 07:02:38

标签: android bash shell

我之前从未写过一个bash脚本,我希望你们能帮助我写一个来做以下事情。

我有一个Android Lib,需要将其复制到Android应用中。我目前仍在研究Lib并解决一些错误,因此我需要在Lib中进行相当多的编辑,这样做变得非常繁琐,因为我需要编译,然后经常重命名和复制lib。 / p>

脚本需要遵循的步骤:

  1. 删除文件(如果存在)~/home/StudioProjects/tsslib_v2/tsslib/build/outputs/aar

  2. 运行~/home/StudioProjects/tsslib_v2/tsslib/build/outputs/aar/./gradlew assembleRelease

  3. 将文件重命名为tsslib.aar

  4. 转到目录~/home/StudioProjects/fitment_manager/tsslib/

  5. 删除前一目录中的文件tsslib.aar

  6. 将新创建的tsslib/home/StudioProjects/tsslib_v2/tsslib/build/outputs/aar/复制到/home/StudioProjects/fitment_manager/tsslib/

  7. 我以前从未这样做过,任何帮助都会受到赞赏!

    谢谢!

2 个答案:

答案 0 :(得分:0)

以下是您的问题的解决方案,但不是您的问题的答案,如果您仍然希望bash脚本随时可以询问,我会编辑添加它。

解决您问题的最简单方法就是使用Android Studio的模块功能,因为libapp是两个Android Studio项目(也是模块),您只需要参考lib moduleapp 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"

感谢您的建议!