-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathREADME.Chrome_for_Android_SourceDistribution
128 lines (88 loc) · 5.36 KB
/
README.Chrome_for_Android_SourceDistribution
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
Copyright (c) 2012 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
This readme explains how to build and install your own Chromium apk using a
custom native library that you can build and modify as required.
Unfortunately, the app generated by following these steps using the current code
is likely to be unstable. This is a consequence of building over the Android
Open Source Project tree and we're working on it. Sorry for any inconveniences.
1. Build your custom libchromeview.so native library.
- First, you need to download the Android Open Source Project master branch.
Follow the instructions in these pages:
http://source.android.com/source/initializing.html
http://source.android.com/source/downloading.html
- Inside the code create the folder 'external/chrome' and move there the
contents of the tarball where this file was contained. The resulting folder
structure should be as follows:
Android Open Source Project Tree
build: Android environment settings and others.
external/chrome: where tarball contents should be moved to.
external/chrome/apk: where the official apk will be extracted and modified.
Contains the tool change_chromium_package.py.
external/chrome/out/Release: output folder. Will be created at the end of
this step.
- Go back to the Android source root folder and run the following commands.
These two commands will build Android and libchromeview respectively and
can take quite a few minutes and many GB of free space. Make sure you meet the
conditions described here: http://source.android.com/source/initializing.html
. build/envsetup.sh && lunch full-eng && m -j16
cd external/chrome && . build/android/envsetup.sh && clank_gyp && make -j16 libchromeview.so
2. Get the official Chrome.apk.
- Install Google Chrome from the Play store if not already in your device.
- Connect your device via USB. Make sure adb is available (see troubleshooting).
- Go to 'external/chrome/apk' and run:
adb pull $(adb shell pm path com.android.chrome | sed 's/package:\([^\r ]\+\).*$/\1/g') Chrome.apk
This will get the apk of the version installed in your device. Although you can
probably get this file from the Internet it is recommended not to do so since
you'll expose yourself to the possibility of fake apks with malicious code.
3. Unpack the apk contents.
- Although this could be done alone with the Android aapt tool it can be tricky
to correctly unpack and repack the apk contents. For simplicity we suggest
using apktool: http://code.google.com/p/android-apktool/
- If using apktool, in the 'external/chrome/apk' folder run:
apktool d Chrome.apk
Note that just unzipping the apk won't decode the resources and will make it
hard to repack later.
4. Update the application package.
- Your apk should have a package name different to the official Chrome package.
To correctly change it go to external/chrome/apk if not already there and run:
./change_chromium_package.py
This will change the package name to "com.example.chromium" and the app name
to "Example Chromium" by default. You can override these by running:
./change_chromium_package.py -u folder_were_the_apk_was_unpacked
-p desired_package_name
-a desired_app_name
5. Strip and replace libchromeview.so
- Once step 1 has finished you can find your native library ready in
external/chrome/out/Release/lib.target/libchromeview.so
This binary contains debug symbols that make its size greater than 1 GB.
Remove the debug symbols by going to the folder above and running:
arm-eabi-strip libchromeview.so
This will reduce the size of libchromeview.so to the order of a few MB.
- Replace external/chrome/apk/Chrome/lib/armeabi-v7a/libchromeview.so with the
file you compiled and stripped.
6. Repackage and install the new APK.
- First, repack our updated contents into a new apk by running:
apktool b Chrome Chromium_unaligned.apk
- Sign the apk using jarsigner. Here's an example of how to do it using debug
keys from the Android SDK, but feel free to use your own keys:
jarsigner -sigalg MD5withRSA -digestalg SHA1
-keystore PATH_TO_ANDROID_SDK/.android/debug.keystore
-storepass android Chromium_unaligned.apk androiddebugkey
You can find more information about signing apk files here:
http://developer.android.com/tools/publishing/app-signing.html
- Align the package to 32 bits by running:
zipalign -f -v 4 Chromium_unaligned.apk Chromium.apk
- Finally, install the application as usual: adb install -r Chromium.apk
Troubleshooting:
-> I get strange compile or link errors during step 1.
Make sure you have set the environtment correctly and have enough free space
and RAM to build and link Android. Double-check the instructions in:
http://source.android.com/source/initializing.html
-> adb or some other commands mentioned here are not found.
You're probably trying from an environment different from the one used to
build android. From the Android source root folder run:
. build/envsetup.sh && lunch full-eng
Also make sure your android build succeeded. Alternatively you may find these
tools in the Android SDK, but you'll still need a working Android build to
compile your own libchromeview.so library.