Giter Club home page Giter Club logo

android-archives-watchdog's Issues

Enhancement : improved troubleshooting with verbose executions

It would be nice having a --debug flag that allows this automation to output every meaningful information related to the processing, especially everything related to analyzing Android archives, eg

$> aaw compare -a my.apk -b my.product.android.toml --verbose

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Repository problems

These problems occurred while renovating this repository. View logs.

  • WARN: File contents are invalid JSON but parse using JSON5. Support for this will be removed in a future release so please change to a support .json5 file name or ensure correct JSON syntax.

This repository currently has no open or pending branches.

Detected dependencies

github-actions
.github/workflows/ci.yaml
  • actions/checkout v4.1.6
  • actions/checkout v4.1.6
  • actions/setup-java v4.2.1
  • gradle/actions v3.3.2
  • gradle/actions v3.3.2
  • actions/upload-artifact v4.3.3
  • actions/checkout v4.1.6
  • actions/setup-java v4.2.1
  • actions/download-artifact v4.1.7
  • actions/checkout v4.1.6
  • actions/upload-artifact v4.3.3
  • ubuntu 22.04
  • ubuntu 22.04
  • ubuntu 22.04
  • ubuntu 22.04
.github/workflows/publish.yaml
  • actions/checkout v4.1.6
  • actions/setup-java v4.2.1
  • softprops/action-gh-release v2.0.5
  • ubuntu 22.04
gradle
gradle.properties
settings.gradle.kts
  • org.gradle.toolchains.foojay-resolver-convention 0.8.0
  • com.gradle.develocity 3.17.4
build.gradle.kts
gradle/libs.versions.toml
  • com.github.ajalt.clikt:clikt 4.4.0
  • com.github.ajalt.mordant:mordant 2.6.0
  • io.arrow-kt:arrow-core 1.2.4
  • com.android.tools:sdklib 31.4.0
  • com.android.tools.apkparser:apkanalyzer 31.4.0
  • com.android.tools.apkparser:binary-resources 31.4.0
  • com.android.tools:repository 31.4.0
  • com.android.tools:sdk-common 31.4.0
  • com.android.tools:common 31.4.0
  • com.android.tools.build:bundletool 1.16.0
  • org.jetbrains.kotlinx:kotlinx-serialization-core 1.6.3
  • org.jetbrains.kotlinx:kotlinx-serialization-core-jvm 1.6.3
  • org.jetbrains.kotlinx:kotlinx-serialization-json 1.6.3
  • net.peanuuutz.tomlkt:tomlkt 0.3.7
  • junit:junit 4.13.2
  • com.google.guava:guava 33.2.0-jre
  • com.google.truth:truth 1.4.2
  • org.jetbrains.kotlin.jvm 1.9.24
  • org.jetbrains.kotlin.plugin.serialization 1.9.24
  • io.gitlab.arturbosch.detekt 1.23.6
  • org.jlleitschuh.gradle.ktlint 12.1.1
  • com.github.johnrengelman.shadow 8.1.1
  • com.adarshr.test-logger 4.0.0

  • Check this box to trigger a request for Renovate to run again on this repository

Feature : support Android AppBundles

Right now, this tool only supports artifacts packaged in the apk format. In order to support the aab format we can take advantage of bundletool, either as a standalone binary or as dependency.

Feature : evaluate what is inside a releasable artifact

Provide CLI to extract from an .apk or an .aab, so we can list

  • Android permissions used by the app
  • Java packages composing the app
  • Minimum and target Android SDK
  • Etc
$> arw overview --target=path/to/myapp.aab

We'd like to also generate a configuration file arw.toml as long as we can have information about what's inside a releasable:

$> arw generate --target=path/to/myapp.aab

Project basics

  • Simple Gradle project for CLI app
  • Must use the latest version of Gradle
  • Must use the latest version of Kotlin
  • Must use Gradle Version Catalogs
  • Must use ktlint + detekt with standard setup
  • Must have a simple unit test (junit4 + truth)
  • Must have a simple GHA Workflow (with gradle-build-action)
  • Must have configuration for Renovate
  • Must have configuration for jEnv and/or JVM toolchains

Enhancement : support package patterns on baselines

Rather than listing and dumping everything we find inside an artifact, we'd like to trust a few package patterns in order to simplify the baseline with sensitive components to keep on track.

An example of such an extension:

applicationId = "com.my.product.android"
trustedPackages = [
  "com.android.*",
  "com.my.company.*"
]

# More configuration ....

Enhancement : provide custom signing key when processing AppBundles

Right now, the approach of converting .aab to a universal .apk with bundletool has a few issues related to apk signing, which generates non-trivial CLI output as part of the execution.

For instance, the default debug.keystore may not be available in the CI environment at runtime, which generates:

WARNING: The APKs won't be signed and thus not installable unless you also pass a keystore via the flag --ks. 
See the command help for more information.

In addition, when available bundletool will also pollute the output with a log:

INFO: The APKs will be signed with the debug keystore found at '<path/to/home>/.android/debug.keystore'.

Eventually both issues can be tackled by suppling a custom signing key to bundletool.

Feature : compare a releasable artifact with a baseline

We want a CLI interface like

$> arw --apk path/to/some/app.apk --baseline path/to/arw.toml

which will

  • evaluate information from a releasable artifact (as per #2)
  • compare it with the baseline defined by a .toml file
  • point out critical differences (like new permissions requests or new packages being added)

Open questions

  • what should we do when we detect changes that actually improve on Security (eg, the app now requests less Android permissions?)

Enhancement: additional output formats when comparing archives with baselines

Right now, compare will output differences between archives and baselines only to stdout and plain text.

However, it'd useful to have different (structured) formats - eg json- so the output can be post-processed afterward. That would enable an enriched PR decoration for example. On Github Actions:

aaw compare -a app/build/output/release/my.apk -b my.org.product.toml --json > comparison.json

# Convert with tools like https://github.com/haltcase/tablemark-cli or in bash with jq
markdown=$(convert_to_markdown comparison.json) 

gh pr comment ${{ github.event.pull_request.number }} --body "$markdown" --edit-last

In addition, we could output markdown directly.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.