Top Related Projects
The official GitHub mirror of the Chromium source
Brave browser for Android, iOS, Linux, macOS, Windows.
⚠️ Fenix (Firefox for Android) moved to a new repository. It is now developed and maintained as part of: https://github.com/mozilla-mobile/firefox-android
Source-code used in Kiwi Browser for Android
Bromite is a Chromium fork with ad blocking and privacy enhancements; take back your browser!
Google Chromium, sans integration with Google
Quick Overview
JackyAndroid/AndroidChromium is a project that aims to port Google's Chromium browser to the Android platform. It provides a framework for building a Chromium-based browser application for Android devices, allowing developers to create custom browsers with Chromium's rendering engine and features.
Pros
- Leverages the powerful Chromium engine for web rendering and JavaScript execution
- Provides a customizable foundation for building Android browsers
- Offers access to Chromium's advanced features and security updates
- Allows for integration of Android-specific functionality with Chromium's core
Cons
- Requires significant development expertise to implement and maintain
- Large codebase and complex build process can be challenging for newcomers
- May require frequent updates to keep pace with Chromium's rapid development cycle
- Limited documentation and community support compared to official Chromium projects
Code Examples
This project is not primarily a code library, but rather a framework for building Android applications based on Chromium. As such, there are no specific code examples to showcase. The project mainly consists of build configurations, Android-specific implementations, and modifications to the Chromium source code to make it compatible with Android.
Getting Started
To get started with the JackyAndroid/AndroidChromium project:
-
Clone the repository:
git clone https://github.com/JackyAndroid/AndroidChromium.git
-
Follow the build instructions in the project's README file. This typically involves:
- Setting up the Android development environment
- Installing necessary dependencies
- Configuring the build system
- Running the build scripts
-
Once built, you can open the project in Android Studio to begin customizing and extending the Chromium-based browser application.
Note that building Chromium for Android is a complex process that requires significant computational resources and time. It's recommended to refer to the official Chromium documentation and the project's README for detailed, up-to-date instructions on building and customizing the browser.
Competitor Comparisons
The official GitHub mirror of the Chromium source
Pros of Chromium
- Official, up-to-date source code maintained by Google
- Comprehensive documentation and extensive community support
- Full feature set and regular updates
Cons of Chromium
- Large codebase, potentially overwhelming for newcomers
- Complex build process and system requirements
- Not specifically optimized for Android
Code Comparison
AndroidChromium:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
}
}
Chromium:
class BrowserMainParts {
public:
virtual void PreMainMessageLoopRun() = 0;
virtual void PostMainMessageLoopRun() = 0;
virtual bool MainMessageLoopRun(int* result_code) = 0;
};
Summary
AndroidChromium is a simplified, Android-focused version of Chromium, making it easier for developers to work with on mobile platforms. It offers a more streamlined approach but may lack some features and updates found in the official Chromium repository.
Chromium, being the official project, provides a complete and regularly updated codebase with extensive documentation. However, its complexity and size can be challenging for developers primarily focused on Android development.
The code comparison illustrates the difference in focus, with AndroidChromium using Java and Android-specific components, while Chromium uses C++ and covers a broader range of functionality.
Brave browser for Android, iOS, Linux, macOS, Windows.
Pros of Brave Browser
- Active development with frequent updates and new features
- Built-in ad-blocking and privacy-focused features
- Larger community and more extensive documentation
Cons of Brave Browser
- More complex codebase, potentially harder for newcomers to contribute
- Heavier resource usage due to additional features
Code Comparison
AndroidChromium:
public class ChromeApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
ChromePreferenceManager.getInstance().warmUpSharedPrefs();
}
}
Brave Browser:
const brave = {
init: async () => {
await loadPreferences()
initializeAdBlocker()
setupPrivacyFeatures()
}
}
The AndroidChromium example shows a simpler initialization process, while the Brave Browser code (pseudocode for illustration) demonstrates a more complex setup with additional privacy and ad-blocking features.
AndroidChromium focuses on providing a basic Chromium-based browser for Android, making it easier to understand and modify. Brave Browser, on the other hand, offers a full-featured privacy-focused browser with built-in ad-blocking and cryptocurrency features, catering to users who prioritize online privacy and security.
Both projects serve different purposes: AndroidChromium is ideal for developers looking to build custom browsers or learn about Chromium on Android, while Brave Browser is a complete, privacy-centric browser solution for end-users.
⚠️ Fenix (Firefox for Android) moved to a new repository. It is now developed and maintained as part of: https://github.com/mozilla-mobile/firefox-android
Pros of Fenix
- More active development with frequent updates and contributions
- Built using modern Android development practices and Kotlin
- Stronger focus on privacy features and customization options
Cons of Fenix
- Larger codebase, potentially more complex to navigate
- May have a steeper learning curve for contributors unfamiliar with Mozilla's development practices
Code Comparison
Fenix (Kotlin):
class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return inflater.inflate(R.layout.fragment_browser, container, false)
}
}
AndroidChromium (Java):
public class BrowserFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_browser, container, false);
}
}
The code comparison shows that Fenix uses Kotlin and implements additional interfaces, while AndroidChromium uses Java with a simpler structure. Fenix's approach aligns with modern Android development practices, potentially offering more flexibility and features.
Source-code used in Kiwi Browser for Android
Pros of Kiwi Browser
- More actively maintained with recent commits
- Includes additional features like extension support
- Better documentation and community engagement
Cons of Kiwi Browser
- Larger codebase, potentially more complex to navigate
- May have more dependencies and build requirements
- Possibly less focused on pure Chromium implementation
Code Comparison
AndroidChromium:
public class ChromiumApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
ChromiumLibraryLoader.ensureInitialized(this);
}
}
Kiwi Browser:
#include "chrome/browser/ui/android/native_window_android.h"
#include "components/browser_ui/widget/android/native_window_android.h"
void NativeWindowAndroid::SetContentView(JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj,
jint content_view_id) {
// Implementation details...
}
The code snippets show different approaches: AndroidChromium uses Java for application setup, while Kiwi Browser employs C++ for native window management, indicating a more low-level implementation in Kiwi Browser.
Bromite is a Chromium fork with ad blocking and privacy enhancements; take back your browser!
Pros of Bromite
- Actively maintained with regular updates and security patches
- Enhanced privacy features like ad blocking and fingerprinting protection
- Customized UI and additional features not found in standard Chromium
Cons of Bromite
- Smaller community and less documentation compared to AndroidChromium
- May have compatibility issues with some websites due to privacy modifications
- Limited to Android platform, while AndroidChromium supports multiple platforms
Code Comparison
AndroidChromium:
public class ChromeApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
ChromePreferenceManager.getInstance().warmUpSharedPrefs();
}
}
Bromite:
public class BromiteApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
BromitePreferenceManager.getInstance().initializePreferences();
AdBlocker.initialize(this);
}
}
The code snippets show that Bromite includes additional functionality like ad blocking initialization, which aligns with its focus on privacy and security features. AndroidChromium's code appears more straightforward, potentially offering better performance but fewer built-in privacy enhancements.
Google Chromium, sans integration with Google
Pros of ungoogled-chromium
- Focuses on privacy by removing Google-specific integrations and features
- Actively maintained with regular updates and a large community
- Provides builds for multiple platforms (Windows, macOS, Linux)
Cons of ungoogled-chromium
- Lacks Android-specific optimizations and features
- May have compatibility issues with some Google services
- Requires more technical knowledge to build and maintain
Code comparison
AndroidChromium:
public class ChromiumApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
ChromiumInitializer.initialize(this);
}
}
ungoogled-chromium:
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_finder.h"
Browser* GetLastActiveBrowser() {
return chrome::FindLastActiveWithHostDesktopType(
chrome::GetActiveDesktop());
}
The code snippets show that AndroidChromium is specifically tailored for Android development using Java, while ungoogled-chromium uses C++ and focuses on desktop browser functionality. This reflects the different target platforms and goals of each project.
ungoogled-chromium provides a more privacy-focused approach by removing Google integrations, making it suitable for users concerned about data collection. However, it may require more technical expertise to set up and use compared to AndroidChromium, which is designed for easier integration into Android applications.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
AndroidChromium
Brief Introduction
- Google browser android version of the source program
- This project is a world-class android architecture
- Clarify the project business logic can completely fit for domestic company engineer
- This project will follow up and update Google browser kernel version for a long time, welcome to the star
Notice
If you are using AndroidStudio above 2.0 version and open instant run function, suggested to debug after closing (instant run will modify on the Application of the result in chrome provider context reference error)
Screenshots
The upgrade Chromium kernel steps are as follows
Preparation
Refer to official and other tutorial compile chromium source code, and can generate chrome apk
purpose
Using AndroidStudio debugging Chromium Android
The build process
- Android Studio as a development environment, from Chromium for Android from chrome module source code, to join the Android project.
- Native code in the chromium environment to build, as so file to join the Android project
- Basic module (base, the content, net, etc.) in the chromium environment to build into a jar package, then add to the Android project
- content, chrome, UI modules such as resource file to join an Android library project
Why can't a resource file are directly added to the Android project?
Because namespace problems, such as the content of the module resources namespace is org.chromium.content,the chrome module namespace is org.chromium.chrome, so need to build different Android library project, specify different package name.
Directory corresponding relation
app/libs ----------- chromium/src/out/gnbuild/lib.java
app/src/main/aidl ----------- chromium/src/chrome/android/java/src/android/support/customtabs/*.aidl
app/src/main/assets ----------- chromium/src/out/gnbuild/
app/src/main/java ------------ chromium/src/chrome/android/java/src
app/src/main/jniLibs ----------- chromium/src/out/gnbuild/
app/src/main/resï¼app module init resï¼
libraries/androidmedia_res ----------- chromium/src/third_party/android_media/java/res
libraries/chrome_res ----------- chromium/src/chrome/android/java/res & chromium/src/chrome/android/java/res_chromium
libraries/content_res ----------- chromium/src/content/public/android/java/res
libraries/datausagechart_res --------- chromium/src/third_party/android_data_chart/java/res
libraries/ui_res ---------- chromium/src/ui/android/java/res
The kernel upgrade matters needing attention
- Pak and dat files need to be added to the assets directory, and cannot be compressed
- Aidl files added to the main/aidl
- The current build chromium version is 55.0.2883.99
- Because some Java file is through the C compiler generated, there is the chromium/src/out directory or exist in the jars.If according to corresponding relation between the above updated version missing files, please go to the out/directory search, add corresponding files according to the namespace.There are some temporary generated XML resource file also need the out/directory on copy to the corresponding resource module.
Thanks
The project is inspiration from the 365 browser
License
Copyright 2016 Jacky Wang<jacky.android@foxmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Top Related Projects
The official GitHub mirror of the Chromium source
Brave browser for Android, iOS, Linux, macOS, Windows.
⚠️ Fenix (Firefox for Android) moved to a new repository. It is now developed and maintained as part of: https://github.com/mozilla-mobile/firefox-android
Source-code used in Kiwi Browser for Android
Bromite is a Chromium fork with ad blocking and privacy enhancements; take back your browser!
Google Chromium, sans integration with Google
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot