Cliqz는 익명의 빠른 검색과 지능형 추적 방지 기술이 내장된 최초의 브라우저입니다. 인터넷 어디를 가든 Cliqz는 귀하의 개인 정보를 보호합니다. 뮌헨에서 개발된 자체 검색 엔진은 시간과 데이터 양을 절약해 줍니다. 간단히 검색어를 입력하고 추천 웹사이트를 선택하거나 왼쪽으로 스와이프하여 더 많은 결과를 확인하세요. 그런데 Cliqz는 무료이며 오픈 소스입니다.
Cliqz 기능 개요:
셸에서 다음 명령을 실행하세요.
$ > git clone [email protected]:cliqz-oss/browser-android.git
$ > cd browser-android
저장소가 체크아웃되면 반응 네이티브 번들에 대한 종속성을 가져오고 빌드합니다.
$ > npm ci
$ > npm run dev-bundle
명령줄에서 Gradle 래퍼를 사용하여 프로젝트를 컴파일할 수 있습니다.
$ > ./gradlew :app:assembleCliqzDebug
Android SDK가 있어야 합니다. Mac OSX에서는 Brew를 사용하여 후자를 설치할 수 있습니다.
$ > brew install android
PlayStore에 게시하려면 APK에 서명해야 합니다. 자세한 내용을 보려면 이 링크를 따르세요. 앱에 서명하려면 CLIQZ 키 저장소가 필요하지만 소스 코드와 함께 배포되지도 않고 배포되어서도 안 되며 키 저장소 비밀번호도 비밀로 유지되어야 합니다. 키 저장소와 비밀번호가 있는 경우 Gradle을 구성하여 서명된 APK를 생성할 수 있습니다. 이렇게 하려면 gradle.properties 파일을 만들고 다음 줄을 추가(또는 이미 있는 경우 추가)합니다.
Browser . storeFile = < key_store_path >
Browser . storePassword = < key_store_password >
Browser . keyAlias = < key_alias >
Browser . keyPassword = < key_password >
<param>을 적절한 인수로 바꾸면 일반적인 Gradle 작업( :app:assembleCliqzRelease
)을 사용하여 릴리스 APK를 컴파일할 수 있습니다.
이 프로젝트는 일부 로직과 뷰에 반응 네이티브를 사용합니다. 이 코드는 browser-core 저장소에서 개발되었습니다. 이러한 구성요소를 디버깅하려면 다음 단계를 따르세요.
npm run dev-server
이제 앱이 실행되면 개발자 서버에서 JS 코드가 로드됩니다. 또한 설정 메뉴의 'React Native Debug' 옵션에서 반응 네이티브 디버깅 옵션을 사용할 수 있습니다. Chrome 디버거에서 열면 app
개체( browser-core
의 모든 모듈에 대한 루트가 웹 작업자 컨텍스트에 노출됩니다.
browser-core
에서도 코드를 개발하려면 다음 단계를 따르세요.
./fern.js install
fern serve
명령을 사용하면 코드를 변경하면 프로젝트가 다시 빌드됩니다. CLIQZ_OUTPUT_PATH=/path/to/android-browser/node_modules/browser-core/build/ ./fern.js serve configs/cliqz-android.js
이제 앱에서 코드를 다시 로드하면 개발 서버가 Fern 빌드에서 출력된 업데이트된 파일을 보고 로드합니다.
반응 라이브 리로딩 서버를 사용하려면 .setUseDeveloperSupport(true)
사용하여 /app/src/main/java/com/cliqz/jsengine/Engine.java
의 ReactInstanceManager에서 개발자 지원 옵션을 설정해야 합니다.
그런 다음 Android에 React Native 디버그 메뉴를 표시하려면 시스템 오버레이 권한을 요청해야 합니다. 이 권한을 요청하는 한 가지 방법은 adb
사용하는 것입니다.
adb shell am start -a android.settings.action.MANAGE_OVERLAY_PERMISSION -d package:com.cliqz.browser.debug
애플리케이션은 반응 개발 서버가 실행 중인지 자동으로 감지하고 여기에서 번들을 로드합니다. 그렇지 않으면 번들이 앱 자산에서 로드됩니다.