-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpackage_rom.pl
More file actions
executable file
·115 lines (93 loc) · 4.13 KB
/
Copy pathpackage_rom.pl
File metadata and controls
executable file
·115 lines (93 loc) · 4.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#!/usr/bin/perl
###############################################################################
#
#Takes an otapackage zip and creates a signed update zip with the following:
# -Removed recovery
# -Added superuser files
# -Added busybox and install script
# -Custom updater-script
# -Signed zip
#
#Author: Jon Richards
#Email: jon@jonrichards.net
#
###############################################################################
use strict;
use Archive::Extract;
use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
use File::Copy;
use File::Path;
###############################################################################
#Variables
###############################################################################
my $base_dir = "/home/jon/code/aosp/package_rom";
my $otapackage = "/home/jon/code/aosp/ics_custom/out/target/product/crespo/full_crespo-ota-eng.jon.zip";
my $update = $base_dir . "/update.zip";
my $signed = $base_dir . "/update-signed.zip";
my $busybox = $base_dir . "/files/busybox";
my $su = $base_dir . "/files/su";
my $superuser = $base_dir . "/files/Superuser.apk";
my $updater_script = $base_dir . "/scripts/updater-script";
my $install_busybox = $base_dir . "/scripts/installbusybox";
my $testsign = $base_dir . "/testsign/testsign.jar";
###############################################################################
###############################################################################
#Cleanup previous files
###############################################################################
#Delete old temp directory
if (-d $base_dir . "/temp") {
rmtree([$base_dir . "/temp"], 0, 1) or die "Could not delete temp directory";
}
#Delete old update.zip
if(-e $update) {
unlink($update);
}
###############################################################################
###############################################################################
#Unzip and prepare
###############################################################################
#Copy otapackage zip
copy($otapackage, $update) or die "Copy failed: $!";
#Create new temp directory
mkdir($base_dir . "/temp");
#Extract update.zip to temp directory
my $ae = Archive::Extract->new(archive => $update);
my $ok = $ae->extract(to => $base_dir . "/temp");
#Delete update.zip
unlink($update);
#Delete the recovery folder
rmtree([$base_dir . "/temp/recovery"], 0, 1) or die "Fail";
#Delete updater-script
unlink($base_dir . "/temp/META-INF/com/google/android/updater-script");
#Delete signing files
unlink($base_dir . "/temp/META-INF/CERT.RSA");
unlink($base_dir . "/temp/META-INF/CERT.SF");
unlink($base_dir . "/temp/META-INF/MANIFEST.MF");
###############################################################################
###############################################################################
#Copy files
###############################################################################
#Copy busybox
copy($busybox, $base_dir . "/temp/system/xbin") or die "Copy failed: $!";
#Copy superuser files
copy($superuser, $base_dir . "/temp/system/app") or die "Copy failed: $!";
copy($su, $base_dir . "/temp/system/bin") or die "Copy failed: $!";
#Copy updater script
copy($updater_script, $base_dir . "/temp/META-INF/com/google/android/") or die "Copy failed: $!";
#Copy installbusybox script
copy($install_busybox, $base_dir . "/temp");
###############################################################################
###############################################################################
#Create new update.zip
###############################################################################
my $zip = Archive::Zip->new();
$zip->addTree($base_dir . "/temp/", "");
unless($zip->writeToFileNamed($update) == AZ_OK ) {
die 'Error writing update.zip';
}
###############################################################################
###############################################################################
#Sign update.zip
###############################################################################
system("/usr/java/jdk1.6.0_29/bin/java -classpath $testsign testsign $update $signed");
###############################################################################