mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-22 23:13:19 +00:00
111 lines
2.8 KiB
Nix
111 lines
2.8 KiB
Nix
|
{
|
||
|
lib,
|
||
|
stdenv,
|
||
|
fetchFromGitHub,
|
||
|
callPackage,
|
||
|
|
||
|
jre,
|
||
|
gradle,
|
||
|
makeWrapper,
|
||
|
}:
|
||
|
|
||
|
let
|
||
|
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 = callPackage ./arsclib { inherit REAndroidLibrary; };
|
||
|
smali = callPackage ./smali { inherit REAndroidLibrary; };
|
||
|
jcommand = callPackage ./jcommand { inherit REAndroidLibrary; };
|
||
|
|
||
|
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),
|
||
|
# run `nix build apkeditor.passthru.deps.smali.mitmCache.updateScript`.
|
||
|
passthru.deps = {
|
||
|
inherit arsclib smali jcommand;
|
||
|
};
|
||
|
|
||
|
src = fetchFromGitHub {
|
||
|
owner = "REAndroid";
|
||
|
repo = "APKEditor";
|
||
|
rev = "V${version}";
|
||
|
hash = "sha256-a72j9qGjJXnTFeqLez2rhBSArFVYCX+Xs7NQd8CY5Yk=";
|
||
|
};
|
||
|
|
||
|
patches = [
|
||
|
# Remove this patch after REAndroid/APKEditor#144 is merged
|
||
|
./fix-gradle.patch
|
||
|
];
|
||
|
|
||
|
nativeBuildInputs = [
|
||
|
gradle
|
||
|
makeWrapper
|
||
|
];
|
||
|
|
||
|
gradleBuildTask = "fatJar";
|
||
|
|
||
|
# The paths libs/*.jar are hardcoded in build.gradle of APKEditor:
|
||
|
# https://github.com/REAndroid/APKEditor/blob/V1.4.1/build.gradle#L24-L31
|
||
|
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
|