Skip to content

Commit

Permalink
apkeditor{,-bin}: init at 1.4.1
Browse files Browse the repository at this point in the history
  • Loading branch information
UlyssesZh committed Oct 25, 2024
1 parent 5d82464 commit 07a444a
Show file tree
Hide file tree
Showing 5 changed files with 329 additions and 0 deletions.
37 changes: 37 additions & 0 deletions pkgs/by-name/ap/apkeditor-bin/package.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
lib,
buildEnv,
fetchurl,
jre,
writeShellScriptBin,
}:

let
pname = "apkeditor-bin";
version = "1.4.1";

jar = fetchurl {
url = "https://github.com/REAndroid/APKEditor/releases/download/V${version}/APKEditor-${version}.jar";
hash = "sha256-SpiuanVSZDV2A/GQa5LmLnV9WSKQFOMzlfTgP/AZ/ag=";
};
in
buildEnv {
name = "${pname}-${version}";

paths = [
(writeShellScriptBin "APKEditor" ''
exec ${lib.getExe jre} -jar ${jar} "$@"
'')
];

meta = {
description = "Powerful android apk resources editor";
maintainers = with lib.maintainers; [ ulysseszhan ];
license = lib.licenses.asl20;
platforms = lib.platforms.all;
homepage = "https://github.com/REAndroid/APKEditor";
mainProgram = "APKEditor";
sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
};

}
17 changes: 17 additions & 0 deletions pkgs/by-name/ap/apkeditor/deps-arsclib.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"!comment": "This is a nixpkgs Gradle dependency lockfile. For more details, refer to the Gradle section in the nixpkgs manual.",
"!version": 1,
"https://repo.maven.apache.org/maven2": {
"junit#junit/4.12": {
"jar": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=",
"pom": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ="
},
"org/hamcrest#hamcrest-core/1.3": {
"jar": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=",
"pom": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM="
},
"org/hamcrest#hamcrest-parent/1.3": {
"pom": "sha256-bVNflO+2Y722gsnyelAzU5RogAlkK6epZ3UEvBvkEps="
}
}
}
17 changes: 17 additions & 0 deletions pkgs/by-name/ap/apkeditor/deps-jcommand.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"!comment": "This is a nixpkgs Gradle dependency lockfile. For more details, refer to the Gradle section in the nixpkgs manual.",
"!version": 1,
"https://repo.maven.apache.org/maven2": {
"junit#junit/4.12": {
"jar": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=",
"pom": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ="
},
"org/hamcrest#hamcrest-core/1.3": {
"jar": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=",
"pom": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM="
},
"org/hamcrest#hamcrest-parent/1.3": {
"pom": "sha256-bVNflO+2Y722gsnyelAzU5RogAlkK6epZ3UEvBvkEps="
}
}
}
86 changes: 86 additions & 0 deletions pkgs/by-name/ap/apkeditor/deps-smali.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
{
"!comment": "This is a nixpkgs Gradle dependency lockfile. For more details, refer to the Gradle section in the nixpkgs manual.",
"!version": 1,
"https://repo.maven.apache.org/maven2": {
"antlr#antlr/2.7.7": {
"jar": "sha256-iPvaS5Ellrn1bo4S5YDMlUus+1F3bs/d0+GPwc9W3Ew=",
"pom": "sha256-EA95O6J/i05CBO20YXHr825U4PlM/AJSf+oHoLsfzrc="
},
"com/beust#jcommander/1.48": {
"jar": "sha256-pzE/z94HCTDkDsee3zxZSM805PDSXLOgn5lj2L3YQRM=",
"pom": "sha256-EH4aAn6KszS4H7KJYGDba68y430uME5glCNtPn6ymQM="
},
"de/jflex#jflex-parent/1.6.1": {
"pom": "sha256-zgOPd5P3f7eO+hFMMyjlx37OF9MzRfB7TsCm4U4WB1k="
},
"de/jflex#jflex/1.6.1": {
"jar": "sha256-EsuEWC3TPm3O2yTaSwwf6AdfxjkWx8xt8UCHDPHpKbY=",
"pom": "sha256-MXynvUMHgykKCEHUwxEvcbyY1aR+6cyIaZXEFChcnes="
},
"junit#junit/4.12": {
"jar": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=",
"pom": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ="
},
"org/antlr#ST4/4.0.8": {
"jar": "sha256-WMqrxAyfdLC1mT/YaOD2SlDAdZCU5qJRqq+tmO38ejs=",
"pom": "sha256-PAiQ3scRdOs7o9QEyp40GQH/awQhgIsAcTsNuxMGwXw="
},
"org/antlr#antlr-master/3.5.2": {
"pom": "sha256-QtkaUx6lEA6wm1QaoALDuQjo8oK9c7bi9S83HvEzG9Y="
},
"org/antlr#antlr-runtime/3.5.2": {
"jar": "sha256-zj/I7LEPOemjzdy7LONQ0nLZzT0LHhjm/nPDuTichzQ=",
"pom": "sha256-RqnCIAu4sSvXEkqnpQl/9JCZkIMpyFGgTLIFFCCqfyU="
},
"org/antlr#antlr/3.5.2": {
"jar": "sha256-WsNsKs+woPPTfa/iC1tXDyZD4tAAxkjURQPCc4vmQ98=",
"pom": "sha256-Bl5egGYv64WHldPAH3cUJHvdMZRZcF7hOxpLGWj6IuQ="
},
"org/antlr#stringtemplate/3.2.1": {
"jar": "sha256-9mznLpZeUwHLDwIOVNK6atdv65Gzy/ww278AwGpt9tc=",
"pom": "sha256-tF6CZVqlpI8z0TpD5DRUJrFWM1s14kta6hLbWCPBahY="
},
"org/apache/ant#ant-launcher/1.7.0": {
"jar": "sha256-crPQPg19hqVlE+w43UzWq+PaZiAYm+IiqyVTUstuuko=",
"pom": "sha256-0p0myykG6cOYOBvUhz7KuwTWMO9hNDXssUmoWirvyvQ="
},
"org/apache/ant#ant-parent/1.7.0": {
"pom": "sha256-GlLYNxpsvG4F7b8CZGcXEX3SNERZvulnAU8EH9zzCJM="
},
"org/apache/ant#ant/1.7.0": {
"jar": "sha256-kvcjB+dEDx41LJFvJDjSu6s//Sz3MMcTFhF60Eq63qg=",
"pom": "sha256-fAIXQD9XogDLgNSJiSzgTqdi8qEzq+PdOEcGUUNM+vI="
},
"org/hamcrest#hamcrest-core/1.3": {
"jar": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=",
"pom": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM="
},
"org/hamcrest#hamcrest-parent/1.3": {
"pom": "sha256-bVNflO+2Y722gsnyelAzU5RogAlkK6epZ3UEvBvkEps="
},
"org/mockito#mockito-core/1.10.19": {
"jar": "sha256-1YMe5PcQVYAIIaNKMFHPHtWzcC8pX/69UPZftdgacbg=",
"pom": "sha256-cVJo2AC6zQcjbuHm9EB2UOYc+XlzO8Ji5N4V+9E7kg0="
},
"org/objenesis#objenesis-parent/2.1": {
"pom": "sha256-NDsaMJNBDj+ybGaZhCOrOJw6dEHNGohZvTJ90VtHmqQ="
},
"org/objenesis#objenesis/2.1": {
"jar": "sha256-x0MwzGuAbIBP0350SHtP5dfCdQxeFfvG76E73uG974A=",
"pom": "sha256-QFTxhhN+O4SafCPJ6EbNV9ii/jLBfUxivUIFEtdMPT8="
},
"org/sonatype/oss#oss-parent/3": {
"pom": "sha256-DCeIkmfAlGJEYRaZcJPGcVzMAMKzqVTmZDRDDY9Nrt4="
},
"org/sonatype/oss#oss-parent/7": {
"pom": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
},
"org/sonatype/oss#oss-parent/9": {
"pom": "sha256-+0AmX5glSCEv+C42LllzKyGH7G8NgBgohcFO8fmCgno="
},
"org/xbib/gradle/plugin#gradle-plugin-jflex/1.1.0": {
"jar": "sha256-nfON5Bsazk30I3o2pAw8k0qzVWBomj9b6DiwfQ3jn3g=",
"pom": "sha256-Ikxjj1TL8LCYxDw6GylqmsF/dfYC9m65szjnkqr6C5g="
}
}
}
172 changes: 172 additions & 0 deletions pkgs/by-name/ap/apkeditor/package.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
{
lib,
stdenv,
fetchFromGitHub,

jre,
gradle_6,
makeWrapper,
}:

