2017年9月19日 星期二

[Android] 如何修改預設output 的APK 名稱

編譯專案後會產生output apk,預設名稱會是 "app-release.apk"
但在開發專案的時後常會需要根據 build type 不同有對應的名稱,例如 xxx-release.apk
當然可以每次build出apk後,再去修改名稱,當個勤勞的工程師
可是一天我們會build上好幾上次的apk,每次都要做更改,光想就覺得累
我們可以利用修改Gradle 幫我們把這個行為自動化

在這邊用比較複雜的名稱格式來當範例
將APK名稱格式修改成 myProject_dev_debug_1.3.6_131016_1047.apk.
專案名稱_Flavors_buildType_versionName_ddMMyy_HHmm
這些是我們會用到的資訊

  • flavor
  • buildType
  • version
  • date

app/build.gradle

android {

    ...

    buildTypes {
        release {
            minifyEnabled true
            ...
        }
        debug {
            minifyEnabled false
        }
    }

    productFlavors {
        prod {
            applicationId "com.feraguiba.myproject"
            versionCode 3
            versionName "1.2.0"
        }
        dev {
            applicationId "com.feraguiba.myproject.dev"
            versionCode 15
            versionName "1.3.6"
        }
    }

    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def project = "myProject"
            def SEP = "_"
            def flavor = variant.productFlavors[0].name
            def buildType = variant.variantData.variantConfiguration.buildType.name
            def version = variant.versionName
            def date = new Date();
            def formattedDate = date.format('ddMMyy_HHmm')

            def newApkName = project + SEP + flavor + SEP + buildType + SEP + version + SEP + formattedDate + ".apk"

            output.outputFile = new File(output.outputFile.parent, newApkName)
        }
    }
}
reference :
https://stackoverflow.com/questions/28249036/app-release-apk-how-to-change-this-default-generated-apk-name/30332234#30332234

[Android] 用Command Line 執行APK 及 如何取得Package及Launch Activity name

在專案開發的時後,有時後會用到第三方的apk
但是沒辦法在裝置上直接執行它,因為apk被隱藏起來了
所以不會出現在Launch app的地方
那如果要Launch 隱藏app要怎麼做呢? 透過Command Line 執行apk


如何用Command Line 執行apk


指令結構 : adb shell am start -n package name/full activity name
$adb shell am start -n com.test.drm/com.test.drm.drmActivity


如何Command Line取得 Package Name 及 Launch Activity Name


  • 取得裝置內已安裝的Package Name
  • 指令結構 : adb shell pm list packages -f

    • -f : 一併列出apk檔案的存放位置
    • -s : 只列出系統套件(system package)
    • -3 : 只列出第三方套件 (3rd-party package)
    • FILTER : 只列出FILTER的套件名稱
    $ adb shell pm list packages -f

  • 取得 apk Launch Activity Name

    • 先用 adb shell pm list packages -f 取得apk 檔案的存放位置
    • 再執行 adb pull /apk檔案路徑/xxx.apk
    • 開啟Android Studio -> Build/Analyze APK...
    • 就可以查看AndroidManifest.xml