let
gradle = gradle_6;
REAndroidLibrary =
args:
let
inherit (args) pname version projectName;
outJar = "share/${projectName}/${projectName}.jar";
self = stdenv.mkDerivation (
{
__darwinAllowLocalNetworking = true;

buildInputs = [ jre ];
nativeBuildInputs = [ gradle ];

gradleFlags = [ "-Dfile.encoding=utf-8" ];
gradleBuildTask = "jar";
doCheck = true;

inherit outJar;
installPhase = ''
runHook preInstall
install -Dm644 build/libs/*.jar $out/${outJar}
runHook postInstall
'';
}
// args
// {
meta = {
sourceProvenance = with lib.sourceTypes; [
fromSource
binaryBytecode # mitm cache
];
} // args.meta;
}
);
in
self;

arsclib = REAndroidLibrary {
pname = "arsclib";
version = "1.3.5-unstable-2024-10-21"; # 1.3.5 is not new enough for APKEditor
projectName = "ARSCLib";

src = fetchFromGitHub {
owner = "REAndroid";
repo = "ARSCLib";
rev = "ed6ccf00e56d7cce13e8648ad46a2678a6093248";
hash = "sha256-jzd7xkc4O+P9hlGsFGGl2P3pqVvV5+mDyKTRUuGfFSA=";
};

mitmCache = gradle.fetchDeps {
pkg = arsclib;
data = ./deps-arsclib.json;
};

meta.license = lib.licenses.asl20;
};

smali = REAndroidLibrary {
pname = "smali";
version = "2024-10-15";
projectName = "smali";

src = fetchFromGitHub {
owner = "REAndroid";
repo = "smali-lib";
rev = "c781eafb31f526abce9fdf406ce2c925fec20d28";
hash = "sha256-6tkvikgWMUcKwzsgbfpxlB6NZBAlZtTE34M3qPQw7Y4=";
};

mitmCache = gradle.fetchDeps {
pkg = smali;
data = ./deps-smali.json;
};
gradleBuildTask = "build";

installPhase = ''
runHook preInstall
install -Dm644 smali/build/libs/*-fat.jar $out/${smali.outJar}
runHook postInstall
'';

# https://github.com/JesusFreke/smali/blob/master/NOTICE
meta.license = with lib.licenses; [
asl20
free
];
};

jcommand = REAndroidLibrary {
pname = "jcommand";
version = "2024-09-20";
projectName = "JCommand";

src = fetchFromGitHub {
owner = "REAndroid";
repo = "JCommand";
rev = "714b6263c28dabb34adc858951cf4bc60d6c3fed";
hash = "sha256-6Em+1ddUkZBCYWs88qtfeGnxISZchFrHgDL8fsgZoQg=";
};

mitmCache = gradle.fetchDeps {
pkg = jcommand;
data = ./deps-jcommand.json;
};

meta.license = lib.licenses.asl20;
};

apkeditor =
let
pname = "apkeditor";
version = "1.4.1";
projectName = "APKEditor";
in
REAndroidLibrary {
inherit pname version projectName;

# When you need to update deps-*.json for the dependencies (e.g. for smali),
# uncomment the following line and run `nix build apkeditor.smali.mitmCache.updateScript`.

# inherit arsclib smali jcommand;

src = fetchFromGitHub {
owner = "REAndroid";
repo = "APKEditor";
rev = "V${version}";
hash = "sha256-a72j9qGjJXnTFeqLez2rhBSArFVYCX+Xs7NQd8CY5Yk=";
};

nativeBuildInputs = [
gradle
arsclib
smali
jcommand
makeWrapper
];

gradleBuildTask = "fatJar";

preConfigure = ''
ln -sf ${arsclib}/${arsclib.outJar} libs/ARSCLib.jar
ln -sf ${smali}/${smali.outJar} libs/smali.jar
ln -sf ${jcommand}/${jcommand.outJar} libs/JCommand.jar
'';

postInstall = ''
mkdir -p $out/bin
makeWrapper ${lib.getExe jre} $out/bin/APKEditor \
--add-flags "-jar $out/${apkeditor.outJar}"
'';

meta = {
description = "Powerful android apk resources editor";
maintainers = with lib.maintainers; [ ulysseszhan ];
license = lib.licenses.asl20;
platforms = lib.platforms.all;
mainProgram = "APKEditor";
};
};
in
apkeditor

0 comments on commit 07a444a

Please sign in to comment.