# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # Orhan , 2021. # ToldYouThat , 2021. # Oğuz Ersen , 2021. # Tur , 2021. # Mehmet Ali <2045uuttb@relay.firefox.com>, 2021. # Oğuz Ersen , 2022. # metezd , 2022. # Fatih Atakan , 2022. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: team@f-droid.org\n" "POT-Creation-Date: 2022-11-28 08:27+0100\n" "PO-Revision-Date: 2022-11-17 18:30+0000\n" "Last-Translator: metezd \n" "Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15-dev\n" #. type: YAML Front Matter: title #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "All About Descriptions, Graphics, and Screenshots" msgstr "Açıklamalar, Grafikler ve Ekran Görüntüleri Hakkında Her Şey" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "Applications on F-Droid may provide content for the app store to make their about page more interesting and informative." msgstr "F-Droid üzerindeki uygulamalar, hakkında sayfalarını daha ilginç ve bilgilendirici hale getirmek için uygulama mağazasına içerik sağlayabilirler." #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "This is supported from F-Droid version 0.103 and *fdroidserver* version 0.8." msgstr "Bu, F-Droid sürüm 0.103 ve *fdroidserver* sürüm 0.8'den itibaren desteklenmektedir." #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #: _docs/Build_Server_Setup.md _docs/FAQ_-_App_Developers.md #: _docs/FAQ_-_Client.md _docs/FAQ_-_General.md #: _docs/Installing_the_Server_and_Repo_Tools.md #: _docs/Setup_an_F-Droid_App_Repo.md #, no-wrap msgid "" "* Do not remove this line (it will not be displayed)\n" "{:toc}\n" msgstr "" "* Do not remove this line (it will not be displayed)\n" "{:toc}\n" #. type: Title ## #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "Latest tab criteria" msgstr "En yeniler sekmesi kriterleri" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "In F-Droid client, since release 1.6, only applications that have all of the following are shown on the Latest tab:" msgstr "F-Droid istemcisinde, sürüm 1.6'dan itibaren sadece aşağıdakilerin tümüne sahip uygulamalar En yeniler sekmesinde gösterilmektedir:" #. type: Bullet: '* ' #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "Name" msgstr "Ad" #. type: Bullet: '* ' #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "Icon" msgstr "" #. type: Bullet: '* ' #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "Summary" msgstr "Özet" #. type: Bullet: '* ' #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "Description" msgstr "Açıklama" #. type: Title ### #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #: _docs/Repository_Style_Guide.md #, no-wrap msgid "License" msgstr "Lisans" #. type: Bullet: '* ' #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "a What’s New entry for at least one release" msgstr "En az bir sürüm için Yenilikler girdisi" #. type: Bullet: '* ' #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "at least one graphic (screenshot or a feature graphic)" msgstr "en az bir grafik (ekran görüntüsü veya özellik grafiği)" #. type: Bullet: '* ' #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "at least one of the above translated" msgstr "yukarıdakilerden en az birinin çevrilmiş olması" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "Learn more at the [announcement post]({{ site.baseurl }}/2019/03/26/the-latest-tab-now-highlights-good-descriptions.html)." msgstr "Daha fazla bilgi için [duyuru gönderisine]({{ site.baseurl }}/2019/03/26/the-latest-tab-now-highlights-good-descriptions.html) bakın." #. type: Title ## #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "Data format" msgstr "Veri biçimi" #. type: Title ### #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "Image file formats" msgstr "Resim dosyası biçimleri" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "Images may be provided in PNG or JPEG format. They must have the ending `png`, `jpg` or `jpeg`." msgstr "Resimler PNG veya JPEG biçiminde sağlanabilir. `png`, `jpg` veya `jpeg` şeklinde bitmelidirler." #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "It is important to note that dangerous and unneeded metadata is stripped from image files before they are included in the repo. For example, JPEG EXIF data has [security issues](https://threatpost.com/google-shuts-down-potentially-massive-android-bug/120393/), and it is not needed to display images. This also means that images may be recompressed." msgstr "Önemli bir nokta olarak, tehlikeli ve gereksiz üst veriler resim dosyalarından depoya eklenmeden önce çıkarılır. Örneğin, JPEG EXIF verilerinde [güvenlik sorunları](https://threatpost.com/google-shuts-down-potentially-massive-android-bug/120393/) vardır ve resimleri görüntülemek için gerekli değildir. Bu aynı zamanda resimlerin yeniden sıkıştırılabileceği anlamına da gelir." #. type: Title ### #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "HTML descriptions" msgstr "HTML açıklamaları" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "The detailed app description may use HTML tags. Note that not all tags are supported by the renderer." msgstr "Ayrıntılı uygulama açıklaması HTML etiketleri kullanabilir. Oluşturucu tarafından tüm etiketlerin desteklenmediğini unutmayın." #. type: Bullet: '* ' #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "Common tags like `li`, `a` with `href`, `ul`, `ol`, `li`, `b`, `u` and `i` are supported." msgstr "`li`, `href` ile `a`, `ul`, `ol`, `li`, `b`, `u` ve `i` gibi genel etiketler desteklenmektedir." #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "" "* Certain tags are explicitly prohibited, namely `applet`, `base`, `body`, `button`, `embed`, `form`, `head`, `html`,\n" "`iframe`, `img`, `input`, `link`, `object`, `picture`, `script`, `source`, `style`, `svg` and `video`.\n" "* Note that a linebreak will automatically be converted to a `br` tag.\n" "* You may not make use of JavaScript.\n" msgstr "" "* `applet`, `base`, `body`, `button`, `embed`, `form`, `head`, `html`, `iframe`, `img`, `input`, `link`, `object`,\n" "`picture`, `script`, `source`, `style`, `svg` ve `video` gibi belirli etiketler açıkça yasaklanmıştır.\n" "* Yeni satır karakterinin otomatik olarak bir `br` etiketine dönüştürüleceğini unutmayın.\n" "* JavaScript kullanamazsınız.\n" #. type: Title ## #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "Ways of providing metadata" msgstr "Üst veri sağlamanın yolları" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "Adding metadata can be done in the following three ways." msgstr "Üst veri eklemek aşağıdaki üç yolla yapılabilir." #. type: Title ### #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "In the application's source repository" msgstr "Uygulamanın kaynak deposunda" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "For the official F-Droid repository, it is **strongly encouraged** to add metadata in the application's source repo for for the following reasons:" msgstr "Resmi F-Droid deposu için aşağıdaki nedenlerden dolayı, uygulamanın kaynak deposuna üstveri ekleme **şiddetle tavsiye edilir**:" #. type: Bullet: '* ' #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "The application's metadata is under direct control of the repository owners" msgstr "Uygulamanın üstverileri depo sahiplerinin doğrudan denetimi altındadır" #. type: Bullet: '* ' #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "Metadata from the repository is copied to the F-Droid repo automatically (thus no merge requests are needed)" msgstr "Depodaki üstveriler otomatik olarak F-Droid deposuna kopyalanır (bu nedenle birleştirme isteğine gerek yoktur)" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "F-Droid supports two distinct file structures. These aim to be compatible with existing free software tools that allow publishing applications to Google Play. It is not required to install any of these tools, the file structure can easily be created manually instead." msgstr "F-Droid iki farklı dosya yapısını destekler. Bunlar, uygulamaların Google Play'de yayınlanmasına izin veren mevcut ücretsiz yazılım araçlarıyla uyumlu olmayı amaçlamaktadır. Bu araçlardan herhangi birinin yüklenmesi gerekmez, dosya yapısı bunun yerine el ile olarak kolayca oluşturulabilir." #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "Please be aware that texts in the app’s metadata file will override all other descriptive texts provided through the structures explained below. This affects [_Name_](../Build_Metadata_Reference/#Name), [_Summary_](../Build_Metadata_Reference/#Summary), and [_Description_](../Build_Metadata_Reference/#Description). Once metadata fields that were previously in the metadata file have been moved to the app’s source repo, please file a [merge request](https://gitlab.com/fdroid/fdroiddata/merge_requests) or [issue](https://gitlab.com/fdroid/fdroiddata/issues) to remove _Summary_ and _Description_ from the app's metadata file." msgstr "Uygulamanın üst veri dosyasındaki metinlerin, aşağıda açıklanan yapılar aracılığıyla sağlanan diğer tüm tanımlayıcı metinleri geçersiz kılacağını unutmayın. Bu[ _ismi_](../Build_Metadata_Reference/#Name), [_özeti_](../Build_Metadata_Reference/#Summary) ve [_açıklamayı_](../Build_Metadata_Reference/#Description) etkiler. Bir kere üst veri dosyasındaki üst veri kısmı uygulamanın deposuna taşındığı zaman, lütfen bir [merge request](https://gitlab.com/fdroid/fdroiddata/merge_requests) oluşturun veya üst veri dosyasındaki _özet_ ve _açıklamayı_ kaldırmak için [sorun](https://gitlab.com/fdroid/fdroiddata/issues) adresine gidin." #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "For more details, see the [precedence rules](#precedence) described at the end of this file." msgstr "Daha fazla bilgi için, dosyanın sonunda açıklanan [öncelik kurallarına](#precedence) bakınız." #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "F-Droid will only use metadata files from the latest release. This means that *fdroidserver* will check out the latest version it knows and scan the repository at the state of that version for metadata files." msgstr "F-Droid sadece en son yayımlamadaki üst veriyi kullanacaktır. Yani: *fdroidserver* mevcut en son sürüme göz atacak ve o sürümün üst veri dosyalarını tarayacak." #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "All metadata files are completely optional, except for the short summary description as well as the longer full description. However, apps which do not fulfill certain [criteria](#latest-tab-criteria) will not be shown on the Latest tab." msgstr "Kısa özet açıklaması ve uzun tam açıklama haricindeki tüm üst veri dosyaları tamamen isteğe bağlıdır. Ancak, belirli [ölçütleri](#latest-tab-criteria) sağlamayan uygulamalar En yeniler sekmesinde görüntülenmeyecektir." #. type: Title #### #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "Fastlane structure" msgstr "Fastlane yapısı" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "The first of the two structures is aiming to be compatible to the [fastlane supply](https://github.com/fastlane/fastlane/blob/2.28.7/supply/README.md#images-and-screenshots) tool." msgstr "İki yapıdan ilki, [fastlane kaynağı](https://github.com/fastlane/fastlane/blob/2.28.7/supply/README.md#images-and-screenshots) aracıyla uyumlu olmayı hedeflemektedir." #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "The basic file structure is as follows. Pay attention to the notes at the right. When this structure is created, it needs to be place in the correct position as outlined below." msgstr "Temel dosya yapısı aşağıdaki gibidir. Sağdaki notlara dikkat edin. Bu yapı oluşturulduğunda aşağıda belirtildiği gibi doğru konumda olması gereklidir." #. type: Fenced code block #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "" "├── en-US (en-US is the F-Droid fallback language)\n" "│ ├── short_description.txt (short description, max 80 chars, mandatory)\n" "│ ├── full_description.txt (full app description, mandatory)\n" "│ ├── title.txt (app name)\n" "│ ├── video.txt (URL to a video introducing the app)\n" "│ ├── images\n" "│ │ ├── icon.png (app icon, mandatory if your app doesn't include any png icon)\n" "│ │ ├── featureGraphic.png (promo banner, shown on top of the app desc in F-Droid client; landscape)\n" "│ │ ├── tvBanner.png (\"icon\" for TV devices, currently not used)\n" "│ │ ├── phoneScreenshots\n" "│ │ │ ├── 1.png\n" "│ │ │ ├── 2.png\n" "│ │ │ ...\n" "│ │ ├── sevenInchScreenshots/\n" "│ │ ├── tenInchScreenshots/ (you may add different screenshots for different screen sizes)\n" "│ │ ├── tvScreenshots/\n" "│ │ └── wearScreenshots/\n" "│ └── changelogs\n" "│ ├── 100000.txt (must correspond to versionCode, literally, no padding)\n" "│ ├── 100100.txt (if the version code was set to 100100)\n" "│ └── 100101.txt (maximum size: 500 characters)\n" "└── ru (other locale codes)\n" " ... (localized metadata is always preferred by the client)\n" " └── changelogs\n" " └── 100100.txt\n" msgstr "" "├── en-US (en-US is the F-Droid yedek dilidir)\n" "│ ├── short_description.txt (kısa açıklama, en fazla 80 karakter, zorunlu)\n" "│ ├── full_description.txt (tam uygulama açıklaması, zorunlu)\n" "│ ├── title.txt (uygulama adı)\n" "│ ├── video.txt (uygulamayı tanıtan bir videonun URL'si)\n" "│ ├── images\n" "│ │ ├── icon.png (uygulama simgesi, uygulamanız herhangi bir png simgesi içermiyorsa zorunludur)\n" "│ │ ├── featureGraphic.png (F-Droid istemcisinde uygulama açıklamasının üstünde gösterilen tanıtım başlığı; yatay)\n" "│ │ ├── tvBanner.png (TV aygıtları için \"simge\", şu anda kullanılmıyor)\n" "│ │ ├── phoneScreenshots\n" "│ │ │ ├── 1.png\n" "│ │ │ ├── 2.png\n" "│ │ │ ...\n" "│ │ ├── sevenInchScreenshots/\n" "│ │ ├── tenInchScreenshots/ (farklı ekran boyutları için farklı ekran görüntüleri ekleyebilirsiniz)\n" "│ │ ├── tvScreenshots/\n" "│ │ └── wearScreenshots/\n" "│ └── changelogs\n" "│ ├── 100000.txt (versionCode ile tam olarak aynı olmalıdır, dolgu yok)\n" "│ ├── 100100.txt (sürüm kodu 100100 olarak ayarlandıysa)\n" "│ └── 100101.txt (azami boyut: 500 karakter)\n" "└── tr (diğer yerel ayar kodları)\n" " ... (yerelleştirilen üst veriler her zaman istemci tarafından tercih edilir)\n" " └── changelogs\n" " └── 100100.txt\n" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "This structure must be placed at one of the following locations from **the repository's root**:" msgstr "Bu yapı **depo'nun kökündeki** aşağıdaki yerlerden birine konulmalıdır:" #. type: Bullet: '* ' #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "`metadata/`" msgstr "`metadata/`" #. type: Bullet: '* ' #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "`fastlane/metadata/android/`" msgstr "`fastlane/metadata/android/`" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "Note that placing the structure anywhere else, like in the gradle module's root, **won't work**." msgstr "Yapıyı başka bir yere, örneğin gradle modülünün kök dizinine, yerleştirmenin **çalışmayacağını** unutmayın." #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "" "**Build flavors** and multiple apps inside one repository are currently not properly supported.\n" "(Follow [this issue](https://gitlab.com/fdroid/fdroidserver/issues/829) tracking the implementation of this.)\n" msgstr "" "**Derleme çeşitleri** ve bir depoda birden çok uygulama şu anda gerektiği gibi desteklenmemektedir.\n" "(Bunun yapılmasını izleyen [bu sorunu](https://gitlab.com/fdroid/fdroidserver/issues/829) takip edin.)\n" #. type: Title #### #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "Triple-T structure" msgstr "Triple-T yapısı" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "The second supported structure is compatible with the tool [Triple-T Gradle Play Publisher](https://github.com/Triple-T/gradle-play-publisher/blob/2.8.0/README.md#publishing-listings)." msgstr "İkinci desteklenen yapı [Triple-T Gradle Play Yayınlayıcısı](https://github.com/Triple-T/gradle-play-publisher/blob/2.8.0/README.md#publishing-listings) aracıyla uyumludur." #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "Place the following structure at `/src/main/play/` or, for **build flavor** support, at `/src//play/`, where `` is the gradle module of your app (in many cases, this is just the folder `app`):\n" msgstr "Aşağıdaki yapıyı `/src/main/play/` konumuna veya **derleme çeşidi** desteği için `/src//play/` konumuna yerleştirin, burada `` uygulamanızın gradle modülüdür (çoğu durumda bu yalnızca `app` klasörüdür):\n" #. type: Fenced code block #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "" "├── contact-email.txt (Developer email / AuthorEmail)\n" "├── contact-website.txt (Developer website / AuthorWebSite)\n" "├── release-notes\n" "│ └── en-US\n" "│ └── default.txt (latest changelog)\n" "└── listings\n" " ├── en-US (en-US is the default locale in F-Droid)\n" " │ ├── title.txt (app name)\n" " │ ├── short-description.txt (short description, max 80 chars, mandatory)\n" " │ ├── full-description.txt (full app description, mandatory)\n" " │ ├── video-url.txt (URL to a video introducing the app)\n" " │ ├── whatsnew (alternative changelog location; single file, no .txt)\n" " │ └── graphics\n" " │ ├── icon (app icon; mandatory if your app doesn't include any png icon)\n" " │ │ └── *.(png|jpg) 1 image, usually 512x512\n" " │ ├── feature-graphic (promo banner, shown on top of the app desc in F-Droid client)\n" " │ │ └── *.(png|jpg) 1 image, usually 1024x500\n" " │ ├── phone-screenshots\n" " │ │ └── *.(png|jpg)\n" " │ ├── tablet-screenshots\n" " │ │ └── *.(png|jpg)\n" " │ ├── large-tablet-screenshots\n" " │ │ └── *.(png|jpg)\n" " │ ├── tv-banner (\"icon\" for TV devices, currently not used)\n" " │ │ └── *.(png|jpg)\n" " │ ├── tv-screenshots\n" " │ │ └── *.(png|jpg)\n" " │ └── wear-screenshots\n" " │ └── *.(png|jpg)\n" " ├── de (other locales)\n" " ├── ...\n" msgstr "" "├── contact-email.txt (Geliştirici e-posta adresi / AuthorEmail)\n" "├── contact-website.txt (Geliştirici web sitesi / AuthorWebSite)\n" "├── release-notes\n" "│ └── en-US\n" "│ └── default.txt (en son değişiklik günlüğü)\n" "└── listings\n" " ├── en-US (en-US F-Droid'de öntanımlı yerel ayardır)\n" " │ ├── title.txt (uygulama adı)\n" " │ ├── short-description.txt (kısa açıklama, en fazla 80 karakter, zorunlu)\n" " │ ├── full-description.txt (tam uygulama açıklaması, zorunlu)\n" " │ ├── video-url.txt (uygulamayı tanıtan bir videonun URL'si)\n" " │ ├── whatsnew (alternatif değişiklik günlüğü konumu; tek dosya, .txt yok)\n" " │ └── graphics\n" " │ ├── icon (uygulama simgesi; uygulamanız herhangi bir png simgesi içermiyorsa zorunludur)\n" " │ │ └── *.(png|jpg) 1 resim, genellikle 512x512\n" " │ ├── feature-graphic (F-Droid istemcisinde uygulama açıklamasının üstünde gösterilen tanıtım afişi)\n" " │ │ └── *.(png|jpg) 1 resim, genellikle 1024x500\n" " │ ├── phone-screenshots\n" " │ │ └── *.(png|jpg)\n" " │ ├── tablet-screenshots\n" " │ │ └── *.(png|jpg)\n" " │ ├── large-tablet-screenshots\n" " │ │ └── *.(png|jpg)\n" " │ ├── tv-banner (TV aygıtları için \"simge\", şu anda kullanılmıyor)\n" " │ │ └── *.(png|jpg)\n" " │ ├── tv-screenshots\n" " │ │ └── *.(png|jpg)\n" " │ └── wear-screenshots\n" " │ └── *.(png|jpg)\n" " ├── tr (diğer yerel ayarlar)\n" " ├── ...\n" #. type: Title ### #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "In the app's build metadata in an *fdroiddata* collection" msgstr "Bir *fdroiddata* koleksiyonundaki uygulamanın derleme üst verisinde" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "" "**Note**: This option is only meant for those who host their own repositories. If you are a developer who wants to get\n" "an app into the main F-Droid repository, **do not choose this option**. Specifically, screenshots may not be added to\n" "the *fdroiddata* repository.\n" msgstr "" "**Not**: Bu seçenek yalnızca kendi depolarını barındıranlar içindir. Ana F-Droid deposuna bir uygulama koymak\n" "isteyen bir geliştiriciyseniz, **bu seçeneği seçmeyin**. Özellikle, *fdroiddata* deposuna ekran görüntüleri\n" "eklenemez.\n" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "Metadata files can also be added to any *fdroiddata* repository of build metadata. The file structure is modelled after fastlane as well and it looks the same as shown above, with the following additional notes." msgstr "" #. type: Bullet: '* ' #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "Place the structure in the following location: `/metadata//`" msgstr "Yapıyı şu konuma yerleştirin: `/metadata//`" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "" " * For example, for `en-US`, `title.txt` would reside in this location:\n" " `/metadata//en-US/title.txt`\n" "* Instead of `short_description.txt`, the summary file should be named `summary.txt`.\n" "* Instead of `full_description.txt`, the description file should be named `description.txt`.\n" "* Not following the above two points causes the linter to fail.\n" msgstr "" #. type: Title ### #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "In the F-Droid repo" msgstr "F-Droid deposunda" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "**Note**: This option is only available to those who host their own repositories.\n" msgstr "**Not**: Bu seçenek yalnızca kendi depolarını barındıranlar tarafından kullanılabilir.\n" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "The ultimate destination for files from the app’s source repo and *fdroiddata* metadata sub-directories is in the F-Droid repo. The text all gets included into the index file (aka *index-v1.json*). All of the graphics files can be directly included in the repo." msgstr "" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "If graphics files are also in the app’s source or *fdroiddata*, then the files directly in the repo will be overwritten." msgstr "" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "You may not place text files directly in the repo." msgstr "Metin dosyalarını doğrudan depoya yerleştiremezsiniz." #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "For reference, picture files can be placed in the repo at the following locations:" msgstr "Başvuru için resim dosyaları depoda aşağıdaki konumlara yerleştirilebilir:" #. type: Fenced code block #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "" "- fdroid\n" " └── repo\n" " └── \n" " └── \n" " ├── featureGraphic.png\n" " ├── icon.png\n" " ├── tvBanner.png\n" " ├── phoneScreenshots\n" " │ └── *.png\n" " ├── sevenInchScreenshots\n" " │ └── *.png\n" " ├── tenInchScreenshots\n" " │ └── *.png\n" " ├── tvScreenshots\n" " │ └── *.png\n" " └── wearScreenshots\n" " └── *.png\n" msgstr "" #. type: Title ## #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "Precedence" msgstr "" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "The following general precedence rules are applied when multiple of the above options provide metadata:" msgstr "" #. type: Bullet: '* ' #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "The metadata file (i. e. `/metadata/.yml`) overwrites *fdroiddata* files, even localized ones." msgstr "" #. type: Bullet: '* ' #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "The *fdroiddata* files overwrite metadata from the app source." msgstr "" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md #, no-wrap msgid "" "* For data that is also contained in the APK file like the app's name, the previous two options both overwrite the\n" "data from the APK file.\n" msgstr "" #. type: Plain text #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "However, the following more specific rule also applies:" msgstr "" #. type: Bullet: '* ' #: _docs/All_About_Descriptions_Graphics_and_Screenshots.md msgid "Graphic files from the app’s source of *fdroiddata* overwrites files in the repo." msgstr "" #. type: YAML Front Matter: title #: _docs/All_our_APIs.md #, no-wrap msgid "All our APIs" msgstr "Tüm API'lerimiz" #. type: Plain text #: _docs/All_our_APIs.md msgid "For F-Droid to be trusted, we need to be transparent. Making it easy for people to pay attention to all the processes and systems we use helps us stay secure. These are the APIs with key information about the publishing process." msgstr "F-Droid'e güvenilmesi için şeffaf olmamız gerekir. İnsanların kullandığımız tüm süreçlere ve sistemlere dikkat etmesini kolaylaştırmak, güvende kalmamıza yardımcı olur. Bunlar, yayınlama süreci hakkında önemli bilgiler içeren API'lerdir." #. type: Title ## #: _docs/All_our_APIs.md #, no-wrap msgid "Active packages" msgstr "Aktif paketler" #. type: Plain text #: _docs/All_our_APIs.md msgid "There is a per-app API accessible via `https://f-droid.org/api/v1/packages`, which can be used to query information about the applications in the main repository. The JSON API currently lists the published and suggested versions. Archived applications and packages are not available in this API." msgstr "Ana depodaki uygulamalar hakkında bilgi sorgulamak için kullanılabilecek `https://f-droid.org/api/v1/packages` adresinden erişilebilen bir uygulama başına API vardır. JSON API şu anda yayınlanan ve önerilen sürümleri listelemektedir. Arşivlenmiş uygulamalar ve paketler bu API'de mevcut değildir." #. type: Plain text #: _docs/All_our_APIs.md msgid "Example request:" msgstr "Örnek istek:" #. type: Fenced code block #: _docs/All_our_APIs.md #, no-wrap msgid "GET https://f-droid.org/api/v1/packages/org.fdroid.fdroid HTTP/1.1\n" msgstr "GET https://f-droid.org/api/v1/packages/org.fdroid.fdroid HTTP/1.1\n" #. type: Plain text #: _docs/All_our_APIs.md msgid "Example response:" msgstr "Örnek yanıt:" #. type: Fenced code block #: _docs/All_our_APIs.md #, no-wrap msgid "" "HTTP/1.1 200 OK\n" "Content-Type: application/json; charset=utf-8\n" msgstr "" "HTTP/1.1 200 OK\n" "Content-Type: application/json; charset=utf-8\n" #. type: Fenced code block (json) #: _docs/All_our_APIs.md #, no-wrap msgid "" "{\n" " \"packageName\": \"org.fdroid.fdroid\",\n" " \"suggestedVersionCode\": 1009000,\n" " \"packages\": [\n" " {\n" " \"versionName\": \"1.10-alpha0\",\n" " \"versionCode\": 1010000\n" " },\n" " {\n" " \"versionName\": \"1.9\",\n" " \"versionCode\": 1009000\n" " }\n" " ]\n" "}\n" msgstr "" #. type: Plain text #: _docs/All_our_APIs.md msgid "This API is already used by shields.io project to provide F-Droid badges, [like this](https://img.shields.io/f-droid/v/org.fdroid.fdroid)." msgstr "Bu API, shields.io projesi tarafından [bunun gibi](https://img.shields.io/f-droid/v/org.fdroid.fdroid) F-Droid rozetleri sağlamak için zaten kullanılmaktadır." #. type: Title ### #: _docs/All_our_APIs.md #, no-wrap msgid "The repo index" msgstr "Depo dizini" #. type: Plain text #: _docs/All_our_APIs.md #, fuzzy #| msgid "F-Droid is built around a signed index of all the apps and packages that are available. This is a JSON file, though more of an index than an API since all the information is distributed via a single file. The repo index is in the form of a signed JAR file that contains _index-v1.json_. The best method is to verify the JAR signature, then extract _index-v1.json_ if it validates. The _fdroidserver_ Python library provides `fdroidserver.download_repo_index()` to make this easy to do. It is also possible to just read _index-v1.json_ using any ZIP library." msgid "F-Droid is built around a signed index of all the apps and packages that are available. This is a JSON file, though more of an index than an API since all the information is distributed via a single file. * * * * " msgstr "F-Droid, mevcut tüm uygulamaların ve paketlerin imzalı bir dizini etrafında oluşturulmuştur. Bu bir JSON dosyasıdır, ancak tüm bilgiler tek bir dosya aracılığıyla dağıtıldığı için bir API'den çok bir dizindir. Depo dizini, _index-v1.json_ içeren imzalı bir JAR dosyası biçimindedir. En iyi yöntem JAR imzasını doğrulamak, ardından doğrulanırsa _index-v1.json_ dosyasını ayıklamaktır. _ fdroidserver_ Python kütüphanesi bunu kolaylaştırmak için `fdroidserver.download_repo_index()` sağlar. Herhangi bir ZIP kütüphanesi kullanarak _index-v1.json_ dosyasını okumak da mümkündür." #. type: Plain text #: _docs/All_our_APIs.md msgid "As of index-v2, there is support for files that only contain the changes, known as \"diff\" files. There is also a separate entry point, which is signed by a JAR and a GPG signature and lists the available index and diff files." msgstr "" #. type: Bullet: '* ' #: _docs/All_our_APIs.md #, fuzzy #| msgid "" msgid "" msgstr "" #. type: Bullet: '* ' #: _docs/All_our_APIs.md #, fuzzy #| msgid "" msgid "" msgstr "" #. type: Bullet: '* ' #: _docs/All_our_APIs.md #, fuzzy #| msgid "" msgid "" msgstr "" #. type: Plain text #: _docs/All_our_APIs.md #, fuzzy #| msgid "F-Droid is built around a signed index of all the apps and packages that are available. This is a JSON file, though more of an index than an API since all the information is distributed via a single file. The repo index is in the form of a signed JAR file that contains _index-v1.json_. The best method is to verify the JAR signature, then extract _index-v1.json_ if it validates. The _fdroidserver_ Python library provides `fdroidserver.download_repo_index()` to make this easy to do. It is also possible to just read _index-v1.json_ using any ZIP library." msgid "The v1 repo index formats come in the form of a signed JAR file that contains _index-v1.json_. The best method is to verify the JAR signature, then extract _index-v1.json_ if it validates. The _fdroidserver_ Python library provides `fdroidserver.download_repo_index()` to make this easy to do." msgstr "F-Droid, mevcut tüm uygulamaların ve paketlerin imzalı bir dizini etrafında oluşturulmuştur. Bu bir JSON dosyasıdır, ancak tüm bilgiler tek bir dosya aracılığıyla dağıtıldığı için bir API'den çok bir dizindir. Depo dizini, _index-v1.json_ içeren imzalı bir JAR dosyası biçimindedir. En iyi yöntem JAR imzasını doğrulamak, ardından doğrulanırsa _index-v1.json_ dosyasını ayıklamaktır. _ fdroidserver_ Python kütüphanesi bunu kolaylaştırmak için `fdroidserver.download_repo_index()` sağlar. Herhangi bir ZIP kütüphanesi kullanarak _index-v1.json_ dosyasını okumak da mümkündür." #. type: Bullet: '* ' #: _docs/All_our_APIs.md msgid "" msgstr "" #. type: Bullet: '* ' #: _docs/All_our_APIs.md msgid "" msgstr "" #. type: Plain text #: _docs/All_our_APIs.md msgid "There are also GPG signatures for verifying the JSON files:" msgstr "" #. type: Bullet: '* ' #: _docs/All_our_APIs.md #, fuzzy #| msgid "" msgid "" msgstr "" #. type: Bullet: '* ' #: _docs/All_our_APIs.md #, fuzzy #| msgid "" msgid "" msgstr "" #. type: Bullet: '* ' #: _docs/All_our_APIs.md #, fuzzy #| msgid "" msgid "" msgstr "" #. type: Bullet: '* ' #: _docs/All_our_APIs.md #, fuzzy #| msgid "" msgid "" msgstr "" #. type: Title ### #: _docs/All_our_APIs.md #, no-wrap msgid "App build metadata" msgstr "Uygulama yapı üst verileri" #. type: Plain text #: _docs/All_our_APIs.md #, no-wrap msgid "" "Every app in _f-droid.org_ has a corresponding\n" "[build metadata file]({{ site.baseurl }}/docs/Build_Metadata_Reference) in\n" "[_fdroiddata_](https://gitlab.com/fdroid/fdroiddata). In order to encourage\n" "more creative reuse, we keep our data in standard formats in easy to find\n" "places. The whole app collection is in [YAML format]({{ site.baseurl }}/{%\n" "post_url 2019-09-11-yaml-metadata %}). The file can either be directly accessed\n" "by Application ID using the GitLab Raw URL\n" "`https://gitlab.com/fdroid/fdroiddata/-/raw/master/metadata/.yml`\n" "(e.g. ).\n" "The repo index and the [GitLab Repository Files\n" "API](https://docs.gitlab.com/ee/api/repository_files.html) can be used to query\n" "which Application IDs are available. These files are also available via the\n" "mirror on GitHub,\n" "e.g. \n" msgstr "" "_f-droid.org_ adresindeki her uygulamanın bir karşılığı vardır\n" "[meta veri dosyası oluştur]({{ site.baseurl }}/docs/Build_Metadata_Reference) içinde\n" "[_fdroiddata_](https://gitlab.com/fdroid/fdroiddata). Teşvik etmek için\n" "daha yaratıcı yeniden kullanım için verilerimizi standart formatlarda, kolay bulunabilen\n" "yerler. Tüm uygulama koleksiyonu [YAML formatında]({{ site.baseurl }}/{%\n" "post_url 2019-09-11-yaml-metadata %}). Dosyaya doğrudan erişilebilir\n" "GitLab Raw URL'sini kullanarak Uygulama Kimliğine göre\n" "`https://gitlab.com/fdroid/fdroiddata/-/raw/master/metadata/.yml`\n" "(örneğin ).\n" "Depo dizini ve [GitLab Depo Dosyaları\n" "API](https://docs.gitlab.com/ee/api/repository_files.html) sorgulama yapmak için kullanılabilir\n" "Uygulama Kimliklerinin mevcut olduğu. Bu dosyalara ayrıca şu adresten de erişilebilir\n" "GitHub'da ayna,\n" "örneğin \n" #. type: Title ### #: _docs/All_our_APIs.md #, no-wrap msgid "f-droid.org build server status" msgstr "f-droid.org yapı sunucusu durumu" #. type: Plain text #: _docs/All_our_APIs.md msgid "The four main steps of the build cycle are: _checkupdates_, _build_, _update_, and _deploy_. There is a JSON file for each one of those with status information. It is posted once that step completes running. The step that is currently running is posted to _running_." msgstr "Oluşturma döngüsünün dört ana adımı şunlardır: _checkupdates_, _build_, _update_, ve _deploy_. Bunların her biri için durum bilgisi içeren bir JSON dosyası vardır. Bu adım çalışmayı tamamladığında yayınlanır. Şu anda çalışmakta olan adım _running_ adresine gönderilir." #. type: Bullet: '* ' #: _docs/All_our_APIs.md msgid "" msgstr "" #. type: Bullet: '* ' #: _docs/All_our_APIs.md msgid "" msgstr "" #. type: Bullet: '* ' #: _docs/All_our_APIs.md msgid "" msgstr "" #. type: Bullet: '* ' #: _docs/All_our_APIs.md msgid "" msgstr "" #. type: Plain text #: _docs/All_our_APIs.md msgid "Two examples of how these JSON APIs can be used are the [F-Droid Monitor](https://monitor.f-droid.org/) website and the [F-Droid Build Status]({{ site.baseurl }}/packages/de.storchp.fdroidbuildstatus/) app." msgstr "Bu JSON API'lerinin nasıl kullanılabileceğine ilişkin iki örnek, [F-Droid İzleyicisi](https://monitor.f-droid.org/) web sitesi ve [F-Droid Yapı Durumu]({{ site.baseurl }}/packages/de.storchp.fdroidbuildstatus/) uygulamasıdır." #. type: Title ### #: _docs/All_our_APIs.md #, no-wrap msgid "Mirror and repo monitoring" msgstr "Yansıma ve depo izleme" #. type: Plain text #: _docs/All_our_APIs.md msgid "[_mirror-monitor_](https://gitlab.com/fdroid/mirror-monitor) and [_repo-monitor_](https://gitlab.com/fdroid/repo-monitor) are automated jobs that check various stats about _f-droid.org_ mirrors and third party repos respectively. They each provide a single, large JSON log of all the times the checks where run:" msgstr "[_mirror-monitor_](https://gitlab.com/fdroid/mirror-monitor) ve [_repo-monitor_](https://gitlab.com/fdroid/repo-monitor) sırasıyla _f-droid.org_ yansıları ve üçüncü taraf depoları hakkında çeşitli istatistikleri kontrol eden otomatik işlerdir. Her biri, kontrollerin yapıldığı tüm zamanların tek ve büyük bir JSON günlüğünü sağlar:" #. type: Bullet: '* ' #: _docs/All_our_APIs.md msgid "_f-droid.org_ mirror status: " msgstr "_f-droid.org_ yansıma durumu: " #. type: Bullet: '* ' #: _docs/All_our_APIs.md msgid "third-party repo status: " msgstr "üçüncü taraf depo durumu: " #. type: Title ### #: _docs/All_our_APIs.md #, no-wrap msgid "Reproducible builds" msgstr "Tekrarlanabilir yapılar" #. type: Plain text #: _docs/All_our_APIs.md #, fuzzy #| msgid "" #| "_verification.f-droid.org_ is a rebuilder that rebuilds the official releases\n" #| "from _f-droid.org_, then checks to see if they were [reproducibly\n" #| "built](https://reproducible-builds.org/). There is a JSON file per APK that has\n" #| "been checked, where the filename follows the pattern\n" #| "`_.apk.json`, for example:\n" #| "\n" msgid "_verification.f-droid.org_ is a rebuilder that rebuilds the official releases from _f-droid.org_, then checks to see if they were [reproducibly built](https://reproducible-builds.org/). There is an entry point for each package based on the package name: " msgstr "" "_verification.f-droid.org_ resmi sürümleri yeniden oluşturan bir yeniden oluşturucudur\n" " _f-droid.org_ adresinden kontrol eder, ardından [tekrarlanabilir şekilde\n" "yapılmış](https://reproducible-builds.org/). APK başına aşağıdakileri içeren bir JSON dosyası vardır\n" "kontrol edildi, burada dosya adı şu kalıbı izler\n" "`_.apk.json`, örneğin:\n" "\n" #. type: Plain text #: _docs/All_our_APIs.md #, fuzzy, no-wrap #| msgid "" #| "_verification.f-droid.org_ is a rebuilder that rebuilds the official releases\n" #| "from _f-droid.org_, then checks to see if they were [reproducibly\n" #| "built](https://reproducible-builds.org/). There is a JSON file per APK that has\n" #| "been checked, where the filename follows the pattern\n" #| "`_.apk.json`, for example:\n" #| "\n" msgid "" "Then there is a JSON file per APK that has been checked, where the filename\n" "follows the pattern `_.apk.json`, for example:\n" "\n" msgstr "" "_verification.f-droid.org_ resmi sürümleri yeniden oluşturan bir yeniden oluşturucudur\n" " _f-droid.org_ adresinden kontrol eder, ardından [tekrarlanabilir şekilde\n" "yapılmış](https://reproducible-builds.org/). APK başına aşağıdakileri içeren bir JSON dosyası vardır\n" "kontrol edildi, burada dosya adı şu kalıbı izler\n" "`_.apk.json`, örneğin:\n" "\n" #. type: Plain text #: _docs/All_our_APIs.md msgid "There is also a listing of all the successfully verified APKs: " msgstr "Ayrıca başarıyla doğrulanmış tüm APK'ların bir listesi de bulunmaktadır: " #. type: Title ### #: _docs/All_our_APIs.md #, no-wrap msgid "Binary transparency logs" msgstr "İkili şeffaflık günlükleri" #. type: Plain text #: _docs/All_our_APIs.md #, fuzzy #| msgid "[Binary transparency](https://wiki.mozilla.org/Security/Binary_Transparency) is the idea that all released packages should be logged as they are published. This provides a way to check if a given binary was produced by the publisher, or came from somewhere else, e.g. as an exploit. _fdroidserver_ has built in tools for managing a binary transparency log of the index files as part of the release process. This has been enabled on the Guardian Project repo: " msgid "[Binary transparency](https://wiki.mozilla.org/Security/Binary_Transparency) is the idea that all released packages should be logged as they are published. This provides a way to check if a given binary was produced by the publisher, or came from somewhere else, e.g. as an exploit. _fdroidserver_ has built in tools for managing a binary transparency log of the index files as part of the release process. This has been enabled on _f-droid.org_: " msgstr "[İkili şeffaflık](https://wiki.mozilla.org/Security/Binary_Transparency), yayınlanan tüm paketlerin yayınlandıkları anda kaydedilmesi gerektiği fikridir. Bu, belirli bir ikilinin yayıncı tarafından üretilip üretilmediğini veya başka bir yerden, örneğin bir istismar olarak gelip gelmediğini kontrol etmenin bir yolunu sağlar. _fdroidserver_, yayınlama sürecinin bir parçası olarak dizin dosyalarının ikili şeffaflık günlüğünü yönetmek için yerleşik araçlara sahiptir. Bu, Guardian Projesi deposunda etkinleştirilmiştir: " #. type: Plain text #: _docs/All_our_APIs.md msgid "Since Gradle and the Google Android Tools team does not publish one, F-Droid has done it. The basic API is a JSON file with a listing of all URLs known to have be published. Each URL then contains a list of SHA-256 checksums that the log process has seen. There are also other files tracked, based on what the publisher provides." msgstr "Gradle ve Google Android Araçları ekibi bir tane bile yayınlamadığından, F-Droid bunu yaptı. Temel API, yayınlandığı bilinen tüm URL'lerin listesini içeren bir JSON dosyasıdır. Her URL daha sonra günlük işleminin gördüğü SHA-256 sağlama toplamlarının bir listesini içerir. Yayıncının sağladıklarına bağlı olarak izlenen başka dosyalar da vardır." #. type: Bullet: '* ' #: _docs/All_our_APIs.md msgid "" msgstr "" #. type: Bullet: '* ' #: _docs/All_our_APIs.md msgid "" msgstr "" #. type: Title ### #: _docs/All_our_APIs.md #, no-wrap msgid "issuebot" msgstr "issuebot" #. type: Plain text #: _docs/All_our_APIs.md msgid "[_issuebot_](https://gitlab.com/fdroid/issuebot#json-rest-api) runs on app merge requests and requests for packaging (RFP) to provide information to reviewers about the app. Much of that information is also published in JSON format. Each report is made of data from modules that run on a specific app. There are two entry points:" msgstr "[_issuebot_](https://gitlab.com/fdroid/issuebot#json-rest-api) uygulama birleştirme talepleri ve paketleme talepleri (RFP) üzerinde çalışarak inceleme yapanlara uygulama hakkında bilgi verir. Bu bilgilerin çoğu JSON formatında da yayınlanmaktadır. Her bir rapor, belli bir uygulama üzerinde çalışan modüllerden elde edilen verilerden oluşur. İki tane giriş noktası vardır:" #. type: Bullet: '* ' #: _docs/All_our_APIs.md msgid "" msgstr "" #. type: Bullet: '* ' #: _docs/All_our_APIs.md msgid "" msgstr "" #. type: Title ### #: _docs/All_our_APIs.md #, no-wrap msgid "Metrics" msgstr "Ölçümler" #. type: Plain text #: _docs/All_our_APIs.md msgid "[Usage data]({{ site.baseurl }}/{% post_url 2019-04-15-privacy-preserving-analytics %}) is gathered from [various F-Droid websites](https://fdroid.gitlab.io/metrics/) and published with no personally identifiable information (PII). It is published with one JSON file per-week, with a JSON index file per website. For example, here is a week of search metrics: " msgstr "[Kullanım verileri]({{ site.baseurl }}/{% post_url 2019-04-15-privacy-preserving-analytics %})[çeşitli F-Droid web sitelerinden](https://fdroid.gitlab.io/metrics/) toplanır ve kişisel olarak tanımlanabilir bilgiler (PII) olmadan yayınlanır. Web sitesi başına bir JSON dizin dosyası ile her hafta bir JSON dosyası ile yayınlanır. Örneğin, burada bir haftalık arama ölçümleri yer almaktadır: " #. type: Plain text #: _docs/All_our_APIs.md #, no-wrap msgid "" "Though not really an API, the mirror does provide some metrics:\n" "https://ftp.fau.de/cgi-bin/show-ftp-stats.cgi\n" msgstr "" "Tam anlamıyla bir API olmasa da, yansısı bazı ölçümler sağlamaktadır:\n" "https://ftp.fau.de/cgi-bin/show-ftp-stats.cgi\n" #. type: Title ### #: _docs/All_our_APIs.md #, no-wrap msgid "Git stats" msgstr "Git istatistikleri" #. type: Plain text #: _docs/All_our_APIs.md msgid "Each _git_ repo has lots of interesting metadata. The _GitStats_ project generates nice charts from that data. This is not quite an API, but it is related since it is using public project data. Pre-generated pages for each of the central git repos are visible here: ." msgstr "Her _git_ deposunun birçok ilginç üst verisi vardır. GitStats_ projesi bu verilerden güzel grafikler oluşturur. Bu tam olarak bir API değildir, ancak genel proje verilerini kullandığı için ilgilidir. Merkezi git depolarının her biri için önceden oluşturulmuş sayfalar burada görülebilir: ." #. type: YAML Front Matter: title #: _docs/Anti-Features.md #, no-wrap msgid "Anti-Features" msgstr "Karşıt-Özellikler" #. type: Plain text #: _docs/Anti-Features.md msgid "When reviewing apps to accept, F-Droid takes the user's point of view, first and foremost. We start with [strict acceptance criteria](../Inclusion_Policy) based on the principles of free software and user control. There are some things about an app that might not block it from inclusion, but many users might not want to accept them. For these kinds of things, F-Droid has a defined set of Anti-Features. Apps can then be marked with these Anti-Features so users can clearly choose whether the app is still acceptable." msgstr "F-Droid, kabul edilecek uygulamaları gözden geçirirken her şeyden önce kullanıcının bakış açısını dikkate alır. Özgür yazılım ve kullanıcı —kontrolü ilkelerine dayanan [katı kabul kriterleri](../Inclusion_Policy) ile başlar. Bir uygulamayla ilgili bazı şeyler o uygulamanın dahil edilmesini engellemeyebilir, ancak birçok kullanıcı bunları kabul etmek istemeyebilir. Bu tür şeyler için F-Droid'in tanımlanmış bir Karşıt-Özellikler kümesi vardır. Uygulamalar daha sonra bu Karşıt-Özellikler ile işaretlenebilir, böylece kullanıcılar uygulamanın hala kabul edilebilir olup olmadığını açıkça seçebilir." #. type: Plain text #: _docs/Anti-Features.md msgid "Anti-Features are organized into \"flags\" that packagers can use to mark apps, warning of possibly undesirable behaviour from the user's perspective, often serving the interest of the developer or a third party. Free software packages do not exist in a bubble. For one piece of software to be useful, it usually has to integrate with some other software. Therefore, users that want free software also want to know if an app depends on or promotes any proprietary software. Sometimes, there are concepts in Anti-Features that overlap with tactics used by third parties against users. F-Droid always marks Anti-Features from the user's point of view. For example, [NSFW](#NSFW) might be construed as similar to a censor's blocklists, but in our case, the focus is on the user's context and keeping the user in control." msgstr "Karşıt-Özellikler, paketleyicilerin uygulamaları işaretlemek için kullanabilecekleri \"işaretler\" şeklinde düzenlenerek, kullanıcı açısından istenmeyen davranışlar konusunda uyarıda bulunur ve genellikle geliştiricinin veya üçüncü bir tarafın çıkarına hizmet eder. Özgür yazılım paketleri bir balonun içinde var olmazlar. Bir yazılımın faydalı olabilmesi için genellikle başka bir yazılımla entegre olması gerekir. Bu nedenle, özgür yazılım isteyen kullanıcılar, bir uygulamanın herhangi bir tescilli yazılıma bağlı olup olmadığını veya bu yazılımı destekleyip desteklemediğini de bilmek isterler. Bazen,Karşıt-Özellikler'de üçüncü tarafların kullanıcılara karşı kullandığı taktiklerle örtüşen kavramlar vardır. F-Droid her zaman kullanıcının bakış açısından Karşıt-Özellikleri işaretler. Örneğin, [NSFW](#NSFW) bir sansürcünün engelleme listelerine benzer olarak yorumlanabilir, ancak bizim durumumuzda odak noktası kullanıcının bağlamı ve kullanıcının kontrolü elinde tutmasıdır." #. type: Plain text #: _docs/Anti-Features.md msgid "You will see our Anti-Features in action when viewing the details of any app containing one or more Anti-Features, whether in the F-Droid client or on this website. The F-Droid client also provides settings to hide apps with certain Anti-Features." msgstr "" #. type: Title ## #: _docs/Anti-Features.md #, no-wrap msgid "List of Anti-Features" msgstr "Karşıt-Özellikler Listesi" #. type: Plain text #: _docs/Anti-Features.md msgid "F-Droid currently uses this list of Anti-Features for labeling apps we are shipping:" msgstr "F-Droid şu anda gönderdiğimiz uygulamaları etiketlemek için bu Karşıt-Özellikler listesini kullanıyor:" #. type: Bullet: '* ' #: _docs/Anti-Features.md msgid "[Ads](#Ads) - advertising" msgstr "[Reklamlar](#Ads) - reklamcılık" #. type: Bullet: '* ' #: _docs/Anti-Features.md msgid "[Tracking](#Tracking) - tracks and/or reports your activity to somewhere, even when it can be turned off" msgstr "[İzleme](#Tracking) - kapatılabilse bile etkinliğinizi izler ve/veya bir yere raporlar" #. type: Bullet: '* ' #: _docs/Anti-Features.md msgid "[Non-Free Network Services](#NonFreeNet) - promotes or depends entirely on a non-free network service" msgstr "[Özgür Olmayan Ağ Hizmetleri](#NonFreeNet) - tamamen özgür olmayan bir ağ hizmetini destekler veya buna bağlıdır" #. type: Bullet: '* ' #: _docs/Anti-Features.md msgid "[Non-Free Addons](#NonFreeAdd) - promotes other non-libre apps or plugins" msgstr "[Özgür Olmayan Eklentiler](#NonFreeAdd) - özgür olmayan diğer uygulamaları veya eklentileri destekler" #. type: Bullet: '* ' #: _docs/Anti-Features.md msgid "[Non-Free Dependencies](#NonFreeDep) - needs a non-libre app to work (e.g. Google Maps, Market)" msgstr "[Özgür Olmayan Bağımlılıklar](#NonFreeDep) - çalışmak için özgür olmayan bir uygulamaya ihtiyaç duyar (ör. Google Haritalar, Market)" #. type: Bullet: '* ' #: _docs/Anti-Features.md msgid "[NSFW](#NSFW) - contains content that the user may not want to be publicized or visible everywhere" msgstr "[NSFW](#NSFW) - kullanıcının her yerde yayınlanmasını veya görünmesini istemeyebileceği içerikler içerir" #. type: Bullet: '* ' #: _docs/Anti-Features.md msgid "[Upstream Non-Free](#UpstreamNonFree) - upstream source code is not libre, and this version has those parts replaced or rewritten" msgstr "[Yukarı Akışı Özgür Olmayan](#UpstreamNonFree) - yukarı akış kaynak kodu özgür değildir ve bu sürümde bu kısımlar değiştirilmiş veya yeniden yazılmıştır" #. type: Bullet: '* ' #: _docs/Anti-Features.md msgid "[Non-Free Assets](#NonFreeAssets) - non-libre media in things that are not code (e.g. images, sound, music, 3D-models, or video)" msgstr "[Özgür Olmayan Değerler](#NonFreeAssets) - kod olmayan şeylerde serbest olmayan medya (örneğin, görüntüler, ses, müzik, 3B modeller veya video)" #. type: Bullet: '* ' #: _docs/Anti-Features.md msgid "[Known Vulnerability](#KnownVuln) - known security vulnerability" msgstr "[Bilinen Güvenlik Açığı](#KnownVuln) - bilinen güvenlik açığı" #. type: Bullet: '* ' #: _docs/Anti-Features.md msgid "[Disabled Algorithm](#DisabledAlgorithm) - signed using an unsafe algorithm" msgstr "[Devre Dışı Bırakılmış Algoritma](#DisabledAlgorithm) - güvenli olmayan bir algoritma kullanılarak imzalanmış" #. type: Bullet: '* ' #: _docs/Anti-Features.md msgid "[No Source Since](#NoSourceSince) - source code no longer available, making new releases impossible" msgstr "[Kaynak Yok](#NoSourceSince) - kaynak kodu artık mevcut değil, bu da yeni sürümleri imkansız hale getiriyor" #. type: Plain text #: _docs/Anti-Features.md msgid "Here's a complete [list of all apps in F-Droid containing Anti-Features](https://monitor.f-droid.org/anti-features)." msgstr "İşte tam bir [F-Droid'de Karşıt-Özellikler içeren tüm uygulamaların listesi](https://monitor.f-droid.org/anti-features)." #. type: Title ### #: _docs/Anti-Features.md #, no-wrap msgid "Ads" msgstr "Reklamlar" #. type: Plain text #: _docs/Anti-Features.md msgid "This Anti-Feature is applied to an app that contains advertising." msgstr "Bu Karşı Özellik, reklam içeren bir uygulamaya uygulanır." #. type: Plain text #: _docs/Anti-Features.md msgid "Note that most applications that contain advertising are not Free Software, because they use proprietary software (e.g. AdMob) to provide that advertising. Those apps will not be found in the repo at all, so the only time you would see this Anti-Feature applied would be an app that contains advertising without using Non-Free Software to do it." msgstr "Reklam içeren çoğu uygulamanın Özgür Yazılım olmadığını unutmayın, çünkü bu reklamları sağlamak için tescilli yazılımlar (örneğin AdMob) kullanırlar. Bu uygulamalar depoda hiç bulunmayacaktır, bu nedenle bu Karşı Özelliğin uygulandığını göreceğiniz tek zaman, bunu yapmak için Özgür Olmayan Yazılım kullanmadan reklam içeren bir uygulama olacaktır." #. type: Plain text #: _docs/Anti-Features.md msgid "Here's the list of [apps with Ads](https://monitor.f-droid.org/anti-feature/Ads)." msgstr "İşte [reklam içeren uygulamaların](https://monitor.f-droid.org/anti-feature/Ads) listesi." #. type: Title ### #: _docs/Anti-Features.md #, no-wrap msgid "NSFW" msgstr "NSFW" #. type: Plain text #: _docs/Anti-Features.md msgid "This Anti-Feature is applied to an app that contains content that the user may not want to be publicized or visible everywhere. The marked app may contain nudity, profanity, slurs, violence, intense sexuality, political incorrectness, or other potentially disturbing subject matter. This is especially relevant in environments like workplaces, schools, religious and family settings. The name comes from the Internet term \"Not safe for work\"." msgstr "Bu Karşı Özellik, kullanıcının her yerde yayınlanmasını veya görünmesini istemeyebileceği içerikler barındıran bir uygulamaya uygulanır. İşaretli uygulama çıplaklık, küfür, hakaret, şiddet, yoğun cinsellik, siyasi yanlışlık veya diğer potansiyel olarak rahatsız edici konular içerebilir. Bu durum özellikle işyerleri, okullar, dini ve aile ortamları gibi ortamlar için geçerlidir. Bu isim internetteki \"İş için güvenli değil\" teriminden gelmektedir." #. type: Plain text #: _docs/Anti-Features.md msgid "Here's the list of [apps with NSFW](https://monitor.f-droid.org/anti-feature/NSFW)." msgstr "İşte [NSFW içeren uygulamaların](https://monitor.f-droid.org/anti-feature/NSFW) listesi." #. type: Title ### #: _docs/Anti-Features.md #, no-wrap msgid "Tracking" msgstr "İzleme" #. type: Plain text #: _docs/Anti-Features.md msgid "This Anti-Feature is applied to apps that track you and/or report your activity to somewhere, either without your permission or by default (i.e. you'd have to actively seek out an option to disable it)." msgstr "Bu Karşı Özellik, izniniz olmadan veya varsayılan olarak (yani devre dışı bırakmak için aktif olarak bir seçenek aramanız gerekir) sizi izleyen ve/veya etkinliğinizi bir yere bildiren uygulamalara uygulanır." #. type: Plain text #: _docs/Anti-Features.md msgid "Examples of where this Anti-Feature might be applied:" msgstr "Bu Karşı Özellik'in uygulanabileceği yerlere örnekler:" #. type: Bullet: '* ' #: _docs/Anti-Features.md msgid "Sending crash reports without your knowledge or permission" msgstr "Bilginiz veya izniniz olmadan hata raporları göndermek" #. type: Bullet: '* ' #: _docs/Anti-Features.md msgid "Checking for updates without your knowledge or permission" msgstr "Bilginiz veya izniniz olmadan güncellemeleri kontrol etme" #. type: Plain text #: _docs/Anti-Features.md msgid "Examples of where it would not be applied - any of the above, if the functionality is opt-in (i.e. you are asked before it happens) and disabled by default. Enabling it should then also require informed consent, i.e. requiring a privacy policy similar to GDPR, and avoid collecting personal data (PII) as far as possible." msgstr "Uygulanmayacağı yerlere örnekler - işlevsellik isteğe bağlıysa (yani gerçekleşmeden önce size soruluyorsa) ve varsayılan olarak devre dışı bırakılmışsa yukarıdakilerden herhangi biri. Etkinleştirmek için ayrıca bilgilendirilmiş onay, yani GDPR'ye benzer bir gizlilik politikası gerekmeli ve kişisel verilerin (PII) toplanmasından mümkün olduğunca kaçınılmalıdır." #. type: Plain text #: _docs/Anti-Features.md msgid "Note that frequently app tracking is implemented using proprietary software, e.g. Google Analytics or Flurry. Apps containing these proprietary libraries will **not** be found in the F-Droid repo." msgstr "Uygulama izlemenin sıklıkla Google Analytics veya Flurry gibi tescilli yazılımlar kullanılarak uygulandığını unutmayın. Bu tescilli kütüphaneleri içeren uygulamalar F-Droid deposunda **bulunmayacaktır**." #. type: Plain text #: _docs/Anti-Features.md msgid "Here's the list of [apps with Tracking](https://monitor.f-droid.org/anti-feature/Tracking)." msgstr "İşte [İzleme içeren uygulamaların](https://monitor.f-droid.org/anti-feature/Tracking) listesi." #. type: Title ### #: _docs/Anti-Features.md #, no-wrap msgid "Non-Free Network Services" msgstr "Özgür Olmayan Ağ Hizmetleri" #. type: Plain text #: _docs/Anti-Features.md msgid "This Anti-Feature is applied to apps that promote or depend entirely on a Non-Free network service which is impossible, or not easy to replace. Replacement requires changes to the app or service. This antifeature would not apply, if there is a simple configuration option that allows pointing the app to a running instance of an alternative, publicly available, self-hostable, free software server solution." msgstr "Bu karşı özellik, değiştirilmesi imkansız veya kolay olmayan özgür olmayan bir ağ hizmetini destekleyen veya tamamen buna bağlı olan uygulamalara uygulanır. Değiştirme, uygulama veya hizmette değişiklik yapılmasını gerektirir. Uygulamanın alternatif, halka açık, kendi kendine barındırılabilir, özgür yazılım sunucu çözümünün çalışan bir örneğine yönlendirilmesini sağlayan basit bir yapılandırma seçeneği varsa, bu özellik uygulanmayacaktır." #. type: Plain text #: _docs/Anti-Features.md msgid "Here's the list of [apps with Non-Free Network Services](https://monitor.f-droid.org/anti-feature/NonFreeNet)." msgstr "İşte [Özgür Ağ Hizmetleri Olmayan Uygulamalar](https://monitor.f-droid.org/anti-feature/NonFreeNet) listesi." #. type: Title ### #: _docs/Anti-Features.md #, no-wrap msgid "Non-Free Addons" msgstr "Özgür Olmayan Eklentiler" #. type: Plain text #: _docs/Anti-Features.md msgid "This Anti-Feature is applied to apps that, although Free Software themselves, promote other Non-Free applications or plugins." msgstr "Bu Karşı Özellik, kendileri Özgür Yazılım olmasına rağmen, Özgür Olmayan diğer uygulamaları veya eklentileri tanıtan uygulamalara uygulanır." #. type: Plain text #: _docs/Anti-Features.md msgid "Here's the list of [apps with Non-Free Addons](https://monitor.f-droid.org/anti-feature/NonFreeAdd)." msgstr "İşte [Özgür Olmayan Eklentilere Sahip Uygulamalar](https://monitor.f-droid.org/anti-feature/NonFreeAdd) listesi." #. type: Title ### #: _docs/Anti-Features.md #, no-wrap msgid "Non-Free Dependencies" msgstr "Özgür Olmayan Bağımlılıklar" #. type: Plain text #: _docs/Anti-Features.md msgid "This Anti-Feature is applied to apps that require things that are not Free Software in order to run." msgstr "Bu Karşı Özellik, çalışması için Özgür Yazılım olmayan şeylere ihtiyaç duyan uygulamalara uygulanır." #. type: Plain text #: _docs/Anti-Features.md msgid "This does not mean that proprietary software is included in the app, but for example, it may depend on other software already being installed on your device. A common example would be an app that doesn't run, or is not useful, unless you have Google Maps installed." msgstr "Bu tescilli yazılımın uygulamaya dahil edildiği anlamına gelmez, ancak örneğin, cihazınızda zaten yüklü olan diğer yazılımlara bağlı olabilir. Genel bir örnek olarak, Google Haritalar yüklü olmadığı sürece çalışmayan veya kullanışlı olmayan bir uygulama verilebilir." #. type: Plain text #: _docs/Anti-Features.md msgid "Here's the list of [apps with Non-Free Dependencies](https://monitor.f-droid.org/anti-feature/NonFreeDep)." msgstr "İşte [Özgür Olmayan Bağımlılıklara sahip uygulamalar](https://monitor.f-droid.org/anti-feature/NonFreeDep) listesi." #. type: Title ### #: _docs/Anti-Features.md #, no-wrap msgid "Upstream Non-Free" msgstr "Yukarı Akış Özgür Olmayan" #. type: Plain text #: _docs/Anti-Features.md msgid "This Anti-Feature is applied to apps where the upstream source code includes proprietary software by default in their own releases." msgstr "Bu Karşı Özellik, yukarı akış kaynak kodunun kendi sürümlerinde varsayılan olarak tescilli yazılım içerdiği uygulamalara uygulanır." #. type: Plain text #: _docs/Anti-Features.md msgid "This does not mean that proprietary software is included in the app. Most likely, the F-Droid build has been patched in some way to remove the Non-Free code/libraries, and/or some functionality may be missing. The app's description will usually go into more detail about this." msgstr "Bu, uygulamaya tescilli yazılım dahil edildiği anlamına gelmez. Büyük olasılıkla F-Droid derlemesi, Özgür Olmayan kodu/kütüphaneleri kaldırmak için bir şekilde yamalanmıştır ve/veya bazı işlevler eksik olabilir. Uygulamanın açıklaması genellikle bu konuda daha fazla ayrıntıya girecektir." #. type: Plain text #: _docs/Anti-Features.md msgid "In our experience, where the upstream developer includes Non-Free libraries, sooner or later they will include more Non-Free libraries, or other Anti-Features. Frequently they become impossible to maintain/update in F-Droid. If there is an alternative, it is recommended that you avoid applications with this Anti-Feature if future updates are important to you." msgstr "Deneyimlerimize göre, yukarı akış geliştiricisinin Özgür Olmayan kütüphaneler içerdiği yerlerde, er ya da geç daha fazla Özgür Olmayan kütüphaneler veya diğer Karşıt-Özellikler içereceklerdir. Sıklıkla F-Droid'de bakım/güncelleme yapmak imkansız hale gelir. Bir alternatif varsa, gelecekteki güncellemeler sizin için önemliyse bu Karşıt-Özellik içeren uygulamalardan kaçınmanız önerilir." #. type: Plain text #: _docs/Anti-Features.md msgid "Here's the list of [apps with Upstream Non-Free](https://monitor.f-droid.org/anti-feature/UpstreamNonFree)." msgstr "İşte [Yukarı Akışı Özgür Olmayan uygulamalar](https://monitor.f-droid.org/anti-feature/UpstreamNonFree) listesi." #. type: Title ### #: _docs/Anti-Features.md #, no-wrap msgid "Non-Free Assets" msgstr "Özgür Olmayan Değerler" #. type: Plain text #: _docs/Anti-Features.md msgid "This Anti-Feature is applied to apps that contain and make use of Non-Free assets. The most common case is apps using artwork - images, sounds, music, etc. - under a non-commercial license." msgstr "Bu Karşı-Özellik, Özgür Olmayan değerler içeren ve kullanan uygulamalara uygulanır. En yaygın durum, ticari olmayan bir lisans altında sanat eserleri (resimler, sesler, müzik vb.) kullanan uygulamalardır. - ticari olmayan bir lisans altında." #. type: Plain text #: _docs/Anti-Features.md msgid "Here's the list of [apps with Non-Free Assets](https://monitor.f-droid.org/anti-feature/NonFreeAssets)." msgstr "İşte [Özgür Olmayan Varlıklara sahip uygulamalar](https://monitor.f-droid.org/anti-feature/NonFreeAssets) listesi." #. type: Title ### #: _docs/Anti-Features.md #, no-wrap msgid "Known Vulnerability" msgstr "Bilinen Güvenlik Açığı" #. type: Plain text #: _docs/Anti-Features.md msgid "This Anti-Feature is applied to apps with a known security vulnerability, found by one of the scanners in _fdroidserver_." msgstr "Bu Karşıt-Özellik, _fdroidserver_ adresindeki tarayıcılardan biri tarafından bulunan bilinen bir güvenlik açığına sahip uygulamalara uygulanır." #. type: Plain text #: _docs/Anti-Features.md msgid "Here's the list of [apps with Known Vulnerabilities](https://monitor.f-droid.org/anti-feature/KnownVuln)." msgstr "İşte [Bilinen Güvenlik Açıklarına Sahip Uygulamalar](https://monitor.f-droid.org/anti-feature/KnownVuln) listesi." #. type: Title ### #: _docs/Anti-Features.md #, no-wrap msgid "Disabled Algorithm" msgstr "Devre Dışı Bırakılan Algoritma" #. type: Plain text #: _docs/Anti-Features.md msgid "This Anti-Feature is applied to apps that were signed using a signature algorithm that is considered outdated or unsafe." msgstr "Bu Karşıt-Özellik, güncelliğini yitirmiş veya güvenli olmadığı düşünülen bir imza algoritması kullanılarak imzalanmış uygulamalara uygulanır." #. type: Plain text #: _docs/Anti-Features.md msgid "Here's the list of [apps signed with Disabled Algorithms](https://monitor.f-droid.org/anti-feature/DisabledAlgorithm)." msgstr "İşte [Devre Dışı Bırakılmış Algoritmalar ile imzalanan uygulamalar](https://monitor.f-droid.org/anti-feature/DisabledAlgorithm) listesi." #. type: Title ### #: _docs/Anti-Features.md #, no-wrap msgid "No Source Since" msgstr "Kaynak Yok" #. type: Plain text #: _docs/Anti-Features.md msgid "The upstream source for this app is no longer available. Either the app went proprietary, the source repository was dropped, or it has moved to a location currently not known to us. This means there will not be further updates unless the source reappears." msgstr "Bu uygulamanın yukarı akış kaynağı artık mevcut değil. Uygulama ya tescilli hale geldi, kaynak deposu bırakılmış ya da şu anda bizim bilmediğimiz bir yere taşındı. Bu kaynak yeniden ortaya çıkmadığı sürece başka güncelleme yapılmayacağı anlamına gelir." #. type: Plain text #: _docs/Anti-Features.md msgid "Here's a list of [apps with No Source](https://monitor.f-droid.org/anti-feature/NoSourceSince)." msgstr "İşte [Kaynağı Olmayan Uygulamalar](https://monitor.f-droid.org/anti-feature/NoSourceSince) listesi." #. type: Title ## #: _docs/Anti-Features.md #, no-wrap msgid "Reporting Anti-Features" msgstr "Karşıt-Özellikler'in Bildirilmesi" #. type: Plain text #: _docs/Anti-Features.md msgid "While our package maintainers are working hard to find all Anti-Features and bring them to your attention, some might remain unnoticed or slip in with an app update. Should you discover that an app contains an Anti-Feature F-Droid is not aware of, please report it. You can submit them by E-Mail to [team@f-droid.org](mailto:team@f-droid.org) or open an issue here: [gitlab.com/fdroid/fdroiddata/issues](https://gitlab.com/fdroid/fdroiddata/issues)." msgstr "Paket sorumlularımız tüm Karşıt-Özellikleri bulmak ve dikkatinize sunmak için çok çalışıyor olsa da, bazıları fark edilmeyebilir veya bir uygulama güncellemesiyle içeri sızabilir. Bir uygulamanın F-Droid'in farkında olmadığı bir Karşıt-Özellik içerdiğini fark ederseniz, lütfen bunu bildirin. Bunları E-Posta ile [team@f-droid.org](mailto:team@f-droid.org) adresine gönderebilir veya burada sorun hakkında bir konu açabilirsiniz: [gitlab.com/fdroid/fdroiddata/issues](https://gitlab.com/fdroid/fdroiddata/issues)." #. type: Title ## #: _docs/Anti-Features.md #, no-wrap msgid "Origins of the F-Droid definition of Anti-Features" msgstr "Karşıt-Özelliklerin F-Droid tanımının kökenleri" #. type: Plain text #: _docs/Anti-Features.md msgid "The Free Software Foundation (FSF) also has a similar idea, and it is also known as \"anti-features\". [\"Anti-features are sold to customers as features but are fundamental or unavoidable aspects of systems that can only be removed or withheld through technological effort\"](https://www.fsf.org/blogs/community/antifeatures). Another way of thinking about Anti-Features is that they are [\"functionality that a technology developer will charge users to not include\"](https://www.fsf.org/bulletin/2007/fall/antifeatures/). The F-Droid definition was initially inspired by FSF's, but our definition has evolved over the years into something different." msgstr "Özgür Yazılım Vakfı (FSF) da benzer bir fikre sahiptir ve \"karşıt-özellikler\" olarak da bilinir. [\"Karşıt-özellikler müşterilere özellik olarak satılır, ancak sistemlerin yalnızca teknolojik çabayla kaldırılabilen veya saklanabilen temel veya kaçınılmaz yönleridir\"](https://www.fsf.org/blogs/community/antifeatures). Karşıt-Özellikler hakkında düşünmenin bir başka yolu, [\"bir teknoloji geliştiricisinin kullanıcıları dahil etmemeleri için ücretlendireceği işlevsellik\"](https://www.fsf.org/bulletin/2007/fall/antifeatures/). F-Droid tanımı başlangıçta FSF'lerden ilham aldı, ancak tanımımız yıllar içinde farklı bir şeye dönüştü." #. type: YAML Front Matter: title #: _docs/Building_Applications.md #, no-wrap msgid "Building Applications" msgstr "Uygulamalar Derleniyor" #. type: Plain text #: _docs/Building_Applications.md msgid "Instead of (or as well as) including binary APKs from external sources in a repository, you can build them directly from the source code." msgstr "Bir depodaki harici kaynaklardan gelen binary APK'leri dahil etmek (veya bunun yanı sıra) yerine, bunları doğrudan kaynak kodundan oluşturabilirsiniz." #. type: Plain text #: _docs/Building_Applications.md msgid "Using this method, it is is possible to verify that the application builds correctly, corresponds to the source code, and contains only free software. Unfortunately, in the Android world, it seems to be very common for an application supplied as a binary APK to present itself as Free Software when in fact some if not all of the following is true:" msgstr "Bu yöntemi kullanarak, uygulamanın doğru kurulduğunu, kaynak koduna karşılık geldiğini ve yalnızca özgür yazılım içerdiğini doğrulamak mümkündür. Ne yazık ki, Android dünyasında, bir binary APK olarak sağlanan bir uygulamanın, bazıları aşağıdakilerin tümü doğru değilse, aslında bir kısmı Özgür Yazılım olarak sunması çok yaygın gibi görünmektedir:" #. type: Bullet: '1. ' #: _docs/Building_Applications.md msgid "The source code (either for a particular version, or even all versions!) is unavailable or incomplete." msgstr "Kaynak kod (belirli bir sürüm için, hatta tüm sürümler!) kullanılamıyor veya eksik." #. type: Bullet: '2. ' #: _docs/Building_Applications.md msgid "The source code is not capable of producing the actual binary supplied." msgstr "" #. type: Bullet: '3. ' #: _docs/Building_Applications.md msgid "The ’source code’ contains binary files of unknown origin, or with proprietary licenses." msgstr "" #. type: Plain text #: _docs/Building_Applications.md msgid "For this reason, source-built applications are the preferred method for the main F-Droid repository, although occasionally for technical or historical reasons, exceptions are made to this policy." msgstr "" #. type: Plain text #: _docs/Building_Applications.md msgid "When building applications from source, it should be noted that you will be signing them (all APK files must be signed to be installable on Android) with your own key. When an application is already installed on a device, it is not possible to upgrade it in place to a new version signed with a different key without first uninstalling the original. This may present an inconvenience to users, as the process of uninstalling loses any data associated with the previous installation." msgstr "Uygulamaları kaynağından oluştururken, bunları kendi anahtarınızla imzalayacağınız (tüm APK dosyalarının Android'e yüklenebilmesi için imzalanması gerekir) göz önünde bulundurulmalıdır. Bir uygulama cihaz üzerinde zaten yüklüyse, orijinalini kaldırmadan farklı bir anahtarla imzalanmış yeni bir sürüme yükseltmek mümkün değildir. Kaldırma işlemi önceki yüklemeyle ilişkili tüm verileri kaybettiğinden, bu durum kullanıcılara bir rahatsızlık verebilir." #. type: Plain text #: _docs/Building_Applications.md msgid "The process for managing a repository for built-from-source applications is very similar to that described in the Simple Binary Repository chapter, except now you need to:" msgstr "" #. type: Bullet: '1. ' #: _docs/Building_Applications.md msgid "Include Build entries in the metadata files." msgstr "" #. type: Bullet: '2. ' #: _docs/Building_Applications.md msgid "Run `fdroid build` to build any applications that are not already built." msgstr "" #. type: Bullet: '3. ' #: _docs/Building_Applications.md msgid "Run `fdroid publish` to finalise packaging and sign any APKs that have been built." msgstr "" #. type: Title ### #: _docs/Building_Applications.md #, no-wrap msgid "App data directory aka _fdroiddata_" msgstr "" #. type: Plain text #: _docs/Building_Applications.md msgid "To do anything, you’ll need at least one repository data directory. It’s from this directory that you run the `fdroid` command to perform all repository management tasks. You can either create a brand new one, or grab a copy of the data used by the main F-Droid repository:" msgstr "" #. type: Fenced code block (bash) #: _docs/Building_Applications.md #, no-wrap msgid "git clone https://gitlab.com/fdroid/fdroiddata.git\n" msgstr "git clone https://gitlab.com/fdroid/fdroiddata.git\n" #. type: Plain text #: _docs/Building_Applications.md msgid "Regardless of the intended usage of the tools, you will always need to set up some basic configuration details. This is done by creating a file called _config.yml_ in the data directory. You should do this by copying the example file (`./examples/config.yml`) from the fdroidserver project to your data directory and then editing according to the instructions within." msgstr "" #. type: Plain text #: _docs/Building_Applications.md msgid "Once configured in this way, all the functionality of the tools is accessed by running the `fdroid` command. Run it on its own to get a list of the available sub-commands." msgstr "" #. type: Plain text #: _docs/Building_Applications.md msgid "You can follow any command with `--help` to get a list of additional options available for that command." msgstr "" #. type: Fenced code block (bash) #: _docs/Building_Applications.md #, no-wrap msgid "fdroid update --help\n" msgstr "fdroid update --help\n" #. type: Title ### #: _docs/Building_Applications.md #, no-wrap msgid "More about `fdroid build`" msgstr "" #. type: Plain text #: _docs/Building_Applications.md msgid "When run without any parameters, `fdroid build` will build any and all versions of applications that you don’t already have in the `repo` directory (or more accurately, the `unsigned` directory). There are various other things you can do. As with all the tools, the `--help` option is your friend, but a few annotated examples and discussion of the more common usage modes follows:" msgstr "" #. type: Plain text #: _docs/Building_Applications.md msgid "To build a single version of a single application, you could run the following:" msgstr "" #. type: Fenced code block (bash) #: _docs/Building_Applications.md #, no-wrap msgid "fdroid build org.fdroid.fdroid:16\n" msgstr "fdroid build org.fdroid.fdroid:16\n" #. type: Plain text #: _docs/Building_Applications.md msgid "This attempts to build version code 16 (which is version 0.25) of the F-Droid client. Many of the tools recognise arguments as packages, allowing their activity to be limited to just a limited set of packages." msgstr "" #. type: Plain text #: _docs/Building_Applications.md msgid "If the build above was successful, two files will have been placed in the `unsigned` directory:" msgstr "" #. type: Fenced code block #: _docs/Building_Applications.md #, no-wrap msgid "" "org.fdroid.fdroid_16.apk\n" "org.fdroid.fdroid_16_src.tar.gz\n" msgstr "" #. type: Plain text #: _docs/Building_Applications.md msgid "The first is the (unsigned) APK. You could sign this with a debug key and push it direct to your device or an emulator for testing. The second is a source tarball containing exactly the source that was used to generate the binary." msgstr "" #. type: Plain text #: _docs/Building_Applications.md msgid "If you were intending to publish these files, you could then run:" msgstr "" #. type: Fenced code block (bash) #: _docs/Building_Applications.md #, no-wrap msgid "fdroid publish\n" msgstr "fdroid publish\n" #. type: Plain text #: _docs/Building_Applications.md msgid "The source tarball would move to the `repo` directory (which is the directory you would push to your web server). A signed and zipaligned version of the APK would also appear there, and both files would be removed from the `unsigned` directory." msgstr "" #. type: Plain text #: _docs/Building_Applications.md msgid "If you’re building purely for the purposes of testing, and not intending to push the results to a repository, at least yet, the `--test` option can be used to direct output to the `tmp` directory instead of `unsigned`. A similar effect could be achieved by simply deleting the output files from `unsigned` after the build, but with the risk of forgetting to do so!" msgstr "" #. type: Plain text #: _docs/Building_Applications.md msgid "Along similar lines (and only in conjunction with `--test`, you can use `--force` to force a build of a Disabled application, where normally it would be completely ignored. Similarly a version that was found to contain ELFs or known Non-Free libraries can be forced to build. See also — _scanignore_ and _scandelete_ in the _Builds_ section." msgstr "" #. type: Plain text #: _docs/Building_Applications.md msgid "If the build was unsuccessful, you can find out why by looking at the output in the _logs/_ directory. If that isn’t illuminating, try building the app the regular way, step by step: android update project, ndk-build, ant debug." msgstr "" #. type: Plain text #: _docs/Building_Applications.md msgid "Note that source code repositories often contain prebuilt libraries. If the app is being considered for the main F-Droid repository, it is important that all such prebuilts are built either via the metadata or by a reputable third party." msgstr "" #. type: Title ### #: _docs/Building_Applications.md #, no-wrap msgid "Running `fdroid build` in your app’s source" msgstr "" #. type: Plain text #: _docs/Building_Applications.md msgid "Another option for using `fdroid build` is to use a metadata file that is included in the app’s source itself, rather than in a _metadata/_ folder with lots of other apps. The _.fdroid.yml_ metadata file should be in the root of your source repo." msgstr "" #. type: Plain text #: _docs/Building_Applications.md msgid "Once you have that setup, you can build the most recent version of the app using the whole F-Droid stack by running:" msgstr "" #. type: Fenced code block (bash) #: _docs/Building_Applications.md #, no-wrap msgid "fdroid build\n" msgstr "fdroid build\n" #. type: Plain text #: _docs/Building_Applications.md msgid "If you want to build every single version, then specify `--all`." msgstr "" #. type: Title ### #: _docs/Building_Applications.md #, no-wrap msgid "Direct Installation" msgstr "" #. type: Plain text #: _docs/Building_Applications.md msgid "You can also build and install directly to a connected device or emulator using the `fdroid install` command. If you do this without passing packages as arguments then all the latest built and signed version available of each package will be installed . In most cases, this will not be what you want to do, so execution will stop straight away. However, you can override this if you’re sure that’s what you want, by using `--all`. Note that currently, no sanity checks are performed with this mode, so if the files in the signed output directory were modified, you won’t be notified." msgstr "" #. type: YAML Front Matter: title #: _docs/Building_a_Signing_Server.md #, no-wrap msgid "Building a Signing Server" msgstr "" #. type: Plain text #: _docs/Building_a_Signing_Server.md msgid "The Android APK signing model sets the expectation that the signing key will be the same for the entire lifetime of the app. That can be seen in the recommended lifetime of an Android signing key: [20+ years](https://developer.android.com/studio/publish/app-signing.html#considerations). On top of that, it is difficult to [migrate an app to a new key](https://guardianproject.info/2015/12/29/how-to-migrate-your-android-apps-signing-key/). Since the signing key is an essential part to preventing APKs from impersonating another, Android signing keys must be kept safe for the entire life of the app." msgstr "" #. type: Plain text #: _docs/Building_a_Signing_Server.md msgid "The F-Droid repo signing keys follow a very similar model: the signing key is the essential way to safely identify an F-Droid repo. So the same considerations apply to F-Droid repo signing keys as to APK signing keys. This also provides some really useful benefits. Since the integrity of the repo index file and the APKs are guaranteed by the repo signature, the files can be delivered via whatever method is most convenient, and their integrity will be automatically verified by the F-Droid client app, the _f-droid.org_ deploy process, and Repomaker." msgstr "" #. type: Plain text #: _docs/Building_a_Signing_Server.md msgid "This means the security burden is shifted from the online, public webserver to a private signing machine. Just keeping that machine out of the public eye goes a long way towards improving security. There are a number of additional measures that can be taken to further improve the security of the signing process. Here are some approaches, starting with the easiest and least security, and going on to more secure setups that require more work to setup and run. Signing is not an resource intensive process, so any machine will work, even a 10 year old, basic laptop. We recommend using a minimal [Debian](https://www.debian.org) install, and rebuilding the machine from scratch." msgstr "" #. type: Title ### #: _docs/Building_a_Signing_Server.md #, no-wrap msgid "Automated Signing Server with HSM" msgstr "" #. type: Plain text #: _docs/Building_a_Signing_Server.md msgid "For a fully automated signing setup, the machine running the signing needs to be online and running. Ideally this machine would have no remote access, at the very least remote access should be very carefully controlled and monitored. A laptop makes it easy to work with even when remote access is disabled, since it provides a built-in keyboard and monitor. If remote access is required, then any basic PC will work fine. Using a Hardware Security Module (HSM) to store the keys prevents them from being stolen if the server is broken into. An attacker could only run the signing process on that server." msgstr "" #. type: Plain text #: _docs/Building_a_Signing_Server.md msgid "Ideally, this machine would only be accessible via Tor. That hides the physical location of the server, and hides the traffic from network. This makes it much harder attackers to find the actual machine to attack." msgstr "" #. type: Plain text #: _docs/Building_a_Signing_Server.md msgid "For the HSM, we recommend using [Nitrokey](https://www.nitrokey.com/) hardware, since they are free software/hardware, and provide a wide range of options. Use a separate machine to put the signing keys on HSM. A good HSM will keep an audit trail of how many signatures have been made, so that information could be used to create an automatic auditing process to raise alarms if too many signatures have been made. That could mean that this server was breached and used to sign unauthorized packages." msgstr "" #. type: Plain text #: _docs/Building_a_Signing_Server.md msgid "Another possibility is to use a setup like [Fedora](https://pagure.io/sigul)'s [Sigul](http://www.devops-blog.net/koji/gpg-signing-rpms-with-sigul-signing-server-koji-integration) that involves three machines." msgstr "" #. type: Title ### #: _docs/Building_a_Signing_Server.md #, no-wrap msgid "Basic laptop dedicated to signing" msgstr "" #. type: Plain text #: _docs/Building_a_Signing_Server.md msgid "Start with a laptop that can be wiped clean and rebuilt from scratch. What is most important is that only the essential software is installed on it, and nothing else. Do not include any browser at all, for example, since that is the most common vector of attack. No remote access setup (e.g. SSH or VNC) should be installed or configured. To sign apps and repos, someone would take out this laptop, connect it to the network, and run the signing process. The signed results can then be published via the network connection. When the signing is complete, the machine can be turned off and disconnected and kept in a safe place." msgstr "" #. type: Plain text #: _docs/Building_a_Signing_Server.md msgid "This could be made quite automatic with some custom scripts. The person running the process would only need to take out the machine, connect it, turn it on, wait until the process completes, then put it all away again." msgstr "" #. type: Title ### #: _docs/Building_a_Signing_Server.md #, no-wrap msgid "Fully offline signing laptop with USB thumb drives" msgstr "" #. type: Plain text #: _docs/Building_a_Signing_Server.md msgid "This process is based on the same basic, stripped down laptop as the previous example. But this time, the networking should be entirely disabled before the install process. For example, it is easy in many laptops to physically remove the WiFi card. Therefore, it makes sense to use a laptop that does not include an ethernet jack, which are usually not possible to remove. Otherwise, blocklisting all kernel modules related to neworking can suffice. Since this machine is fully offline, the extra work of using an HSM is not as important, but it can't hurt to include it." msgstr "" #. type: Plain text #: _docs/Building_a_Signing_Server.md msgid "Download the full \"CD\" or \"DVD\" image of Debian to run the install. Be sure to [verify](https://www.debian.org/CD/verify) the GPG signatures and the SHA-256 hashes. In order to update the offline machine, an \"[apt offline](https://www.debian.org/doc/manuals/apt-offline)\" setup is required." msgstr "" #. type: Plain text #: _docs/Building_a_Signing_Server.md msgid "To be extra careful, all of the software used should be verified. Chromebooks are nice, cheap laptops that run Linux natively. They also use Coreboot for the BIOS." msgstr "" #. type: Bullet: '* ' #: _docs/Building_a_Signing_Server.md msgid "Buy a computer off the shelf with cash, avoid having it shipped, especially across borders" msgstr "" #. type: Bullet: '* ' #: _docs/Building_a_Signing_Server.md msgid "Buy a Debian-supported [Chromebook](https://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices/acer-c720-chromebook) with removeable WiFi hardware, and needs no binary blobs" msgstr "" #. type: Bullet: '* ' #: _docs/Building_a_Signing_Server.md msgid "Install a reproducibly built Coreboot binary" msgstr "" #. type: Bullet: '* ' #: _docs/Building_a_Signing_Server.md msgid "Install from a reproducibly built Debian image, wiping out Chrome OS entirely" msgstr "" #. type: Title ## #: _docs/Building_a_Signing_Server.md #, no-wrap msgid "The Physical Environment" msgstr "" #. type: Plain text #: _docs/Building_a_Signing_Server.md msgid "The last thing to consider is the physical location where signatures happen, and where essential equipment is stored. The signing environment must be physically secure. Otherwise, there is no way to prevent laptops or HSMs from being lost or used to sign inappropriate content. For the offline machines, keeping them in a locked room is a good start. For an online machine, forcing all network traffic and remote access over Tor hides the physical location of the machine from network observers." msgstr "" #. type: Plain text #: _docs/Building_a_Signing_Server.md msgid "For high risk signing keys, using multiple layers of defense is important:" msgstr "" #. type: Bullet: '* ' #: _docs/Building_a_Signing_Server.md msgid "Restricted physical access to HSMs or smart cards" msgstr "" #. type: Bullet: '* ' #: _docs/Building_a_Signing_Server.md msgid "Security cameras" msgstr "" #. type: Bullet: '* ' #: _docs/Building_a_Signing_Server.md msgid "On-site security guards" msgstr "" #. type: Bullet: '* ' #: _docs/Building_a_Signing_Server.md msgid "Visitor logging" msgstr "" #. type: Bullet: '* ' #: _docs/Building_a_Signing_Server.md msgid "A tools-resistant server safe for online code-signing servers" msgstr "" #. type: Plain text #: _docs/Building_a_Signing_Server.md msgid "The signing server should be physically separate from the rest of the infrastructure. And the logs, machine, and network should be periodically audited." msgstr "" #. type: Title ## #: _docs/Building_a_Signing_Server.md #, no-wrap msgid "Difficult decisions" msgstr "" #. type: Plain text #: _docs/Building_a_Signing_Server.md msgid "Ideally all of these practices would be put into place, but each of these security measures comes at a cost of difficulty, expense, and complexity. They can also delay the process of getting regular updates out. So there are risks of implementing too strict security policies, much like the risks of not implementing enough." msgstr "" #. type: YAML Front Matter: title #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "Build Metadata Reference" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "Information used by `fdroid update` to compile the public index comes from several sources:" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "APK, media, etc files in the _repo_ sub-directory" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "per-package \"metadata\" files in the _metadata_ sub-directory" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[localizable texts and graphics](../All_About_Descriptions_Graphics_and_Screenshots#in-the-apps-build-metadata-in-an-fdroiddata-collection) in the _metadata_ subdirectory" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "localizable texts and graphics [embedded in an app's source code](../All_About_Descriptions_Graphics_and_Screenshots#in-the-apps-source-repository)" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "These metadata files are simple, easy to edit text files, always named as the \"package name\" with file type appended. There are a wide range of available fields for adding information to describe packages and/or apps. For all of the fields like _AuthorName_ that apply to all releases of a package/app, the fields use CamelCase starting with an upper case letter. All other fields use camelCase starting with a lower case letter, including per-build fields, localized fields, etc." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "Metadata files are written in [YAML](http://www.yaml.org/start.html) format" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "Note that although the metadata files are designed to be easily read and writable by humans, they are also processed and written by various scripts. They can be automatically cleaned up when necessary. The structure and comments will be preserved correctly, although the order of fields will be standardised. (In the event that the original file was in a different order, comments are considered as being attached to the field following them). In fact, you can standardise all packages in a repository using a single command, without changing the functional content, by running:" msgstr "" #. type: Fenced code block #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "fdroid rewritemeta\n" msgstr "fdroid rewritemeta\n" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "Or just run it on a specific app:" msgstr "" #. type: Fenced code block #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "fdroid rewritemeta org.adaway\n" msgstr "fdroid rewritemeta org.adaway\n" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The following sections describe the fields recognised within the file." msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Categories_](#Categories)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_AuthorName_](#AuthorName)" msgstr "[_Sahibi_](#AuthorName)" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_AuthorEmail_](#AuthorEmail)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_AuthorWebSite_](#AuthorWebSite)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_License_](#License)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_AutoName_](#AutoName)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Name_](#Name)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_WebSite_](#WebSite)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_SourceCode_](#SourceCode)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_IssueTracker_](#IssueTracker)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Translation_](#Translation)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Changelog_](#Changelog)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Donate_](#Donate)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_FlattrID_](#FlattrID)" msgstr "[_FlattrID_](#FlattrID)" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Liberapay_](#Liberapay)" msgstr "[_Liberapay_](#Liberapay)" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_OpenCollective_](#OpenCollective)" msgstr "[_OpenCollective_](#OpenCollective)" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Bitcoin_](#Bitcoin)" msgstr "[_Bitcoin_](#Bitcoin)" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Litecoin_](#Litecoin)" msgstr "[_Litecoin_](#Litecoin)" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Summary_](#Summary)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Description_](#Description)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_MaintainerNotes_](#MaintainerNotes)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_RepoType_](#RepoType)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Repo_](#Repo)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Binaries_](#Binaries)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds_](#Builds)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.versionName_](#build_versionName)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.versionCode_](#build_versionCode)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.commit_](#build_commit)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.disable_](#build_disable)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.subdir_](#build_subdir)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.submodules_](#build_submodules)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.sudo_](#build_sudo)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.timeout_](#build_timeout)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.init_](#build_init)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.oldsdkloc_](#build_oldsdkloc)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.target_](#build_target)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.androidupdate_](#build_androidupdate)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.encoding_](#build_encoding)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.forceversion_](#build_forceversion)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.forcevercode_](#build_forcevercode)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.rm_](#build_rm)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.extlibs_](#build_extlibs)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.srclibs_](#build_srclibs)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.patch_](#build_patch)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.prebuild_](#build_prebuild)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.scanignore_](#build_scanignore)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.scandelete_](#build_scandelete)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.build_](#build_build)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.buildjni_](#build_buildjni)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.ndk_](#build_ndk)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.gradle_](#build_gradle)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.maven_](#build_maven)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.preassemble_](#build_preassemble)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.gradleprops_](#build_gradleprops)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.antcommands_](#build_antcommands)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.output_](#build_output)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.novcheck_](#build_novcheck)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Builds.antifeatures_](#build_antifeatures)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_AllowedAPKSigningKeys_](#AllowedAPKSigningKeys)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_AntiFeatures_](#AntiFeatures)" msgstr "[_KarşıtÖzellikler_](#AntiFeatures)" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_Disabled_](#Disabled)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_RequiresRoot_](#RequiresRoot)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_ArchivePolicy_](#ArchivePolicy)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_UpdateCheckMode_](#UpdateCheckMode)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_UpdateCheckIgnore_](#UpdateCheckIgnore)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_VercodeOperation_](#VercodeOperation)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_UpdateCheckName_](#UpdateCheckName)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_UpdateCheckData_](#UpdateCheckData)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_AutoUpdateMode_](#AutoUpdateMode)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_CurrentVersion_](#CurrentVersion)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_CurrentVersionCode_](#CurrentVersionCode)" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "[_NoSourceSince_](#NoSourceSince)" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_Categories_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "Any number of categories for the application to be placed in. There is no fixed list of categories - both the client and the web site will automatically show any categories that exist in any applications. However, if your metadata is intended for the main F-Droid repository, you should use one of the existing categories (`Connectivity`,`Development`, `Games`,`Graphics`,`Internet`,`Money`,`Multimedia`,`Navigation`,`Phone & SMS`, `Reading`,`Science & Education`,`Security`,`Sports & Health`,`System`,`Theming`, `Time`,`Writing`), or discuss the proposal to add a new one. _Categories_ must be a list of items, even if there is just one." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_AuthorName_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The name of the author, either full, abbreviated or pseudonym. If present, it should represent the name(s) as published by upstream, e.g. in their copyright or authors file. This can be omitted (or left blank)." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "__Warning__: this overrides all _AuthorName_ entries [set in the app's source code](../All_About_Descriptions_Graphics_and_Screenshots)." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_AuthorEmail_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The e-mail address of the author(s). This can be omitted (or left blank)." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "__Warning__: this overrides all _AuthorEmail_ entries [set in the app's source code](../All_About_Descriptions_Graphics_and_Screenshots)." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_AuthorWebSite_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The website url of the author(s). This can be omitted (or left blank)." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "__Warning__: this overrides all _AuthorWebSite_ entries [set in the app's source code](../All_About_Descriptions_Graphics_and_Screenshots)." msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_License_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The overall license for the application in terms of the binary that the user can install. Values should correspond to short identifiers of the [SPDX](https://spdx.org/licenses/) license list. There can only be one license listed here. If there are multiple licenses that apply to the source code, then this field should contain the least restrictive license that the whole app can be used under. When multiple licenses are combined, that usually means the most restrictive wins." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "This field cannot represent the complexity of licenses that apply to parts of the app, or apps that have the entire thing released under more than one license." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_AutoName_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The name of the application as can best be retrieved from the source code. This is done so that `fdroid checkupdates` can put a familiar name in the description of commits created when a new update of the application is found. The _AutoName_ entry is generated automatically when `fdroid checkupdates` is run, and is only used for the commit messages generated by `fdroid checkupdates`." msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_Name_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The title of the application, with optional descriptive phrase. This field will override all other sources of the application name, including scraped from the APK and from [localized metadata](../All_About_Descriptions_Graphics_and_Screenshots). Setting _Name_ is usually not needed, since the application’s correct name is retrieved from the APK file. However, in a situation where an APK contains a bad or missing application name, it can be overridden using this. Note that this only overrides the name in the list of apps presented in the client; it doesn’t change the name or application label in the source code." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "__50 character limit__" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "__Warning__: this overrides all _Name_/_title_ entries [set in the app's source code](../All_About_Descriptions_Graphics_and_Screenshots)." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_WebSite_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The URL for the application’s web site. If there is no relevant web site, this can be omitted (or left blank)." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_SourceCode_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The URL to view or obtain the application’s source code. This should be something human-friendly. Machine-readable source-code is covered in the _Repo_ field." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_IssueTracker_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The URL for the application’s issue tracker. Optional, since not all applications have one." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_Translation_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The URL for the application’s translation portal or at least a guide. Optional, since not all applications have one." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "This is converted to (`translation`) in the JSON file (_index.json_)." msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_Changelog_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The URL for the application’s changelog. Optional, since not all applications have one." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_Donate_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The URL to donate to the project. This should be the project’s donate page if it has one." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "It is possible to use a direct PayPal link here, if that is all that is available. However, bear in mind that the developer may not be aware of that direct link, and if they later changed to a different PayPal account, or the PayPal link format changed, things could go wrong. It is always best to use a link that the developer explicitly makes public, rather than something that is auto-generated ’button code’." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_FlattrID_" msgstr "_FlattrID_" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The project’s Flattr (https://flattr.com) ID, if it has one. This should be a numeric ID, such that (for example) https://flattr.com/thing/xxxx leads directly to the page to donate to the project." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_Liberapay_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The project’s Liberapay (https://liberapay.com) user or group name, if it has one. This should be an alphanumeric name, such that (for example) https://liberapay.com/xxxxx which redirects to your account page. This used to be _LiberapayID_, which was a numeric ID fetched from Liberapay’s site by adding /public.json behind your team page." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_OpenCollective_" msgstr "_OpenCollective_" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The project’s OpenCollective (https://opencollective.com) user or group name, if it has one. This should be an alphanumeric name, such that (for example) https://opencollective.com/xxxxx redirects to your account page." msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_Bitcoin_" msgstr "_Bitcoin_" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "A bitcoin address for donating to the project." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_Litecoin_" msgstr "_Litecoin_" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "A litecoin address for donating to the project." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_Summary_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "A brief summary of what the application is. The _Summary_ is used in the app list and tile views of the F-Droid client, and as a sub-headline in some other views." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "__80 character limit__" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "__Warning__: this overrides all _Summary_ aka \"short description\" entries [set in the app's source code](../All_About_Descriptions_Graphics_and_Screenshots)." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_Description_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "A full description of the application, relevant to the latest version. This can span multiple lines (which should be kept to a maximum of 80 characters), and is terminated by a line containing a single ’.’." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The description formatting follows the established conventions that work across many app stores:" msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "Basic HTML formatting can be used." msgstr "" #. type: Bullet: '* ' #: _docs/Build_Metadata_Reference.md msgid "Newlines will be preserved." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" "* Links to other packages on f-droid.org will show up as clickable on\n" "the website, other links will show up as plain text.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "It can be helpful to note information pertaining to updating from an earlier version; whether the app contains any prebuilts built by the upstream developers or whether Non-Free elements were removed; whether the app is in rapid development or whether the latest version lags behind the current version; whether the app supports multiple architectures or whether there is a maximum SDK specified (such info not being recorded in the index)." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "__4000 character limit__" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "__Warning__: this overrides all _Description_ aka \"full description\" entries [set in the app's source code](../All_About_Descriptions_Graphics_and_Screenshots)." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_MaintainerNotes_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "This is a multi-line field using the same rules and syntax as the description. It’s used to record notes for F-Droid maintainers to assist in maintaining and updating the application in the repository." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "This information is also published to the wiki." msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_RepoType_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The type of repository - for automatic building from source. If this is not specified, automatic building is disabled for this application. Possible values are:" msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "‘git’" msgstr "‘git’" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "‘svn’" msgstr "‘svn’" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "‘git-svn’" msgstr "‘git-svn’" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "‘hg’" msgstr "‘hg’" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "‘bzr’" msgstr "‘bzr’" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "‘srclib’" msgstr "‘srclib’" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_Repo_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The repository location. Usually a git: or svn: URL, for example." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The git-svn option connects to an SVN repository, and you specify the URL in exactly the same way, but git is used as a back-end. This is preferable for performance reasons, and also because a local copy of the entire history is available in case the upstream repository disappears. (It happens!). In order to use Tags as _UpdateCheckMode_ for this VCS type, the URL must have the tags= special argument set. Likewise, if you intend to use the RepoManifest/branch scheme, you would want to specify branches= as well. Finally, trunk= can also be added. All these special arguments will be passed to \"git svn\" in order, and their values must be relative paths to the svn repo root dir. Here’s an example of a complex git-svn _Repo_ URL: http://svn.code.sf.net/p/project/code/svn;trunk=trunk;tags=tags;branches=branches" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "If the _RepoType_ is `srclib`, then you must specify the name of the according srclib .txt file. For example if `scrlibs/FooBar.txt` exist and you want to use this srclib, then you have to set _Repo_ to `FooBar`." msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_Binaries_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The location of binaries used in verification process." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "If specified, F-Droid will verify the output APK file of a build against the one specified. You can use %v and %c to point to the version name and version code of the current build. To verify the F-Droid client itself you could use: `Binaries: https://f-droid.org/repo/org.fdroid.fdroid_%c.apk`" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "F-Droid will use upstream binaries if the verification succeeded." msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_Builds_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "Any number of sub-entries can be present, each specifying a version to automatically build from source. For example:" msgstr "" #. type: Fenced code block #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" "Builds:\n" " - versionName: '1.2'\n" " versionCode: 12\n" " commit: v1.2\n" "\n" " - versionName: '1.3'\n" " versionCode: 13\n" " commit: v1.3-fdroid\n" msgstr "" "Builds:\n" " - versionName: '1.2'\n" " versionCode: 12\n" " commit: v1.2\n" "\n" " - versionName: '1.3'\n" " versionCode: 13\n" " commit: v1.3-fdroid\n" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`versionName: xxx`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`versionCode: yyy`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid ": Specifies to build version xxx, which has a version code of yyy.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`commit: xxx`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": The _commit_ parameter specifies the tag, commit or revision number\n" " from which to build it in the source repository.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "In addition to the three, always required, parameters described above, further parameters can be added (in `name: value` format) to apply further configuration to the build. These are (roughly in order of application):" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`disable: `\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Disables this build, giving a reason why. (For backwards\n" " compatibility, this can also be achieved by starting the commit ID\n" " with ’!’)\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " The purpose of this feature is to allow non-buildable releases (e.g.\n" " the source is not published) to be flagged, so the scripts don’t\n" " generate repeated messages about them. (And also to record the\n" " information for review later). If an APK has already been built,\n" " disabling causes it to be deleted once `fdroid update` is run; this\n" " is the procedure if ever a version has to be replaced.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`subdir: `\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Specifies to build from a subdirectory of the checked out source\n" " code. This is the directory where the build scripts are run.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`submodules: true`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Use if the project (git only) has submodules - causes\n" " `git submodule update --init --recursive` to be executed after the\n" " source is cloned. Submodules are reset and cleaned like the main app\n" " repository itself before each build.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`sudo: xxxx`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Specifies a script to be run using `sudo bash -x -c \"xxxx\"` in the\n" " buildserver VM guest. This script is run with full root privileges,\n" " but the state will be reset after each build. The vast majority of\n" " apps build using the standard Debian/stable base environment. This\n" " is useful for setting up the buildserver for complex builds that\n" " need very specific things that are not appropriate to install for\n" " all builds, or for things that would conflict with other builds.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`timeout: `\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Time limit for this build (in seconds). After time is up,\n" " buildserver VM is forcefully terminated. The default is 7200\n" " (2 hours); 0 means no limit.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " Limitation is applied only in server mode, i.e. when `fdroid build`\n" " is invoked with the `--server` option.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`init: xxxx`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Like ’prebuild’, but runs on the source code BEFORE any other\n" " processing takes place.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " You can use \\$\\$SDK\\$\\$ and \\$\\$NDK\\$\\$ to substitute the paths to the\n" " Android SDK and NDK directories respectively. The following\n" " per-build variables are available likewise: \\$\\$VERSION\\$\\$,\n" " \\$\\$VERCODE\\$\\$ and \\$\\$COMMIT\\$\\$.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid " This runs in [`subdir:`](#build_subdir) if set.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`oldsdkloc: true`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": The sdk location in the repo is in an old format, or the build.xml\n" " is expecting such. The ’new’ format is sdk.dir while the VERY OLD\n" " format is sdk-location. Typically, if you get a message along the\n" " lines of: \"com.android.ant.SetupTask cannot be found\" when trying to\n" " build, then try enabling this option.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`target: `\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Specifies a particular SDK target for compilation, overriding the\n" " value defined in the code by upstream. This has different effects\n" " depending on what build system used — this flag currently affects\n" " Ant, Maven and Gradle projects only. Note that this does not change\n" " the target SDK in the AndroidManifest.xml, which determines the\n" " level of features that can be included in the build.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " In the case of an Ant project, it modifies _project.properties_ of the\n" " app and possibly sub-projects. This is likely to cause the whole\n" " _build.xml_ to be rewritten, which is fine if it’s a ’standard’\n" " Android file or doesn’t already exist, but not a good idea if it’s\n" " heavily customised.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`androidupdate: `\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": By default, ’android update’ is used in Ant builds to generate or\n" " update the project and all its referenced projects. Specifying\n" " update=no bypasses that. Note that this is useless in builds that\n" " don’t use Ant.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " Default value is ’`auto`’, which recursively uses the paths in\n" " _project.properties_ to find all the subprojects to update.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " Otherwise, the value can be a comma-separated list of directories in\n" " which to run ’android update’ relative to the application directory.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`encoding: xxxx`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Adds a java.encoding property to local.properties with the\n" " given value. Generally the value will be ’utf-8’. This is picked up\n" " by the SDK’s ant rules, and forces the Java compiler to interpret\n" " source files with this encoding. If you receive warnings during the\n" " compile about character encodings, you probably need this.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`forceversion: true`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": If specified, the package version in _AndroidManifest.xml_ is replaced\n" " with the version name for the build as specified in the metadata.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " This is useful for cases when upstream repo failed to update it for\n" " specific tag; to build an arbitrary revision; to make it apparent\n" " that the version differs significantly from upstream; or to make it\n" " apparent which architecture or platform the APK is designed to\n" " run on.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`forcevercode: true`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": If specified, the package version code in the _AndroidManifest.xml_ is\n" " replaced with the version code for the build. See also forceversion.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`rm: [,,...]`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Specifies the relative paths of files or directories to delete\n" " before the build is done. The paths are relative to the base of the\n" " build directory - i.e. the root of the directory structure checked\n" " out from the source respository - not necessarily the directory that\n" " contains _AndroidManifest.xml_.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " Multiple files/directories can be specified by separating them with\n" " ’,’. Directories will be recursively deleted.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`extlibs: [,,...]`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Comma-separated list of external libraries (jar files) from the\n" " `build/extlib` library, which will be placed in the `libs` directory\n" " of the project.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`srclibs: [n:]a@r,[n:]b@r1,...`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Comma-separated list of source libraries or Android projects. Each\n" " item is of the form name@rev where name is the predefined source\n" " library name and rev is the revision or tag to use in the respective\n" " source control.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " For Ant projects, you can optionally append a number with a colon at\n" " the beginning of a srclib item to automatically place it in\n" " _project.properties_ as a library under the specified number. For\n" " example, if you specify `1:somelib@1.0`, F-Droid will automatically\n" " do the equivalent of the legacy practice\n" " `prebuild=echo \"android.library.reference.1=$$somelib$$\" >> project.properties`.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " Each srclib has a metadata file under srclibs/ in the repository\n" " directory, and the source code is stored in build/srclib/.\n" "\t_RepoType_ and _Repo_ are specified in the same way\n" " as for apps; Subdir: can be a comma separated list, for when\n" " directories are renamed by upstream; Update Project: updates the\n" " projects in the working directory and one level down; Prepare: can\n" " be used for any kind of preparation: in particular if you need to\n" " update the project with a particular target. You can then also use\n" " \\$\\$name\\$\\$ in the init/prebuild/build command to substitute the\n" " relative path to the library directory, but it could need tweaking\n" " if you’ve changed into another directory.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " Currently srclibs are necessary when upstream uses jar files or\n" " pulls dependencies from non-trusted repositories. While there is no\n" " guarantee that those binaries are free and correspondent to the\n" " source code, F-Droid allows the following known repositories until a\n" " source-built alternative is available:\n" msgstr "" #. type: Bullet: ' - ' #: _docs/Build_Metadata_Reference.md msgid "‘mavenCentral’ - the original repo, hardcoded in Maven and Gradle." msgstr "" #. type: Bullet: ' - ' #: _docs/Build_Metadata_Reference.md msgid "‘jCenter’ - hardcoded in Gradle, this repo by Bintray tries to provide easier handling. It should sync with mavenCentral from time to time." msgstr "" #. type: Bullet: ' - ' #: _docs/Build_Metadata_Reference.md msgid "‘OSS Sonatype’ - maintained by the people behind mavenCentral, this repository focuses on hosting services for open source project binaries." msgstr "" #. type: Bullet: ' - ' #: _docs/Build_Metadata_Reference.md msgid "‘OSS JFrog’ - maintained by the people behind jCenter, this repository focuses on hosting services for open source project binaries." msgstr "" #. type: Bullet: ' - ' #: _docs/Build_Metadata_Reference.md msgid "‘JitPack.io’ - builds directly from GitHub repositories. However, they do not provide any option to reproduce or verify the resulting binaries. Builds pre-release versions in some cases." msgstr "" #. type: Bullet: ' - ' #: _docs/Build_Metadata_Reference.md msgid "‘Clojars’ - Clojure libraries repo." msgstr "" #. type: Bullet: ' - ' #: _docs/Build_Metadata_Reference.md msgid "‘CommonsWare’ - repo holding a collection of open-source libs." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`patch: x`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Apply patch(es). ’x’ names one (or more - comma-seperated) files\n" " within a directory below the metadata, with the same name as the\n" " metadata file but without the extension. Each of these patches is\n" " applied to the code in turn.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`prebuild: xxxx`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Specifies a shell command (or commands - chain with &&) to run\n" " before the build takes place. Backslash can be used as an escape\n" " character to insert literal commas, or as the last character on a\n" " line to join that line with the next. It has no special meaning in\n" " other contexts; in particular, literal backslashes should not\n" " be escaped.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid " The command runs using bash.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " Note that nothing should be built during this prebuild phase -\n" " scanning of the code and building of the source tarball, for\n" " example, take place after this. For custom actions that actually\n" " build things or produce binaries, use ’build’ instead.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " You can use \\$\\$name\\$\\$ to substitute the path to a referenced\n" " srclib - see the `srclib` directory for details of this.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " You can use \\$\\$SDK\\$\\$ and \\$\\$NDK\\$\\$ to substitute the paths to\n" " the Android SDK and NDK directories respectively e.g. for when you\n" " need to run `android update project` explicitly. The following\n" " per-build variables are available likewise: \\$\\$VERSION\\$\\$,\n" " \\$\\$VERCODE\\$\\$ and \\$\\$COMMIT\\$\\$.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`scanignore: [,,...]`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Enables one or more files/paths to be excluded from the scan\n" " process. This should only be used where there is a very good reason,\n" " and probably accompanied by a comment explaining why it\n" " is necessary.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " When scanning the source tree for problems, matching files whose\n" " relative paths start with any of the paths given here are ignored.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`scandelete: [,,...]`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": When running the scan process, any files that trigger errors - like\n" " binaries - will be removed. It acts just like _scanignore_, but\n" " instead of ignoring the files, it removes them.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " Useful when a source code repository includes binaries or other\n" " unwanted files which are not needed for the build. Instead of\n" " removing them manually via _rm_, using _scandelete_ is easier.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`build: xxxx`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": As for ’prebuild’, but runs during the actual build phase (but\n" " before the main Ant/Maven build). Use this only for actions that do\n" " actual building. Any preparation of the source code should be done\n" " using ’init’ or ’prebuild’.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " Any building that takes place before _build_ will be ignored, as\n" " either Ant, mvn or gradle will be executed to clean the build\n" " environment right before _build_ (or the final build) is run.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " You can use \\$\\$SDK\\$\\$ and \\$\\$NDK\\$\\$ to substitute the paths to the\n" " Android SDK and NDK directories respectively. The following per-build\n" " variables are available likewise: \\$\\$VERSION\\$\\$, \\$\\$VERCODE\\$\\$\n" " and \\$\\$COMMIT\\$\\$.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`buildjni: [yes|no|]`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Enables building of native code via the _ndk-build_ script before\n" " doing the main Ant build. The value may be a list of directories\n" " relative to the main application directory in which to run\n" " ndk-build, or ’yes’ which corresponds to ’.’ . Using explicit list\n" " may be useful to build multi-component projects.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " The build and scan processes will complain (refuse to build) if this\n" " parameter is not defined, but there is a `jni` directory present. If\n" " the native code is being built by other means like a Gradle task,\n" " you can specify `no` here to avoid that. However, if the native code\n" " is actually not required or used, remove the directory instead\n" " (using `rm=jni` for example). Using `buildjni=no` when the jni code\n" " isn’t used nor built will result in an error saying that native\n" " libraries were expected in the resulting package.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`ndk: `\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Version of the NDK to use in this build. The value is the NDK version as a\n" " string in either of the two official version schemes, e.g. _r21e_ or\n" " _21.4.7075529_. NDK r10e or later is supported. This can also be a list of\n" " version strings, and all listed versions will be installed. The\n" " `ANDROID_SDK_ROOT` environment variable will be set to the first version in\n" " the list.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`gradle: [,,...]`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Build with Gradle instead of Ant, specifying what flavours to use.\n" " Flavours are case sensitive since the path to the output APK is\n" " as well.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " If only one flavour is given and it is ’yes’, no flavour will be\n" " used. Note that for projects with flavours, you must specify at\n" " least one valid flavour since ’yes’ will build all of\n" " them separately.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`maven: yes[@]`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Build with Maven instead of Ant. An extra @<dir> tells F-Droid\n" " to run Maven inside that relative subdirectory. Sometimes it is\n" " needed to use @.. so that builds happen correctly.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`preassemble: [,,...]`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": List of Gradle tasks to be run before the assemble task in a Gradle\n" " project build.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`gradleprops: [,,...]`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": List of Gradle properties to pass via the command line to Gradle. A\n" " property can be of the form `foo` or of the form `key=value`.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " For example: `gradleprops=enableFoo,someSetting=bar` will result in\n" " `gradle -PenableFoo -PsomeSetting=bar`.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`antcommands: [,,...]`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Specify an alternate set of Ant commands (target) instead of the\n" " default ’release’. It can’t be given any flags, such as the path to\n" " a _build.xml_.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`output: glob/to/output.apk`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Specify a glob path where the resulting unsigned release APK from\n" " the build should be. This can be used in combination with build\n" " methods like `gradle=yes` or `maven=yes`, but if no build method is\n" " specified, the build is manual. You should run your build commands,\n" " such as `make`, in _build_.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`novcheck: true`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": Don’t check that the version name and code in the resulting APK are\n" " correct by looking at the build output - assume the metadata\n" " is correct. This takes away a useful level of sanity checking, and\n" " should only be used if the values can’t be extracted.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "`antifeatures: [,,...]`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" ": List of Anti-Features for this specific build. They are described\n" " in [_AntiFeatures_](#AntiFeatures).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_AllowedAPKSigningKeys_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "When making automated binary repositories with `fdroid update`, it is generally easy to find out the expected signing key for the APKs that are gathered. `AllowedAPKSigningKeys` lets the repo operator set the expected signing keys, then `fdroid update` will check that the APKs are signed by one of those keys. If not, the mismatched APKs will not be included in the repo. If `fdroid update --delete-unknown` is specified, the mismatched APKs will be deleted. Then an automated process can be used to download newer APKs to the repo, and they will only be included if they have a known good signature. The value is a lowercase hex value of the SHA-256 fingerprint of the signing certificate. This can be fetched using:" msgstr "" #. type: Fenced code block #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "apksigner verify --print-certs example.apk | grep SHA-256\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_AntiFeatures_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "This is optional - if present, it contains a comma-separated list of any of the following values, describing an anti-feature the application has. It is a good idea to mention the reasons for the anti-feature(s) in the description:" msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "‘Ads’ - the application contains advertising." msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "‘Tracking’ - user or activity data is tracked or leaks, by default. True if the app or a feature can not be used without collecting and sharing such data, or doing requests to a data collecting network service (regard- less if the service is based on free software, or not). For example, activity-based down-loading of weather data, maps, avatars etc. (data hosting and delivery services), or uploading of crash logs etc." msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "‘NonFreeNet’ - the application contains a feature that promotes or depends on a Non-Free network service which is impossible, or not easy to replace. Replacement requires changes to the app or service. This antifeature would not apply, if there is a simple configuration option that allows pointing the app to a running instance of an alternative, publicly available, self-hostable, free software server solution." msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "‘NonFreeAdd’ - the application promotes Non-Free add-ons, such that the app is effectively an advert for other Non-Free Software." msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "‘NonFreeDep’ - the application depends on a Non-Free application (e.g. Google Maps) - i.e. it requires it to be installed on the device, but does not include it." msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "‘NSFW’ - the app contains content that the user may not want to be publicized or visible everywhere, comes from \"Not Safe For Work\"." msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "‘UpstreamNonFree’ - the application is or depends on Non-Free software. This does not mean that Non-Free Software is included with the app: Most likely, it has been patched in some way to remove the Non-Free code. However, functionality may be missing." msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "‘NonFreeAssets’ - the application contains and makes use of Non-Free assets. The most common case is apps using artwork - images, sounds, music, etc - under a non-commercial license." msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "‘KnownVuln’ - the application has known security vulnerabilities." msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "‘ApplicationDebuggable‘ - APK file is compiled for debugging (`application-debuggable`), which normally makes it unsuitable for regular users and use cases." msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "‘NoSourceSince‘ - Upstream source for this app is no longer available. Either the app went commercial, the repo was dropped, or it has moved to a location currently unknown to us. This usually means there won't be further updates unless the source reappears." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_Disabled_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "If this field is present, the application does not get put into the public index. This allows metadata to be retained while an application is temporarily disabled from being published. The value should be a description of why the application is disabled. No APKs or source code archives are deleted: to purge an APK see the Build Version section or delete manually for developer builds. The field is therefore used when an app has outlived it’s usefulness, because the source tarball is retained." msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_RequiresRoot_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "Set this optional field to 'True' if the application requires root privileges to be usable. This lets the client filter it out if the user so desires. Whether root is required or not, it is good to give a paragraph in the description to the conditions on which root may be asked for and the reason for it." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_ArchivePolicy_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "This determines the policy for moving old versions of an app to the archive repo, if one is configured. The configuration sets a default maximum number of versions kept in the main repo, after which older ones are moved to the archive. This app-specific policy setting can override that." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The version specified via `CurrentVersionCode` is always considered the newest version when deciding which versions to put into the archive. This means that when `ArchivePolicy` is set to \"1 versions\" only the APK corresponding to CVC is kept, which is not necessarily the one with the highest version code." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "Currently the only supported format is \"n versions\", where n is the number of versions to keep. Defaults to \"3 versions\"." msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_UpdateCheckMode_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "This determines the method using for determining when new releases are available - in other words, the updating of the _CurrentVersion_ and _CurrentVersionCode_ fields in the metadata by the `fdroid checkupdates` process." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "Valid modes are:" msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "`None` - No checking is done because there’s no appropriate automated way of doing so. Updates should be checked for manually. Use this, for example, when deploying unstable or patched versions; when builds are done in a directory different to where the _AndroidManifest.xml_ is; if the developers use the Gradle build system and store version info in a separate file; if the developers make a new branch for each release and don’t make tags; or if you’ve changed the package name or version code logic." msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "`Static` - No checking is done - either development has ceased or new versions are not desired. This method is also used when there is no other checking method available and the upstream developer keeps us posted on new versions." msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "`RepoManifest` - At the most recent commit, the _AndroidManifest.xml_ and _build.gradle_ files are looked for in the directory where they were found in the the most recent build. The appropriateness of this method depends on the development process used by the application’s developers. You should not specify this method unless you’re sure it’s appropriate. For example, some developers bump the version when commencing development instead of when publishing. It will return an error if the _AndroidManifest.xml_ has moved to a different directory or if the package name has changed. The current version that it gives may not be accurate, since not all versions are fit to be published. Therefore, before building, it is often necessary to check if the current version has been published somewhere by the upstream developers, either by checking for APKs that they distribute or for tags in the source code repository." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " It currently works for every repository type to different extents,\n" " except the srclib repo type. For git, git-svn and hg repo types, you\n" " may use \"RepoManifest/yourbranch\" as _UpdateCheckMode_ so that \"yourbranch\" would\n" " be the branch used in place of the default one. The default values\n" " are \"master\" for git, \"default\" for hg and none for git-svn (it\n" " stays in the same branch). On the other hand, branch support hasn’t\n" " been implemented yet in bzr and svn, but _RepoManifest_ may still be\n" " used without it.\n" msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "`RepoTrunk` - For svn and git-svn repositories, especially those who don’t have a bundled _AndroidManifest.xml_ file, the Tags and RepoManifest checks will not work, since there is no version information to obtain. But, for those apps who automate their build process with the commit ref that HEAD points to, RepoTrunk will set the _CurrentVersion_ and _CurrentVersionCode_ to that number." msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "`Tags` - The _AndroidManifest.xml_ and _build.gradle_ files in all tagged revisions in the source repository are checked, looking for the highest version code. The appropriateness of this method depends on the development process used by the application’s developers. You should not specify this method unless you’re sure it’s appropriate. It shouldn’t be used if the developers like to tag unstable versions or are known to forget to tag releases. Like RepoManifest, it will not return the correct value if the directory containing the _AndroidManifest.xml_ has moved. Despite these caveats, it is the often the favourite _UpdateCheckMode_." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " It currently only works for git, hg, bzr and git-svn repositories.\n" " In the case of the latter, the repo URL must contain the path to the\n" " trunk and tags or else no tags will be found.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " Optionally append a regex pattern at the end - separated with a\n" " space - to only check the tags matching said pattern. Useful when\n" " apps tag non-release versions such as X.X-alpha, so you can filter\n" " them out with something like `.*[0-9]$` which requires tag names to\n" " end with a digit.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " Optionally `UpdateCheckData` can be specified to extract version code and\n" " name from repository files you specify (instead of relying on the defaults\n" " used to match against otherwise, which in most cases is `build.gradle` or\n" " `AndroidManifest.xml`).\n" msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "`HTTP` - HTTP requests are used to determine the current version code and version name. This is controlled by the _UpdateCheckData_ field, which is of the form `urlcode|excode|urlver|exver`." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " Firstly, if `urlcode` is non-empty, the document from that URL is\n" " retrieved, and matched against the regular expression `excode`, with\n" " the first group becoming the version code.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " Secondly, if `urlver` is non-empty, the document from that URL is\n" " retrieved, and matched against the regular expression `exver`, with\n" " the first group becoming the version name. The `urlver` field can be\n" " set to simply ’.’ which says to use the same document returned for\n" " the version code again, rather than retrieving a different one.\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_VercodeOperation_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "Operation to be applied to the vercode obtained by the defined _UpdateCheckMode_. `%c` will be replaced by the actual vercode, and the whole string will be passed to python’s `eval` function." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "Especially useful with apps that we want to compile for different ABIs, but whose vercodes don’t always have trailing zeros. For example, with _VercodeOperation_ set at something like `%c*10 + 4`, we will be able to track updates and build up to four different versions of every upstream version." msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_UpdateCheckIgnore_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "When checking for updates (via _UpdateCheckMode_) this can be used to specify a regex which, if matched against the version name, causes that version to be ignored. For example, ’beta’ could be specified to ignore version names that include that text." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "Only Available with _UpdateCheckMode_ `HTTP`." msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_UpdateCheckName_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "When checking for updates (via _UpdateCheckMode_) this can be used to specify the package name to search for. Useful when apps have a static package name but change it programmatically in some app flavors, by e.g. appending \".open\" or \".free\" at the end of the package name." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "You can also use `Ignore` to ignore package name searching. This should only be used in some specific cases, for example if the app’s build.gradle file does not contain the package name." msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_UpdateCheckData_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "Used in conjunction with _UpdateCheckMode_ `Tags` or `HTTP`." msgstr "" #. type: Fenced code block #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "UpdateCheckData: |||\n" msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "`vercode-location` - URL (with `UpdateCheckMode: HTTP`) or path/file relative to repo root, leave empty to check the tag name instead (with `UpdateCheckMode: Tags`)." msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "`RegEx-for-versionCode` - RegEx to match versionCode." msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "`versionName-location` - Same as vercode-location just for versionName. A `.` means to take vercode-location, leave empty to check the tag name instead (only with `UpdateCheckMode: Tags`)." msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "`RegEx-for-versionName` - Similar to RegEx-for-versionCode, just for versionName." msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "RegEx pipe operators are not supported at this time." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" "Examples for `UpdateCheckMode: Tags`:\n" "- Flutter app with the `pubspec.yaml` in the repo root:\n" " `pubspec.yaml|version:\\s.+\\+(\\d+)|.|version:\\s(.+)\\+`\n" "- Use the git tag as version name:\n" " `app/build.gradle|versionCode\\s(\\d+)||`\n" "- Optionally a regex to extract the version name from the tag can be specified:\n" " `app/build.gradle|versionCode\\s(\\d+)||Android-([\\d.]+)`\n" "- If no file for the version code was specified, code and name can be extracted from the tag:\n" " `'|\\+(\\d+)||Android-([\\d.]+)'`\n" "- Note: Be sure to use *single* quotes around the entire value if you leave `vercode-location` empty:\n" " `UpdateCheckData: '|\\+(\\d+)||Android-([\\d.]+)'`\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" "Examples for `UpdateCheckMode: HTTP`:\n" "- `https://foo/version.json|\"version_code\":.*\"(.*)\"|.|\"version_name\":.*\\\"(.*)\\\",`\n" "- `https://foo/version_fdroid.txt|versionCode=(.*)|.|versionName=(.*)`\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_AutoUpdateMode_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "This determines the method used for auto-generating new builds when new releases are available - in other words, adding a new Build Version line to the metadata. This happens in conjunction with the _UpdateCheckMode_ functionality - i.e. when an update is detected by that, it is also processed by this." msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "`None` - No auto-updating is done" msgstr "" #. type: Bullet: '- ' #: _docs/Build_Metadata_Reference.md msgid "`Version` - Generates a value (tag name) used for the `commit:` property of new build blocks. It is simply text in which %v and %c are replaced with the required version name and version code respectively. The resulting string must match an existing tag in the app's repo, which then will be used by F-Droid to build the corresponding version." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " For example, if an app always has a tag \"2.7.2\" corresponding to\n" " version 2.7.2, you would simply specify \"Version %v\". If an app\n" " always has a tag \"ver\\_1234\" for a version with version code 1234,\n" " you would specify \"Version ver\\_%c\".\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " Continuing the first example above, you would specify that as \"Version\n" " +-fdroid %v\" - \"-fdroid\" is the suffix F-Droid will then append to the\n" " `versionName` specified in e.g. `build.gradle` when building the APK.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " Additionally, a suffix can be added to the version name at this\n" " stage, to differentiate F-Droid’s build from the original.\n" " Continuing the first example above, you would specify that as\n" " \"Version +-fdroid %v\" - \"-fdroid\" is the suffix.\n" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "" " If UpdateCheckMode is set to `Tags` the generator string behind `Version`\n" " is optional and not used for the `commit:` field.\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_CurrentVersion_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The [name of the version](https://developer.android.com/guide/topics/manifest/manifest-element.html#vname) that is the recommended release. There may be newer versions of the application than this (e.g. unstable versions), and there will almost certainly be older ones. This should be the one that is recommended for general use. In the event that there is no source code for the current version, or that Non-Free libraries are being used, this would ideally be the latest version that is still free, though it may still be expedient to retain the automatic update check — see No Source Since." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "This field is normally automatically updated - see _UpdateCheckMode_." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_CurrentVersionCode_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "The [version code](https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode) corresponding to the [_CurrentVersion_](#CurrentVersion) field. Both these fields must be correct and matching although it’s the current version code that’s used by Android to determine version order and by F-Droid client to determine which version should be recommended." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "This field is normally automatically updated - see [_UpdateCheckMode_](#UpdateCheckMode)." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "If not set, clients will recommend the highest version they can, as if the _CurrentVersionCode_ was infinite." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_NoSourceSince_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "In case we are missing the source code for the _CurrentVersion_ reported by Upstream, or that Non-Free elements have been introduced, this defines the first version that began to miss source code. Apps that are missing source code for just one or a few versions, but provide source code for newer ones are not to be considered here - this field is intended to illustrate which apps do not currently distribute source code, and since when have they been doing so." msgstr "" #. type: Title # #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "Deprecated or Removed Fields" msgstr "" #. type: Title ### #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "_Provides_" msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md msgid "Comma-separated list of application IDs that this app provides. This field was only ever a stub and was never used for anything. It was never supported in _index-v1.json nor _.yml_ metadata files." msgstr "" #. type: Plain text #: _docs/Build_Metadata_Reference.md #, no-wrap msgid "This is converted to (``) in the XML file (_index.xml_).\n" msgstr "" #. type: YAML Front Matter: title #: _docs/Build_Server_Setup.md #, no-wrap msgid "Build Server Setup" msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "The F-Droid build server isolates the builds for each package within a clean, isolated and secure throwaway virtual machine environment. Building thousands of apps, especially with automated and/or unattended processes, could be considered a dangerous pastime from a security perspective. This is even more the case when the products of the build are also distributed widely and in a semi-automated (\"you have updates available\") fashion." msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "Assume that an upstream source repository is compromised. A small selection of things that an attacker could do in such a situation:" msgstr "" #. type: Bullet: '1. ' #: _docs/Build_Server_Setup.md msgid "Use custom build steps to execute virtually anything as the user doing the build." msgstr "" #. type: Bullet: '2. ' #: _docs/Build_Server_Setup.md msgid "Access the keystore." msgstr "" #. type: Bullet: '3. ' #: _docs/Build_Server_Setup.md msgid "Modify the built APK files or source tarballs for other applications in the repository." msgstr "" #. type: Bullet: '4. ' #: _docs/Build_Server_Setup.md msgid "Modify the metadata (which includes build scripts, which again, also includes the ability to execute anything) for other applications in the repository." msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "Through complete isolation, the repercussions are at least limited to the application in question. Not only is the build environment fresh for each build, and thrown away afterwards, but it is also totally isolated from the signing environment." msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "Aside from security issues, there are some applications which have strange requirements such as old versions of the NDK. It would be impractical (or at least extremely messy) to start modifying and restoring the SDK on a multi-purpose system, but within the confines of a throwaway single-use virtual machine, anything is possible." msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "All this is in addition to the obvious advantage of having a standardised and completely reproducible environment in which builds are made. Additionally, it allows for specialised custom build environments for particular applications." msgstr "" #. type: Title ## #: _docs/Build_Server_Setup.md #, no-wrap msgid "Overview of the setup" msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "This is how to set up a working build server, starting from a completely clean minimal Debian/stable install. This HOWTO assumes you have already [setup _fdroidserver_](../Installing_the_Server_and_Repo_Tools). Running the _fdroidserver_ tools directly out of [git](https://gitlab.com/fdroid/fdroidserver) (e.g. `~/fdroidserver/fdroid build org.adaway`), will likely be the easiest for now since the build server setup scripts are not really ready for proper packaging. Also, it will likely only work on Debian, Ubuntu and other Debian-derivatives since F-Droid only uses Debian in its infrastructure (we welcome porting contributions!)." msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "The base server needs to be at minimum Debian/jessie, or there will need to be some heavy tweaking. If you run Ubuntu or derivative distro, you can get any packages missing from your version, like _vagrant-cachier_, from this PPA: " msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "First, install the necessary packages and create a new user to run the whole process here, e.g. _fdroid_. These are only the packages required by all builds, you might need to install additional packages to build apps, for example, _mercurial_ or _subversion_. Once the packages are installed and the _fdroid_ user is created, nothing else in this process should be run using root or _sudo_." msgstr "" #. type: Fenced code block (bash) #: _docs/Build_Server_Setup.md #, no-wrap msgid "" "root:~# apt-get install vagrant virtualbox git python3-certifi \\\n" " python3-libvirt python3-requestbuilder python3-yaml \\\n" " python3-clint python3-vagrant python3-paramiko python3-pyasn1 \\\n" " python3-pyasn1-modules python3-requests python3-git\n" "root:~# adduser --disabled-password fdroid\n" "root:~# su fdroid\n" msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "Clone source code and configure the buildserver settings, running as _fdroid_ user:" msgstr "" #. type: Fenced code block (bash) #: _docs/Build_Server_Setup.md #, no-wrap msgid "" "fdroid:~$ cd ~\n" "fdroid:~$ git clone https://gitlab.com/fdroid/fdroidserver.git\n" "fdroid:~$ cp fdroidserver/examples/makebuildserver.config.py fdroidserver/\n" msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "You also have to make sure your `ANDROID_HOME` environment variable is [set up](../Installing_the_Server_and_Repo_Tools#building-apps) correctly." msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "For your convenience you optionally may add the fdroid executable to your path:" msgstr "" #. type: Fenced code block (bash) #: _docs/Build_Server_Setup.md #, no-wrap msgid "fdroid:~$ echo \"PATH=\\$PATH:$HOME/fdroidserver\" >> ~/.bashrc\n" msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "Create the base buildserver image... (downloading the basebox and all the sdk platforms can take long time)." msgstr "" #. type: Fenced code block (bash) #: _docs/Build_Server_Setup.md #, no-wrap msgid "" "fdroid:~$ cd fdroidserver\n" "fdroid:~/fdroidserver$ ./makebuildserver\n" msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "Get all of the app build metadata from the fdroiddata repo..." msgstr "" #. type: Fenced code block (bash) #: _docs/Build_Server_Setup.md #, no-wrap msgid "" "fdroid:~/fdroidserver$ cd ~\n" "fdroid:~$ git clone https://gitlab.com/fdroid/fdroiddata.git\n" "fdroid:~$ cp fdroidserver/examples/config.yml fdroiddata/\n" "fdroid:~$ sed -i \"s@^[# ]*build_server_always.*@build_server_always: true@\" fdroiddata/config.yml\n" msgstr "" #. type: Title ## #: _docs/Build_Server_Setup.md #, no-wrap msgid "Setting up a build server" msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "In addition to the basic setup previously described, we ship a Vagrant-compatible Debian/stretch base box called ’fdroid/basebox-stretch64’." msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "We are bootstrapping the Debian Vagrant boxes for our buildserver from scratch. Fetching and verifying our pre-build Vagrant boxes is fully automated. (If you are interested in this process or want to bootstrap those by yourself you should look at: [F-Droid Base Box](https://gitlab.com/fdroid/basebox#fdroid_basebox))" msgstr "" #. type: Title ### #: _docs/Build_Server_Setup.md #, no-wrap msgid "Creating the F-Droid buildserver box" msgstr "F-Droid oluşturma sunucu kutusunu oluşturma" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "Navigate to your clone of [F-Droid Server git](https://gitlab.com/fdroid/fdroidserver) and start by creating `makebuildserver.config.py`, using `./examples/makebuildserver.config.py` as a reference - look at the settings and documentation there to decide if any need changing to suit your environment. There is a path for retrieving the base box if it doesn’t exist, and an apt proxy definition, both of which may need customising for your environment. You can then go to the `fdroidserver` directory and run `makebuildserver`." msgstr "" #. type: Fenced code block (bash) #: _docs/Build_Server_Setup.md #, no-wrap msgid "" "# navigate to your clone of F-Droid Server\n" "cd .../fdroidserver\n" "\n" "# copy example config file\n" "cp examples/makebuildserver.config.py makebuildserver.config.py\n" "\n" "# start building the your basebox image\n" "./makebuildserver\n" msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "This will take a long time, use a lot of bandwidth and disk space - most of it spent installing the necessary parts of the Android SDK for all the various platforms. Luckily you only need to do it occasionally. Once you have a working build server image, if the recipes change (e.g. when packages need to be added) you can just run that script again and the existing one will be updated in place." msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "Once it’s complete you’ll have a new base box called ’buildserver’ which is what’s used for your App build runs. Now you can build packages as as you used to, but when you run `fdroid build --server ...` App build runs will be isolated inside a virtual machine." msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "The first time a build is done, a new virtual machine is created using the ’buildserver’ box as a base. A snapshot of this clean machine state is saved for use in future builds, to improve performance. You can force discarding of this snapshot and rebuilding from scratch using a switch: `fdroid build --resetserver ...`." msgstr "" #. type: Title ### #: _docs/Build_Server_Setup.md #, no-wrap msgid "makebuildserver caching tweaks (optional)" msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "The main SDK/NDK downloads will automatically be cached to speed things up the next time, but there’s no easy way of doing this for the longer sections which use the SDK’s `android` tool to install platforms, add-ons and tools. However, instead of allowing automatic caching, you can supply a pre-populated cache directory which includes not only these downloads, but also .tar.gz files for all the relevant additions. If the provisioning scripts detect these, they will be used in preference to running the Android tools. For example, if you have `buildserver/addons/cache/platforms/android-19.tar.gz` that will be used when installing the android-19 platform, instead of re-downloading it using `android update sdk --no-ui -t android-19`. It is possible to create the cache files of this additions from a local installation of the SDK including these:" msgstr "" #. type: Fenced code block (bash) #: _docs/Build_Server_Setup.md #, no-wrap msgid "" "cd /path/to/android-sdk/platforms\n" "tar czf android-19.tar.gz android-19\n" "mv android-19.tar.gz /path/to/buildserver/addons/cache/platforms/\n" msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "If you have already built a buildserver it is also possible to get this files directly from the buildserver:" msgstr "" #. type: Fenced code block (bash) #: _docs/Build_Server_Setup.md #, no-wrap msgid "" "vagrant ssh -- -C 'tar -C ~/android-sdk/platforms czf android-19.tar.gz android-19'\n" "vagrant ssh -- -C 'cat ~/android-sdk/platforms/android-19.tar.gz' > /path/to/fdroidserver/buildserver/cache/platforms/android19.tar.gz\n" msgstr "" #. type: Title ## #: _docs/Build_Server_Setup.md #, no-wrap msgid "Running builds" msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "When using the buildserver, running `fdroid` directly from a git checkout of _fdroidserver_ will be the easiest. If you don't already have the _fdroidserver_ tools installed and setup, you will need to do that next: [Installing the Server and Repo Tools](../Installing_the_Server_and_Repo_Tools). That provides all of the dependencies needed to run _fdroidserver_ from git." msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "Now you are ready to run builds. Test by building the latest fdroid version:" msgstr "" #. type: Fenced code block (bash) #: _docs/Build_Server_Setup.md #, no-wrap msgid "" "fdroid:~/fdroidserver$ cd ~/fdroiddata\n" "fdroid:~/fdroiddata$ ~/fdroidserver/fdroid build org.fdroid.fdroid -l --server\n" msgstr "" #. type: Title ## #: _docs/Build_Server_Setup.md #, no-wrap msgid "Optionally using QEMU/KVM/libvirt instead of VirtualBox" msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "It is also possible to QEMU/KVM guest VMs via libvirt instead of the default VirtualBox. VirtualBox is still the recommended setup since that is what is used by f-droid.org, but there are cases where it is not possible to run VirtualBox, like on a machine that is already running QEMU/KVM guests. In order to make the libvirt image files directly readable by `vagrant package`, _libvirt_'s QEMU needs to be configured to always set the ownership to `libvirt.libvirt`." msgstr "" #. type: Fenced code block (console) #: _docs/Build_Server_Setup.md #, no-wrap msgid "" "root:~# apt-get install vagrant vagrant-mutate vagrant-libvirt ebtables dnsmasq-base \\\n" " python3-libvirt libvirt-clients libvirt-daemon-system qemu-kvm qemu-utils git \\\n" " python3-yaml python3-clint python3-vagrant python3-pyasn1 python3-pyasn1-modules \\\n" " python3-requests python3-git\n" "root:~# cat << EOF >> /etc/libvirt/qemu.conf\n" "user = \"libvirt\"\n" "group = \"libvirt\"\n" "dynamic_ownership = 1\n" "EOF\n" "root:~# service libvirtd restart\n" msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "Then create a _makebuildserver.config.py_ next to _makebuildserver_ and add:" msgstr "" #. type: Fenced code block (python) #: _docs/Build_Server_Setup.md #, no-wrap msgid "vm_provider = 'libvirt'\n" msgstr "vm_provider = 'libvirt'\n" #. type: Title ##### #: _docs/Build_Server_Setup.md #, no-wrap msgid "Debian/stretch and Ubuntu/xenial" msgstr "" #. type: Fenced code block (console) #: _docs/Build_Server_Setup.md #, no-wrap msgid "" "root:~# adduser fdroid libvirt\n" "root:~# adduser fdroid libvirt-qemu\n" msgstr "" #. type: Title ##### #: _docs/Build_Server_Setup.md #, no-wrap msgid "older Debian and Ubuntu" msgstr "" #. type: Fenced code block (console) #: _docs/Build_Server_Setup.md #, no-wrap msgid "" "root:~# adduser fdroid libvirtd\n" "root:~# adduser fdroid kvm\n" msgstr "" #. type: Title ### #: _docs/Build_Server_Setup.md #, no-wrap msgid "Advanced nested KVM Setup:" msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "This section is not relevant for using F-Droid in a normal setup. If you want to run `fdroid build --server` flag inside a KVM, this chaper will help you getting started." msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "Consider following basic nesting setup:" msgstr "" #. type: Fenced code block #: _docs/Build_Server_Setup.md #, no-wrap msgid "" "bare metal host (l0)\n" "\\- F-Droid VM (l1)\n" " \\- F-Droid builder VM (l2)\n" msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "The steps above describe how to setup (l1) and _makebuildserver_ sets up (l2)." msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "First of all you'll have to check if you cpu support the _vmx_ (or _svm_ on amd) instruction set. You can use this command to list details about your cpu:" msgstr "" #. type: Fenced code block (bash) #: _docs/Build_Server_Setup.md #, no-wrap msgid "root:~# cat /proc/cpuinfo\n" msgstr "root:~# cat /proc/cpuinfo\n" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "On (l0) you have to check that nesting is enabled:" msgstr "" #. type: Fenced code block (bash) #: _docs/Build_Server_Setup.md #, no-wrap msgid "root:~# cat /sys/module/kvm_intel/parameters/nested\n" msgstr "root:~# cat /sys/module/kvm_intel/parameters/nested\n" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "If it's not enabled you can turn it on by running:" msgstr "" #. type: Fenced code block (bash) #: _docs/Build_Server_Setup.md #, no-wrap msgid "echo \"options kvm-intel nested=Y\" > /etc/modprobe.d/kvm-intel.conf\n" msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "You'll need to reboot to for this to take effect." msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "Next you'll need to make sure that your (l1) vm configuration forwards cpu features required for nesting. So open up your configuration for the VM _/etc/libvirt/qemu/my-vm.xml_ and insert a cpu block inside your domain-tag. (_virt-manager_ also provides a user-interface for this operation.)" msgstr "" #. type: Fenced code block (xml) #: _docs/Build_Server_Setup.md #, no-wrap msgid "" "\n" " SandyBridge\n" " Intel\n" " \n" "\n" msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "The actually required configuration here depends on your cpu. You can find details in [libvirts manual](https://libvirt.org/formatdomain.html#elementsCPU). The important part is that you forward _vmx_ (or _svm_ on amd) to the guest system." msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "This is the setup that is used in the Continuous Integration builds as part of the [reproducible builds](https://reproducible-builds.org) effort. You can see this in action on the Debian Project's jenkins setup:" msgstr "" #. type: Plain text #: _docs/Build_Server_Setup.md msgid "- " msgstr "" #. type: YAML Front Matter: title #: _docs/Client_Bug_Reports.md #, no-wrap msgid "Client Bug Reports" msgstr "" #. type: Title ### #: _docs/Client_Bug_Reports.md #, no-wrap msgid "What to include in a bug report" msgstr "" #. type: Plain text #: _docs/Client_Bug_Reports.md msgid "In order to ensure that the F-Droid developers have the best chance of reproducing your issue and thus fixing it, please include as much of the following information as possible in your bug reports:" msgstr "" #. type: Bullet: '* ' #: _docs/Client_Bug_Reports.md msgid "F-Droid version (e.g. \"0.88\" or \"0.89-test\")" msgstr "" #. type: Bullet: '* ' #: _docs/Client_Bug_Reports.md msgid "Android version (e.g. \"Lollipop\" or \"Android 5.0\")" msgstr "" #. type: Bullet: '* ' #: _docs/Client_Bug_Reports.md msgid "Device (e.g. \"Nexus 4\")" msgstr "" #. type: Bullet: '* ' #: _docs/Client_Bug_Reports.md msgid "Steps to reproduce the bug" msgstr "" #. type: Bullet: '* ' #: _docs/Client_Bug_Reports.md msgid "A logcat from when the crash occured ([Getting logcat messages after crash](../Getting_logcat_messages_after_crash))" msgstr "" #. type: Bullet: '* ' #: _docs/Client_Bug_Reports.md msgid "Whether the bug happens on the previous stable version of F-Droid" msgstr "" #. type: Title ### #: _docs/Client_Bug_Reports.md #, no-wrap msgid "Why does an issue say \"waiting on response\" next to it?" msgstr "" #. type: Plain text #: _docs/Client_Bug_Reports.md msgid "The development team of F-Droid will do their best to reproduce and fix any bugs that are reported. Also, if feature requests are posted, then we will try to engage with the person who requested the feature to see if it is in the best interests of F-Droid as a whole." msgstr "" #. type: Plain text #: _docs/Client_Bug_Reports.md msgid "Sometimes, we are unable to reproduce a particular bug, and so require more feedback from the original bug reporter (or someone else who is also experiencing the problem). Other times, feature requests do not provide enough detail for us to respond appropriately. In these situations, we will apply the \"waiting-on-response\" label to the issue." msgstr "" #. type: Plain text #: _docs/Client_Bug_Reports.md msgid "If, after a significant amount of time, there is no response, the issue will be closed, and probably labelled with a \"cant-reproduce\" label. If this happens to an issue of yours, feel free to re-open it if you come back and have more information which may help resolve the issue properly." msgstr "" #. type: Plain text #: _docs/Client_Bug_Reports.md msgid "Currently, there is not a set timeframe for which these issues will be closed (i.e. no response within 4 weeks), but in the future, we may decide to do this. The reason is that as the bug list grows, it becomes harder for us to manage, and harder for new contributors to decide what they could work on." msgstr "" #. type: Title ### #: _docs/Client_Bug_Reports.md #, no-wrap msgid "Where to file bug report" msgstr "" #. type: Plain text #: _docs/Client_Bug_Reports.md msgid "[F-Droid issue tracker](https://f-droid.org/issues/) specifically [F-Droid client section](https://gitlab.com/fdroid/fdroidclient/issues)" msgstr "" #. type: YAML Front Matter: title #: _docs/Code_of_Conduct.md #, no-wrap msgid "Code of Conduct" msgstr "Davranış Kuralları" #. type: Plain text #: _docs/Code_of_Conduct.md msgid "The F-Droid Project, the producers of the F-Droid software and f-droid.org repository, have adopted a code of conduct for participants to its issue trackers, forum, IRC channels and other modes of communication within the project." msgstr "F-Droid yazılım ve f-droid.org deposunun üreticileri olan F-Droid Projesi, sorun izleyicilerine, forumuna, IRC kanallarına ve proje içindeki diğer iletişim yöntemlerine katılanlar için bir davranış kuralları benimsemiştir." #. type: Title ## #: _docs/Code_of_Conduct.md #, no-wrap msgid "1. Be respectful" msgstr "1. Saygılı olun" #. type: Plain text #: _docs/Code_of_Conduct.md msgid "In a project the size of F-Droid, inevitably there will be people with whom you may disagree, or find it difficult to cooperate. Accept that, but even so, remain respectful. Disagreement is no excuse for poor behaviour or personal attacks, and a community in which people feel threatened is not a healthy community." msgstr "F-Droid gibi büyük bir projede, kaçınılmaz olarak aynı fikirde olmadığınız veya işbirliği yapmakta zorlandığınız kişiler olacaktır. Bunu kabul edin, ancak yine de saygılı olmaya devam edin. Anlaşmazlık, kötü davranışlar veya kişisel saldırılar için bir mazeret değildir ve insanların kendilerini tehdit altında hissettiği bir topluluk sağlıklı bir topluluk değildir." #. type: Title ## #: _docs/Code_of_Conduct.md #, no-wrap msgid "2. Assume good faith" msgstr "2. İyi niyet varsayımı" #. type: Plain text #: _docs/Code_of_Conduct.md msgid "F-Droid Contributors have many ways of reaching our common goal of distributing free software which may differ from your ways. Assume that other people are working towards this goal." msgstr "F-Droid Katılımcılarının, özgür yazılım dağıtma ortak hedefimize ulaşmak için sizin yöntemlerinizden farklı olabilecek birçok yolu vardır. Diğer insanların da bu amaç doğrultusunda çalıştığını varsayın." #. type: Plain text #: _docs/Code_of_Conduct.md msgid "Note that many of our Contributors are not native English speakers or may have different cultural backgrounds." msgstr "Katkıda bulunanların çoğunun ana dilinin İngilizce olmadığını veya farklı kültürel geçmişlere sahip olabileceğini unutmayın." #. type: Title ## #: _docs/Code_of_Conduct.md #, no-wrap msgid "3. Be collaborative" msgstr "3. İşbirliğine açık olun" #. type: Plain text #: _docs/Code_of_Conduct.md msgid "F-Droid is a large and complex project; there is always more to learn within F-Droid. It's good to ask for help when you need it. Similarly, offers for help should be seen in the context of our shared goal of improving F-Droid." msgstr "F-Droid büyük ve karmaşık bir projedir; F-Droid'de her zaman öğrenilecek daha çok şey vardır. İhtiyacınız olduğunda yardım istemek iyidir. Benzer şekilde, yardım teklifleri de F-Droid'i geliştirme ortak hedefimiz bağlamında görülmelidir." #. type: Plain text #: _docs/Code_of_Conduct.md msgid "When you make something for the benefit of the project, be willing to explain to others how it works, so that they can build on your work to make it even better." msgstr "Projenin yararına bir şey yaptığınızda, nasıl olduğunu başkalarına açıklamaya istekli olun ki onlar da sizin çalışmanızı geliştirerek daha iyi hale getirebilsinler." #. type: Title ## #: _docs/Code_of_Conduct.md #, no-wrap msgid "4. Try to be concise" msgstr "4. Kısa ve öz olmaya çalışın" #. type: Plain text #: _docs/Code_of_Conduct.md msgid "Keep in mind that what you write once will be read by hundreds of persons. Writing a short message means people can understand the conversation as efficiently as possible. When a long explanation is necessary, consider adding a summary." msgstr "Bir kez yazdıklarınızın yüzlerce kişi tarafından okunacağını unutmayın. Kısa bir mesaj yazmak, insanların konuşmayı mümkün olduğunca verimli bir şekilde anlayabileceği anlamına gelir. Uzun bir açıklama gerekli olduğunda, bir özet eklemeyi düşünün." #. type: Plain text #: _docs/Code_of_Conduct.md msgid "Try to bring new arguments to a conversation so that each post adds something unique to the thread, keeping in mind that the rest of the thread still contains the other messages with arguments that have already been made." msgstr "Bir sohbete yeni argümanlar getirmeye çalışın, böylece her gönderi konuya benzersiz bir şey katar ve konunun geri kalanının hala daha önce yapılmış argümanları içeren diğer mesajları içerdiğini unutmayın." #. type: Plain text #: _docs/Code_of_Conduct.md msgid "Try to stay on topic, especially in discussions that are already fairly large." msgstr "Özellikle zaten oldukça geniş olan tartışmalarda konu üzerinde kalmaya çalışın." #. type: Title ## #: _docs/Code_of_Conduct.md #, no-wrap msgid "5. Be open" msgstr "5. Açık olun" #. type: Plain text #: _docs/Code_of_Conduct.md msgid "Most ways of communication used within F-Droid allow for public and private communication. As per paragraph three of the social contract, you should preferably use public methods of communication for F-Droid-related messages, unless posting something sensitive." msgstr "F-Droid'de kullanılan çoğu iletişim yöntemi genel ve özel iletişime izin verir. Sosyal sözleşmenin üçüncü paragrafı uyarınca, hassas bir şey göndermediğiniz sürece F-Droid ile ilgili mesajlar için tercihen herkese açık iletişim yöntemlerini kullanmalısınız." #. type: Plain text #: _docs/Code_of_Conduct.md msgid "This applies to messages for help or F-Droid-related support, too; not only is a public support request much more likely to result in an answer to your question, it also makes sure that any inadvertent mistakes made by people answering your question will be more easily detected and corrected." msgstr "Yardım veya F-Droid ile ilgili destek mesajları için de bu geçerlidir; herkese açık bir destek talebinin sorunuza yanıtla sonuçlanma olasılığı çok daha yüksek olmakla kalmaz, aynı zamanda sorunuzu yanıtlayan kişiler tarafından yanlışlıkla yapılan hataların daha kolay tespit edilmesini ve düzeltilmesini sağlar." #. type: Title ## #: _docs/Code_of_Conduct.md #, no-wrap msgid "6. In case of problems" msgstr "6. Sorun çıkması durumunda" #. type: Plain text #: _docs/Code_of_Conduct.md msgid "While this code of conduct should be adhered to by participants, we recognize that sometimes people may have a bad day, or be unaware of some of the guidelines in this code of conduct. When that happens, you may reply to them and point out this code of conduct. Such messages may be in public or in private, whatever is most appropriate. However, regardless of whether the message is public or not, it should still adhere to the relevant parts of this code of conduct; in particular, it should not be abusive or disrespectful. Assume good faith; it is more likely that participants are unaware of their bad behaviour than that they intentionally try to degrade the quality of the discussion." msgstr "Bu davranış kurallarına katılımcılar tarafından uyulması gerekse de, bazen insanların kötü bir gün geçirebileceğinin veya bu davranış kurallarındaki bazı yönergelerin farkında olmayabileceğinin farkındayız. Böyle bir durumda, onlara yanıt verebilir ve bu davranış kurallarına dikkat çekebilirsiniz. Bu tür mesajlar herkese açık veya özel olabilir, hangisi en uygunsa. Ancak, mesaj herkese açık olsun ya da olmasın, yine de bu davranış kurallarının ilgili bölümlerine uymalıdır; özellikle de küfürlü veya saygısız olmamalıdır. İyi niyetli olduğunuzu varsayın; katılımcıların kötü davranışlarının farkında olmamaları, kasıtlı olarak tartışmanın kalitesini düşürmeye çalışmalarından daha olasıdır." #. type: Plain text #: _docs/Code_of_Conduct.md msgid "Serious or persistent offenders will be temporarily or permanently banned from communicating through F-Droid's systems. Complaints should be made (in private) to the administrators of the F-Droid communication forum in question. It is also possible to report issues on our [admin issue tracker](https://gitlab.com/fdroid/admin/issues/)." msgstr "Ciddi veya ısrarlı suçluların F-Droid sistemleri üzerinden iletişim kurmaları geçici veya kalıcı olarak yasaklanacaktır. Şikayetler (özel olarak) söz konusu F-Droid iletişim forumunun yöneticilerine yapılmalıdır. Sorunları [yönetici sorun izleyicimiz](https://gitlab.com/fdroid/admin/issues/) üzerinden bildirmek de mümkündür." #. type: Plain text #: _docs/Code_of_Conduct.md msgid "(_Based on the [Debian Code of Conduct](https://www.debian.org/code_of_conduct), Version 1.0 [ratified](https://www.debian.org/vote/2014/vote_002) on April 28th, 2014._)" msgstr "(_28 Nisan 2014 tarihinde [Debian Davranış Kuralları](https://www.debian.org/code_of_conduct), Sürüm 1.0 [onaylandı](https://www.debian.org/vote/2014/vote_002) temel alınarak hazırlanmıştır._)" #. type: YAML Front Matter: title #: _docs/Deploying_the_Website.md #, no-wrap msgid "Deploying the Website" msgstr "" #. type: Plain text #: _docs/Deploying_the_Website.md msgid "The F-Droid website is built using [Jekyll](https://jekyllrb.com/) and [gitlab-ci](https://about.gitlab.com/features/gitlab-ci-cd/). The whole website now works using a standard git [\"fork\" workflow](https://docs.gitlab.com/ce/workflow/forking_workflow.html) that is well supported by GitLab, and well known from services like GitHub. For all of the pages and information about apps and packages distributed by _f-droid.org_, those pages are generated using our [jekyll-fdroid](https://gitlab.com/fdroid/jekyll-fdroid) plugin, which takes the content from the [_f-droid.org_ index file](https://f-droid.org/repo/index-v1.jar)." msgstr "" #. type: Title ### #: _docs/Deploying_the_Website.md #, no-wrap msgid "Staging on development forks" msgstr "" #. type: Plain text #: _docs/Deploying_the_Website.md msgid "All development forks of [fdroid-website](https://gitlab.com/fdroid/fdroid-website) automatically have a staging server setup and maintained by the _gitlab-ci_ configuration. This automatically deploys the content of the fork's _master_ branch to [GitLab Pages](https://pages.gitlab.io/). For example, _nicoalt_'s git fork is at , and the _master_ branch from that is automatically deployed to ." msgstr "" #. type: Title ### #: _docs/Deploying_the_Website.md #, no-wrap msgid "Staging of the official website" msgstr "" #. type: Plain text #: _docs/Deploying_the_Website.md msgid "Like with forks, the _master_ branch of the main git repo for the website, , is automatically deployed to . That is the place to review the current state of the website before tagging a release." msgstr "" #. type: Title ### #: _docs/Deploying_the_Website.md #, no-wrap msgid "Deploying to https://f-droid.org" msgstr "" #. type: Plain text #: _docs/Deploying_the_Website.md msgid "When an update to the website is tested and ready to go, a release manager creates a PGP-signed release tag in the main git repo. The deploy server monitors the main git repo for new tags. When it sees a new tag, it first checks the PGP signature on the git tag using a manually configured GnuPG keyring that contains only the public keys of the PGP keys that are allowed to tag website releases." msgstr "" #. type: Plain text #: _docs/Deploying_the_Website.md msgid "After the git tag is verified, the `f-droid.org` target in [.gitlab-ci.yml](https://gitlab.com/fdroid/fdroid-website/blob/master/.gitlab-ci.yml) is run to generate the actual files for the site. Those files are then copied into place on the _f-droid.org_ servers." msgstr "" #. type: Plain text #: _docs/Deploying_the_Website.md msgid "The deploy tags use a \"semantic versioning\" naming scheme:" msgstr "" #. type: Bullet: '* ' #: _docs/Deploying_the_Website.md msgid "_\\.\\_" msgstr "" #. type: Bullet: '* ' #: _docs/Deploying_the_Website.md msgid "_\\_ is incremented on each deployment" msgstr "" #. type: Bullet: '* ' #: _docs/Deploying_the_Website.md msgid "_\\_ is only incremented when there are major changes" msgstr "" #. type: Title ### #: _docs/Deploying_the_Website.md #, no-wrap msgid "Setting up and running the deploy procedure" msgstr "" #. type: Plain text #: _docs/Deploying_the_Website.md msgid "The deploy procedure was tested on a machine running Debian/stretch. It should be triggered whenever the repo index is published, so it can rebuild with the latest app information. This whole procedure can be run as root, or just `gitlab-runner`. This final procedure is not part of a script committed into the website git repo so that the commands that run outside of docker cannot be modified via git." msgstr "" #. type: Bullet: '1. ' #: _docs/Deploying_the_Website.md msgid "[setup docker](https://docs.docker.com/engine/installation/linux/debian/)" msgstr "" #. type: Bullet: '2. ' #: _docs/Deploying_the_Website.md msgid "[setup gitlab-ci-multi-runner](https://docs.gitlab.com/runner/install/linux-repository.html)" msgstr "" #. type: Bullet: '3. ' #: _docs/Deploying_the_Website.md msgid "prepare _deploy-allowlist-keyring.gpg_ using GnuPG:" msgstr "" #. type: Fenced code block (console) #: _docs/Deploying_the_Website.md #, no-wrap msgid "" "$ gpg --recv-keys 00aa5556\n" "$ gpg --fingerprint 00aa5556 # verify it!\n" "$ gpg --export 00aa5556 > /path/to/deploy-allowlist-keyring.gpg\n" msgstr "" #. type: Bullet: '4. ' #: _docs/Deploying_the_Website.md msgid "get the website source code:" msgstr "" #. type: Fenced code block (console) #: _docs/Deploying_the_Website.md #, no-wrap msgid "$ git clone https://gitlab.com/fdroid/fdroid-website\n" msgstr "" #. type: Bullet: '5. ' #: _docs/Deploying_the_Website.md msgid "run the generation:" msgstr "" #. type: Fenced code block (console) #: _docs/Deploying_the_Website.md #, no-wrap msgid "" "$ cd fdroid-website\n" "$ git fetch --tags\n" "$ sudo gitlab-runner exec docker f-droid.org \\\n" " --pre-build-script ./tools/prepare-for-deploy.py \\\n" " --docker-volumes \"/path/to/deploy-allowlist-keyring.gpg:/root/.gnupg/pubring.gpg:ro\" \\\n" " --docker-volumes `pwd`/_site:/builds/output\n" msgstr "" #. type: Bullet: '6. ' #: _docs/Deploying_the_Website.md msgid "deploy the site's files to the webserver, while preventing the _jekyll_ generated files from overwriting [parts of the website](https://gitlab.com/fdroid/fdroid-website/blob/master/.rsync-deploy-exclude-list) that other things manage:" msgstr "" #. type: Fenced code block (console) #: _docs/Deploying_the_Website.md #, no-wrap msgid "$ rsync -ax --delete --exclude-from=_site/build/.rsync-deploy-exclude-list _site/build/ f-droid.org:/var/www/\n" msgstr "$ rsync -ax --delete --exclude-from=_site/build/.rsync-deploy-exclude-list _site/build/ f-droid.org:/var/www/\n" #. type: Title ### #: _docs/Deploying_the_Website.md #, no-wrap msgid "Base Debian/Apache setup" msgstr "" #. type: Plain text #: _docs/Deploying_the_Website.md msgid "These instructions are based on Debian/stretch, but they should be very similar on both older and newer versions of Debian, as well as any Debian derivatives like Ubuntu, Mint, Elementary, etc." msgstr "" #. type: Fenced code block (console) #: _docs/Deploying_the_Website.md #, no-wrap msgid "" "$ sudo su -\n" "# apt install apache2 certbot tor ca-certificates geoip-bin libapache2-mod-geoip \\\n" " python-certbot-apache rsync unattended-upgrades locales\n" "# dpkg-reconfigure unattended-upgrades # turn them on!\n" "# sed -i 's,^# \\(.* UTF-8\\)$,\\1,' /etc/locale.gen # enable all UTF-8 locales\n" "# locale-gen\n" "# a2dismod status\n" "# a2enmod headers\n" "# a2enmod rewrite\n" "# a2enmod ssl\n" "# a2enconf security\n" "# apachectl configtest && apachectl restart\n" "# certbot --apache\n" msgstr "" #. type: Title ### #: _docs/Deploying_the_Website.md #, no-wrap msgid "Apache2 config" msgstr "" #. type: Plain text #: _docs/Deploying_the_Website.md msgid "The F-Droid website is translated into several languages. There are a few things required to ensure this works." msgstr "" #. type: Plain text #: _docs/Deploying_the_Website.md msgid "The first is taken care of by `.gitlab-ci.yml`, which is to run the `./tools/prepare-multi-langs.sh` script _without_ the `--no-type-maps` argument. This ensures that each `.html` file is replaced with an Apache2 [TypeMap](https://httpd.apache.org/docs/current/mod/mod_negotiation.html#typemaps)." msgstr "" #. type: Plain text #: _docs/Deploying_the_Website.md msgid "The second is to enable _mod_rewrite_, which is used to automatically choose the correct language for browsers that are not using Javascript. The easiest way to do that is to run `sudo a2enmod rewrite`." msgstr "" #. type: Plain text #: _docs/Deploying_the_Website.md msgid "The last is to add the following to the Apache2 server or _VirtualHost_ config so that the _TypeMaps_ are used correctly, telling apache where to find the translated version of the file (replace `/var/www/html` with the actual webroot):" msgstr "" #. type: Fenced code block (apache) #: _docs/Deploying_the_Website.md #, no-wrap msgid "" "\n" " Options FollowSymLinks\n" " AllowOverride FileInfo\n" "\n" "\n" "\n" " SetHandler type-map\n" "\n" "\n" "# Virtualize the language sub\"directories\"\n" "AliasMatch ^(?:/(?:ach|af|ak|sq|am|anp|ar|ar_DZ|ar_MA|an|es_AR|hy|as|ast|de_AT|ay|az|ba|eu|bar|be|be_Latn|bn|bn_BD|bn_IN|brx|bs|bs_Cyrl|bs_Latn|br|bg|my|ca|km|ch|chr|hne|cgg|zh|zh_HK|zh_Hans|zh_Hant|ksh|kw|cr|hr|cs|da|doi|nl|nl_BE|dz|en|en_AU|en_CA|en_IE|en_PH|en_ZA|en_GB|en_US|eo|et|fo|fil|fi|frp|fr|fr_CA|fy|fur|ff|gd|gl|ka|de|el|kl|gu|gun|ht|ha|haw|he|hi|hu|is|ig|id|ia|ga|it|ja|jv|kab|kn|ks|csb|kk|rw|tlh|tlh-qaak|kok|ko|ku|ckb|ky|lo|la|lv|li|ln|lt|jbo|nds|lb|mk|mai|mg|ms|ml|mt|mnk|mi|arn|mr|mni|mn|me|mfe|nqo|nah|nap|ne|se|no|nb_NO|nb|nn|ny|oc|or|oj|os|pap|nso|fa|pms|pr|pl|pt|pt_BR|pt_PT|pa|ps|ro|rm|ru|sa|sat|sc|sco|sr|sr_Cyrl|sr_Latn|sh|sn|szl|sd|si|sk|sl|so|son|st|es|es_US|es_MX|es_PR|su|sw|sv|de_CH|tl|tg|ta|tt|te|th|bo|ti|ts|tr|tk|ug|uk|hsb|ur|ur_PK|uz|uz_Latn|ca@valencia|ve|vec|vi|wa|cy|vls|wo|sah|yi|yo|yue|zu)/)?(.*)?$ /var/www/html/$1\n" "\n" "# Tell mod_negotiation which language to prefer\n" "SetEnvIf Request_URI ^/(ach|af|ak|sq|am|anp|ar|an|hy|as|ast|ay|az|ba|eu|bar|be|bn|brx|bs|br|bg|my|ca|km|ch|chr|hne|cgg|zh|ksh|kw|cr|hr|cs|da|doi|nl|dz|en|eo|et|fo|fil|fi|frp|fr|fy|fur|ff|gd|gl|ka|de|el|kl|gu|gun|ht|ha|haw|he|hi|hu|is|ig|id|ia|ga|it|ja|jv|kab|kn|ks|csb|kk|rw|tlh|tlh-qaak|kok|ko|ku|ckb|ky|lo|la|lv|li|ln|lt|jbo|nds|lb|mk|mai|mg|ms|ml|mt|mnk|mi|arn|mr|mni|mn|me|mfe|nqo|nah|nap|ne|se|no|nb|nn|ny|oc|or|oj|os|pap|nso|fa|pms|pr|pl|pt|pa|ps|ro|rm|ru|sa|sat|sc|sco|sr|sh|sn|szl|sd|si|sk|sl|so|son|st|es|su|sw|sv|tl|tg|ta|tt|te|th|bo|ti|ts|tr|tk|ug|uk|hsb|ur|uz|ca@valencia|ve|vec|vi|wa|cy|vls|wo|sah|yi|yo|yue|zu)/ prefer-language=$1\n" "\n" "# Language codes from Weblate containing capital letters and underscores need to be treated\n" "# differently, namely the language they refer to is lower case with a hyphen\n" "SetEnvIf Request_URI ^/ar_DZ/ prefer-language=ar-dz\n" "SetEnvIf Request_URI ^/ar_MA/ prefer-language=ar-ma\n" "SetEnvIf Request_URI ^/be_Latn/ prefer-language=be-latn\n" "SetEnvIf Request_URI ^/bn_BD/ prefer-language=bn-bd\n" "SetEnvIf Request_URI ^/bn_IN/ prefer-language=bn-in\n" "SetEnvIf Request_URI ^/bs_Cyrl/ prefer-language=bs-cyrl\n" "SetEnvIf Request_URI ^/bs_Latn/ prefer-language=bs-latn\n" "SetEnvIf Request_URI ^/de_AT/ prefer-language=de-at\n" "SetEnvIf Request_URI ^/de_CH/ prefer-language=de-ch\n" "SetEnvIf Request_URI ^/en_AU/ prefer-language=en-au\n" "SetEnvIf Request_URI ^/en_CA/ prefer-language=en-ca\n" "SetEnvIf Request_URI ^/en_GB/ prefer-language=en-gb\n" "SetEnvIf Request_URI ^/en_IE/ prefer-language=en-ie\n" "SetEnvIf Request_URI ^/en_PH/ prefer-language=en-ph\n" "SetEnvIf Request_URI ^/en_US/ prefer-language=en-us\n" "SetEnvIf Request_URI ^/en_ZA/ prefer-language=en-za\n" "SetEnvIf Request_URI ^/es_AR/ prefer-language=es-ar\n" "SetEnvIf Request_URI ^/es_MX/ prefer-language=es-mx\n" "SetEnvIf Request_URI ^/es_PR/ prefer-language=es-pr\n" "SetEnvIf Request_URI ^/es_US/ prefer-language=es-us\n" "SetEnvIf Request_URI ^/fr_CA/ prefer-language=fr-ca\n" "SetEnvIf Request_URI ^/nb_NO/ prefer-language=nb-no\n" "SetEnvIf Request_URI ^/nl_BE/ prefer-language=nl-be\n" "SetEnvIf Request_URI ^/pt_BR/ prefer-language=pt-br\n" "SetEnvIf Request_URI ^/pt_PT/ prefer-language=pt-pt\n" "SetEnvIf Request_URI ^/sr_Cyrl/ prefer-language=sr-cyrl\n" "SetEnvIf Request_URI ^/sr_Latn/ prefer-language=sr-latn\n" "SetEnvIf Request_URI ^/ur_PK/ prefer-language=ur-pk\n" "SetEnvIf Request_URI ^/uz_Latn/ prefer-language=uz-latn\n" "SetEnvIf Request_URI ^/zh_Hans/ prefer-language=zh-hans\n" "SetEnvIf Request_URI ^/zh_Hant/ prefer-language=zh-hant\n" "SetEnvIf Request_URI ^/zh_HK/ prefer-language=zh-hk\n" msgstr "" #. type: Plain text #: _docs/Deploying_the_Website.md msgid "If this is not done or done incorrectly, then you will see something like the following when viewing any page:" msgstr "" #. type: Plain text #: _docs/Deploying_the_Website.md #, no-wrap msgid "> URI: index.html.en Content-language: en Content-type: text/html URI: index.html.fr Content-language: fr Content-type: text/html \n" msgstr "" #. type: Plain text #: _docs/Deploying_the_Website.md msgid "This is the result of the actual TypeMap being returned to the browser, rather than the translated file." msgstr "" #. type: Plain text #: _docs/Deploying_the_Website.md msgid "Note that this also depends on `mod_alias` and `mod_negotiation` being enabled, but this happens by default when installing apache2 on Debian." msgstr "" #. type: YAML Front Matter: title #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "FAQ - App Developers" msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "How do I get my app included?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "Please check the [inclusion policy](../Inclusion_Policy) to make sure your app is suitable for inclusion in the official F-Droid repo. The quickest way to get an app included is to make a merge request to _fdroiddata_, following [these instructions](https://gitlab.com/fdroid/fdroiddata/blob/master/CONTRIBUTING.md#merge-requests). There's also a [Submitting to F-Droid Quick Start Guide](../Submitting_to_F-Droid_Quick_Start_Guide). Requests for packaging can be posted in the [Requests for Packaging](https://gitlab.com/fdroid/rfp/issues) tracker." msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "You can also [set up your own repo](#Can_I_run_my_own_app_repo) and distribute apps yourself, outside of the F-Droid.org repo." msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "How do I change the description and add meta information like screenshots?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "There are three locations we pull metadata from:" msgstr "" #. type: Bullet: '* ' #: _docs/FAQ_-_App_Developers.md msgid "upstream app repo, following the [fastlane](https://github.com/fastlane/fastlane) or [Triple-T play plugin](https://github.com/Triple-T/gradle-play-publisher) structure" msgstr "" #. type: Bullet: '* ' #: _docs/FAQ_-_App_Developers.md msgid "F-Droid's own [metadata repository](https://gitlab.com/fdroid/fdroiddata/blob/master/metadata)" msgstr "" #. type: Bullet: '* ' #: _docs/FAQ_-_App_Developers.md msgid "F-Droid's own `repo` staging area that gets published on the public F-Droid server" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "While you cannot edit the last one, merge requests to the metadata repository updating the description are quite welcome. Screenshots on the other hand are currently only used from upstream repository." msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "We hope to pull in more stuff (e.g. changelogs) directly from upstream in the future, giving app developers more control of how their app is shown in F-Droid. However, we will always keep a minimal, authoritative metadata repo of our own." msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "How do I license my app?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "There are, broadly, two categories: copyleft and permissive, with the GPLv3 and the Apache 2.0 being the most popular respectively. Choose the former if you insist that derivatives have the same licence and the latter if you permit any kind of re-use." msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "The overall licence must be compatible with the licence of the components. However we will grant some flexibility when it comes to assets and resources; so if you have, for example, some music under a Creative Commons non-commercial licence (i.e. a Non-Free licence), then we will accept it. The important thing is to include copyright info for assets as well as source code, in the file headers and/or the README. A copy of the licences in the root of the repo is helpful (LICENSE or COPYING files). Also make a note of the copyright and licenses pertaining to external resources or programs and if it does connect to a free service, consider using the Affero GPL. See the [Inclusion Policy](../Inclusion_Policy) for more." msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "How are donations handled?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "On the web site and in the F-Droid client, we provide links to donate to your project. Ideally you should have a dedicated page explaining how and why to donate your project, so we can link directly to it. Remember that most users will probably access this straight from the F-Droid client on an Android device. You should also have this information accessible from within your application." msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "We have fields in our metadata for Bitcoin, Litecoin, Flattr and Liberapay donations. Be sure to contact us if there is a change to any of those or if you stop accepting them; if you accept new methods you can contact us about that too." msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "If your app is in our repo but we are missing any of the above information, please make sure we know about it." msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "Will my app be built from source?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "Yes. In all but a very few cases (for technical or historical reasons), we build all applications directly from the source code. This guarantees that the source code is available for the version people have installed. While we're not suggesting that *your* source code is incomplete, not published or out of date, this happens a lot." msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "What about versioning?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "Android is aware of two version information, the versionName (a user-facing string) and the versionCode (an integer that gets compared to determine what actually IS an update). For additional information, please see the [Android Developer Documentation](https://developer.android.com/studio/publish/versioning.html). Please make sure not to have contradicting information (e.g. mismatching _AndroidManifest.xml_ and build.gradle)." msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "We try to build only what you would consider to be releases. These should have matching version names and, more importantly, matching version codes to releases you build yourself, and be built from the same code. Obviously this task is easier if your source code history is clear - for example, if releases are tagged or otherwise labeled. If you tag release, please ensure you keep the same tagging scheme, e.g. if you start using a \"v\" prefix, keep using that." msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "We try not to build from a random repository head version." msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "Do I need to tell you when I update?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "We will [detect](../Build_Metadata_Reference#UpdateCheckMode) new releases of your app and update our metadata accordingly, which will then cause us to check the code and add new builds to our system. Tags help greatly for adding new versions, but do remember to push the tags to the origin repo each time. Of course, if you move source code to a different website, you should tell us. There are currently some issues around detecting new versions when the _AndroidManifest.xml_ is moved so if there is some urgency, you can let us know if that happens." msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "Some app developers submit merge requests to us with all the relevant build data when they release. You don't need to do this, but it can speed things up. Historically, as a small community project, we have been slower to process updates than we'd like to be, but this situation is improving all the time." msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "Our update checks are dumb and just scrape build files: We do not run any build code, so do not use time-based versioning or any other sort of calculating your version at build time (e.g. moving them to multiple subversions that get concatenated at build or even having complex function calls to do this)." msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "I've published a new release. Why is it not in the repository?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "When we detect a new release, it may take a few days to make it into the repository as the build process runs only once a day. Before the build has completed, the monitor page for your app will list it in [F-Droid Monitor - Need updating](https://monitor.f-droid.org/builds/needsupdate). As long as the text under *Versions* stating \"The current (recommended) version is *xxx* (version code *yyy*)\" shows the version numbers corresponding to your latest release, we detected it and the APK should be available soon. Just give it some time." msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "Another reason could be that the app failed to build. You can watch the build process on [F-Droid Monitor - Running](https://monitor.f-droid.org/builds/running) and the previous cycle in [Build](https://monitor.f-droid.org/builds/build)." msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "What about signing?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "Packages built by F-Droid are signed by F-Droid, so all apps in the [official F-Droid repo](https://f-droid.org/repo) are signed by F-Droid keys. F-Droid will generate a new key for each app that is included. All of the different APKs built from different versions of an app will be signed by the same app key. But do note: if an app is also distributed in an APK signed by the developer, like in the Google Play Store, then the F-Droid APK will have a different signature." msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "The Android OS requires that for an app to be upgraded in place, it bears the same signature as the currently installed version. This protects against inadvertent installation of an untrusted or unwanted upgrade, and also protects the app's private data, which can only be accessed by that application (or an application that has been granted root access)." msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "This situation presents a *minor* inconvenience to users who want to switch from a version signed by one party to a version signed by another. For example, if a user is running a version they installed via F-Droid, and later wish to switch to a version you sign and distribute yourself via another channel, they would have to take the additional step of uninstalling and reinstalling the app. On its own this is not even enough to qualify as a minor inconvenience - however, the consequences of the uninstall are that the app's private data is removed (again, this is for security) so the user will probably want to export that first, and re-import it afterwards." msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "We also support reproducible builds, so we can build a version from source and check against your official release. If they match (ignoring the signature) we can then publish your official APK with your signature used. This is a tedious task, since we have to standardize on the build parameters and tools, but it should be worth it in the long run. We also try to verify our own builds and get a lot of binary differences, see [our verification server results](https://verification.f-droid.org/). However, things will improve over time." msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "Can APKs signed by my key be included?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "Only APKs built by F-Droid are included in the official F-Droid repo. We can try to reproduce your APK, as mentioned above, but if this fails (or e.g. when you want to distribute an app with closed-source components or API keys etc.), you can put any APK in your own \"[F-Droid binary repo](../Setup_an_F-Droid_App_Repo)\", and people can add your repo to their F-Droid client in order to get your APKs." msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "Can I run my own F-Droid package repository?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "Yes! You can also setup and run your own F-Droid repository of apps and other packages. If you also release your own app via other app stores, like Google Play, we recommend that you also include those releases in your own binary repo, for among other reasons, this will provide a source of APKs for [reproducible builds](../Reproducible_Builds). This repository can be a \"[simple binary repo](../Setup_an_F-Droid_App_Repo)\", which does not use the _fdroidserver_ build system, or you could host your own mirror of the full F-Droid.org repo." msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "Can I see who's installing my app?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "No. While information and metrics about installations would be interesting and useful to you, it would also require us to track and monitor our users, something we won't do. We don't have any information about what apps or versions people install, whether they keep them installed, what other software or OS version they're running, or indeed anything else, so we can't pass that information on to you." msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "Can I track users from my app?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "You can, but if you include any kind of tracking or analytics in your application (even sending crash reports) this must be something that the user explicitly opts **in** to - i.e. you ask them on first run, before sending anything anywhere, or there's a preference that defaults to OFF. In all other cases, we may still include the app, but it will be flagged with our 'Tracking' AntiFeature, which means users will only ever see the app if they choose to view such apps." msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "Additionally, note that third party analytics libraries that come in the form of proprietary software (for example, Google Analytics or Flurry) are not acceptable here." msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "Can I include advertising?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "Yes, but:" msgstr "" #. type: Bullet: '1. ' #: _docs/FAQ_-_App_Developers.md msgid "Many users don't like ads and find them intrusive. We flag applications that include ads, so people know what they're getting. They can choose whether or not these apps will be shown to them." msgstr "" #. type: Bullet: '2. ' #: _docs/FAQ_-_App_Developers.md msgid "Frequently incorporating ads into an app is done by including proprietary software in the form of a binary library (jar file). Obviously this would make your app ineligible for inclusion." msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "Which libraries and dependencies are good to use?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "To be FLOSS, your entire app has to be, including dependencies. If you use Non-Free/proprietary libraries, we cannot build your app and thus it cannot be included in our mainline repository (see \"Can I run my own app repo?\" in that case). Unfortunately that rules out any libraries that are part of the \"Google repository\" from the SDK manager (e.g. play-services, fabric, firebase) -- only the \"Android support repository\" is allowed." msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "For external resources, please restrain yourself to \"well known repositories\", e.g. mavenCentral or JCenter (see complete listing in the \"srclib\" section of [Build Metadata Reference](../Build_Metadata_Reference)). Please note that e.g. Bintray does not only offers JCenter, but user-repos as well. Those are not part of the trusted repository list." msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "If you require dependencies that are not available through those repositories, please do not use binary jar files directly, but provide an easy way to build them from source: e.g. by providing a \"pre-build\" script, by including them to your actual build process (gradle task) and including the library source in your project (hard or by submodule)." msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "Replacements for known \"usual suspects\":" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "Note, that all of following are just subjective popularity-based suggestions; there may be other FOSS projects better suited for your needs." msgstr "" #. type: Bullet: '- ' #: _docs/FAQ_-_App_Developers.md msgid "Crittercism, BugSense — ACRA" msgstr "" #. type: Bullet: '- ' #: _docs/FAQ_-_App_Developers.md msgid "Google Analytics — Piwik" msgstr "" #. type: Bullet: '- ' #: _docs/FAQ_-_App_Developers.md msgid "Google Maps — OpenStreetMap, e.g. through [mapsforge](http://www.mapsforge.org) or [osmdroid](http://osmdroid.org)" msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "Aren't Google's SDK and libraries free, open source software?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "While much of Android is free open source software, much of it is not at all. The Android SDK binaries is made available by Google under a proprietary license but almost all of the source code for the Android SDK is available under the Apache license. Google APIs, used for building apps using Google Services like Maps, GCM, etc, are free to the extent that the library comes pre-installed on the device. Almost all of the Google libraries, like Play Services, Google Admob, and GCM, are proprietary and cannot be included in the main F-Droid repository." msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "Which build system to use?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "We have good support for \"ant\" and \"gradle\" based builds, while \"maven\" was only used for a short period of time and for dependencies. For other build systems, you might have to provide us some detailed information on how to handle that, so we can setup the app correctly or maybe even incorporate them into our server tools." msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "Special note on Cordova/Phonegap/HTML-Apps:" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "We cannot build cordova apps directly, but recent version allows you to export the platform-specific code that can be build standalone using \"gradle\". So for now we require this code to be present and up-to-date in the source repository." msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "How do I get my app removed?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "As a best practice our packaging team usually makes sure we have consent from upstream developers, before adding apps to the official f-droid.org repository. Should you for whatever reason want us to remove your app from the official f-droid.org repository, please ask our packaging team to do so. The probably fastest way to get your request processed is to open an issue on our data [issue tracker](https://gitlab.com/fdroid/fdroiddata/-/issues). You can also get in contact with our team on our [other communication channels]({{ site.baseurl }}/about/#contact)." msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "How could my app be removed?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "Any changes to your app that result in a violation of our [inclusion policy](../Inclusion_Policy) will get your app removed or archived. E.g. you could use a license for future versions that prohibits anyone from distributing it, or you could introduce proprietary binaries into your source code. Both of those things will ensure that those future versions do not appear in our repository, but you would have to go a lot further (e.g. serious security flaws in the previous versions, combined with unpublished source code and an uncooperative attitude) for us to actually remove the whole application." msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "In some rare cases we also have to comply with [take-down requests](../Take-Down_Requests) in accordance with our other policies. Generally speaking we recommend steering clear of trademark and copyright infringements." msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "I see apps on the big stores that are blatant copies. Wouldn't it be better if I made my app closed source?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "Firstly, it depends on the license: unless you apply a copyleft licence like the GPLv3, other people can do whatever they like with the source code (though they may be required to rebrand it). If your app is GPLv3 and no source code is published by the plagiarists; their versions obviously include proprietary ad libraries, or any sign of your authorship was simply removed, those copies are breaking the law and you should [demand Google](https://www.google.com/android_dmca.html) to remove them from their app store. You may threaten them with DMCA or other local laws if you wish. If all else fails, before going proprietary, balance the loss and confusion to the users and maintainers of the free app against the feeling of justice that you'll get by seeing those illegal clones lose the few cents in ad revenue that they would have got. In the longer run we want to improve donations via F-Droid so you can be supported financially and we already support Bitcoin, Litecoin, OpenCollective, Flattr and Liberapay as well as any other payment method that you can suggest via a website." msgstr "" #. type: Title ### #: _docs/FAQ_-_App_Developers.md #, no-wrap msgid "How is the F-Droid client git workflow structured?" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "`git` allows tons of flexibility in the workflow of how people work together, so it is important to clearly define the workflow of this community so that people know what to expect. The `git` workflow the F-Droid client app uses is relatively simple and based on the very common workflow established by github.com, gitlab.com and others like it. Here's a break down of what that means:" msgstr "" #. type: Bullet: '- ' #: _docs/FAQ_-_App_Developers.md msgid "all development work happens in the `master` branch" msgstr "" #. type: Bullet: '- ' #: _docs/FAQ_-_App_Developers.md msgid "code is submitted for inclusion via Merge Requests (MRs)" msgstr "" #. type: Bullet: '- ' #: _docs/FAQ_-_App_Developers.md msgid "releases happen in a short-lived, stable release branch per major release (e.g. `stable-0.95`, `stable-0.96`, `stable-0.97`, etc.)" msgstr "" #. type: Bullet: '- ' #: _docs/FAQ_-_App_Developers.md msgid "the work that goes into the stable release branch must be tightly focused and as small as possible to keep the release cycle as short as possible" msgstr "" #. type: Bullet: '- ' #: _docs/FAQ_-_App_Developers.md msgid "the `master` branch must never be merged with any stable release branch" msgstr "" #. type: Bullet: '- ' #: _docs/FAQ_-_App_Developers.md msgid "stable release branches must never be merged with the `master` branch" msgstr "" #. type: Bullet: '- ' #: _docs/FAQ_-_App_Developers.md msgid "Merge Requests for a stable release branch can include commits from `master`" msgstr "" #. type: Bullet: '- ' #: _docs/FAQ_-_App_Developers.md msgid "not all commits that are included in a stable release branch are required to be in `master`" msgstr "" #. type: Bullet: '- ' #: _docs/FAQ_-_App_Developers.md msgid "what you do in your git forks is up to you, but the final merge request should not include merge commits" msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "Here is the discussion from the meeting where we nailed this down: " msgstr "" #. type: Plain text #: _docs/FAQ_-_App_Developers.md msgid "This article includes a good discussion of \"feature branches\" versus \"release branches\" and short-lived vs. long-lived branches: " msgstr "" #. type: YAML Front Matter: title #: _docs/FAQ_-_Client.md #, no-wrap msgid "FAQ - Client" msgstr "SSS - İstemci" #. type: Title ### #: _docs/FAQ_-_Client.md #, no-wrap msgid "The client shows a newer version. Why didn't it notify me of an update?" msgstr "İstemci daha yeni bir sürüm gösteriyor. Neden beni güncelleme konusunda bilgilendirmedi?" #. type: Plain text #: _docs/FAQ_-_Client.md msgid "Assuming you have update notifications switched on (in Preferences) this probably means the newer version is not *recommended* for your device." msgstr "Güncelleme bildirimlerinin açık olduğunu varsayarsak (Tercihler kısmında) bu muhtemelen yeni sürümün cihazınız için *önerilen* olmadığı anlamına gelir." #. type: Plain text #: _docs/FAQ_-_Client.md msgid "In the list of versions in the client, the *recommended version* is identified by a '\\*'. This is the version which is closest to the *current version* – the version that the developers of the application publish to Google Play or their website, or tag in their source code repository. There may be newer versions than this in the list – they could be, for example, test or beta versions. You can install these, but update notifications are not shown because the Version Code (Android's scheme for version numbering) is greater than the _CurrentVersionCode_." msgstr "İstemcideki sürümler listesinde, *önerilen sürüm* '\\*' ile tanımlanır. Bu, *güncel sürümüne* – uygulamanın geliştiricilerinin Google Play'de veya web sitelerinde yayınladıkları veya kaynak kodu depolarında etiketledikleri sürüme en yakın olan sürümdür. Listede bundan daha yeni sürümler olabilir – bunlar örneğin test veya beta sürümleri olabilir. Bunları yükleyebilirsiniz, ancak Sürüm Kodu (Android'in sürüm numaralandırma şeması) _CurrentVersionCode_ adresinden büyük olduğu için güncelleme bildirimleri gösterilmez." #. type: Plain text #: _docs/FAQ_-_Client.md msgid "For third-party repositories, it may also be the case that the maintainers neglected to update the current version in their repository's metadata." msgstr "Üçüncü taraf depoları için, bakım yapanların depolarının meta verilerindeki mevcut sürümü güncellemeyi ihmal etmeleri de söz konusu olabilir." #. type: Title ### #: _docs/FAQ_-_Client.md #, no-wrap msgid "Why does F-Droid need these permissions?" msgstr "F-Droid'in bu izinlere neden ihtiyacı var?" #. type: Plain text #: _docs/FAQ_-_Client.md msgid "F-Droid is an app store, that means it is already entirely responsible for finding, downloading and installing apps. That means it already has all permissions, in effect. For example, a malicious app store with no permissions could modify every app as it installs it, granting itself all permissions via those modified apps. This is why it is so important that an app store is Free Software and publicly audited. F-Droid is both. That said, F-Droid declares the permissions it actually uses so that it is honest and transparent about what it is doing." msgstr "F-Droid bir uygulama mağazasıdır, yani uygulamaları bulmak, indirmek ve yüklemekten zaten tamamen sorumludur. Bu da zaten tüm izinlere sahip olduğu anlamına gelir. Örneğin hiçbir izni olmayan kötü niyetli bir uygulama mağazası, yüklediği her uygulamayı değiştirebilir ve bu değiştirilmiş uygulamalar aracılığıyla kendisine tüm izinleri verebilir. Bu nedenle bir uygulama mağazasının Özgür Yazılım olması ve kamuya açık olarak denetlenmesi çok önemlidir. F-Droid her ikisine de sahiptir. Bununla birlikte F-Droid gerçekte kullandığı izinleri beyan eder, böylece ne yaptığı konusunda dürüst ve şeffaf olur." #. type: Plain text #: _docs/FAQ_-_Client.md msgid "Here are the permissions that F-Droid current uses:" msgstr "İşte F-Droid'in şu anda kullandığı izinler:" #. type: Plain text #: _docs/FAQ_-_Client.md msgid "Download apps from f-droid.org and other app repositories" msgstr "f-droid.org ve diğer uygulama depolarından uygulama indirir" #. type: Plain text #: _docs/FAQ_-_Client.md #, no-wrap msgid " android.permission.INTERNET\n" msgstr " android.permission.INTERNET\n" #. type: Plain text #: _docs/FAQ_-_Client.md msgid "Start itself automatically at boot time so that it can receive updates:" msgstr "Güncellemeleri alabilmesi için önyükleme sırasında kendini otomatik olarak başlatır:" #. type: Plain text #: _docs/FAQ_-_Client.md #, no-wrap msgid " android.permission.RECEIVE_BOOT_COMPLETED\n" msgstr " android.permission.RECEIVE_BOOT_COMPLETED\n" #. type: Plain text #: _docs/FAQ_-_Client.md msgid "For app swap to get current WiFi status, and prompt the user to enable WiFi when swapping:" msgstr "Uygulama takasının mevcut WiFi durumunu alması ve takas sırasında kullanıcıdan WiFi'ı etkinleştirmesini istemesi için:" #. type: Plain text #: _docs/FAQ_-_Client.md #, no-wrap msgid "" " android.permission.ACCESS_NETWORK_STATE\n" " android.permission.ACCESS_WIFI_STATE\n" " android.permission.CHANGE_WIFI_MULTICAST_STATE\n" " android.permission.CHANGE_NETWORK_STATE\n" " android.permission.CHANGE_WIFI_STATE\n" msgstr "" " android.permission.ACCESS_NETWORK_STATE\n" " android.permission.ACCESS_WIFI_STATE\n" " android.permission.CHANGE_WIFI_MULTICAST_STATE\n" " android.permission.CHANGE_NETWORK_STATE\n" " android.permission.CHANGE_WIFI_STATE\n" #. type: Plain text #: _docs/FAQ_-_Client.md msgid "For app swap to see the Bluetooth state, and prompt the user to enable Bluetooth when swapping:" msgstr "Uygulama takasının Bluetooth durumunu görmesi ve takas sırasında kullanıcıdan Bluetooth'u etkinleştirmesini istemesi için:" #. type: Plain text #: _docs/FAQ_-_Client.md #, no-wrap msgid "" " android.permission.BLUETOOTH\n" " android.permission.BLUETOOTH_ADMIN\n" msgstr "" " android.permission.BLUETOOTH\n" " android.permission.BLUETOOTH_ADMIN\n" #. type: Plain text #: _docs/FAQ_-_Client.md msgid "Read app repository URLs via NFC, for both swap and regular app repositories:" msgstr "Hem takas hem de normal uygulama depoları için NFC aracılığıyla uygulama deposu URL'lerini okur:" #. type: Plain text #: _docs/FAQ_-_Client.md #, no-wrap msgid " android.permission.NFC\n" msgstr " android.permission.NFC\n" #. type: Plain text #: _docs/FAQ_-_Client.md msgid "Temporarily store downloaded files on the SD Card:" msgstr "İndirilen dosyaları geçici olarak SD Kartta saklar:" #. type: Plain text #: _docs/FAQ_-_Client.md #, no-wrap msgid " android.permission.WRITE_EXTERNAL_STORAGE\n" msgstr " android.permission.WRITE_EXTERNAL_STORAGE\n" #. type: Plain text #: _docs/FAQ_-_Client.md msgid "Use F-Droid Privileged Extension which gives F-Droid system <code>priv-app access. This improves security by allowing automatic app updates as well as letting the user leave the \"Unknown Sources\" setting off:" msgstr "F-Droid sistemine <code>priv-app erişimi sağlayan F-Droid Ayrıcalıklı Uzantı kullanın. Bu otomatik uygulama güncellemelerine izin vermenin yanı sıra kullanıcının \"Bilinmeyen Kaynaklar\" ayarını kapalı bırakmasına izin vererek güvenliği artırır:" #. type: Plain text #: _docs/FAQ_-_Client.md #, no-wrap msgid " org.fdroid.fdroid.privileged.USE_SERVICE\n" msgstr " org.fdroid.fdroid.privileged.USE_SERVICE\n" #. type: Plain text #: _docs/FAQ_-_Client.md msgid "Use root access to install F-Droid Privileged Extension as a system <code>priv-app:" msgstr "F-Droid Ayrıcalıklı Uzantı'sını bir sistem <code>priv-app olarak yüklemek için root erişimini kullanır:" #. type: Plain text #: _docs/FAQ_-_Client.md #, no-wrap msgid " android.permission.ACCESS_SUPERUSER\n" msgstr " android.permission.ACCESS_SUPERUSER\n" #. type: Title ### #: _docs/FAQ_-_Client.md #, no-wrap msgid "What is expert mode?" msgstr "Uzman modu nedir?" #. type: Plain text #: _docs/FAQ_-_Client.md msgid "Enabling the 'Expert Mode' setting in Preferences will make the client display additional information which is probably not useful to most people. This includes things like package IDs and signature hashes. Some extra configuration options also appear." msgstr "Tercihler de 'Uzman Modu' ayarının etkinleştirilmesi, istemcinin muhtemelen çoğu kişi için yararlı olmayan ek bilgileri görüntülemesini sağlayacaktır. Bu mod paket kimlikleri ve imza karmaları gibi şeyleri içerir. Bazı ekstra yapılandırma seçenekleri de görünür." #. type: Title ### #: _docs/FAQ_-_Client.md #, no-wrap msgid "I can download apps, but then \"Install\" is disabled. Why?" msgstr "Uygulamaları indirebiliyorum ama sonra \"Yükle\" devre dışı kalıyor. Neden?" #. type: Plain text #: _docs/FAQ_-_Client.md msgid "Some users have apps such as Twilight installed, which draw directly to the screen regardless of what app is shown. For security reasons, Android wisely doesn't allow apps to be installed when such apps are running. If it did, then people could create apps that draw a fake \"Install\" button over the top of the real one, resulting in users installing unwanted apps. The solution is to disable such apps before installing via F-Droid." msgstr "Bazı kullanıcılar, hangi uygulamanın gösterildiğine bakmaksızın doğrudan ekrana çizim yapan Twilight gibi uygulamaları yüklemişlerdir. Güvenlik nedenleriyle Android, bu tür uygulamalar çalışırken uygulamaların yüklenmesine akıllıca izin vermez. Eğer izin verseydi, insanlar gerçek düğmenin üzerine sahte bir \"Yükle\" düğmesi çizen uygulamalar oluşturabilir ve kullanıcıların istenmeyen uygulamaları yüklemesine neden olabilirdi. Çözüm F-Droid aracılığıyla yüklemeden önce bu tür uygulamaları devre dışı bırakmaktır." #. type: Plain text #: _docs/FAQ_-_Client.md msgid "See [Issue 151](https://gitlab.com/fdroid/fdroidclient/issues/151) or [this Google+ comment](https://plus.google.com/116713673773180618201/posts/UvW3tgSgdUp) for more details." msgstr "Daha fazla ayrıntı için [Sorun 151](https://gitlab.com/fdroid/fdroidclient/issues/151) veya [bu Google+ yorumuna](https://plus.google.com/116713673773180618201/posts/UvW3tgSgdUp) bakın." #. type: Title ### #: _docs/FAQ_-_Client.md #, no-wrap msgid "Why doesn't the client show the number of installs/downloads for each app?" msgstr "İstemci neden her uygulama için yükleme/indirme sayısını göstermiyor?" #. type: Plain text #: _docs/FAQ_-_Client.md msgid "To show how many people had installed an app, we would have to be spying on them - in other words, keeping track of what apps people install and uninstall on their devices, and sending that data back to ourselves. We don't do that, and we're not going to do it." msgstr "Bir uygulamayı kaç kişinin yüklediğini göstermek için onları gözetliyor olmamız gerekirdi - başka bir deyişle, insanların cihazlarına hangi uygulamaları yükleyip kaldırdıklarını takip etmemiz ve bu verileri kendimize geri göndermemiz gerekirdi. Biz bunu yapmıyoruz ve yapmayacağız da." #. type: Plain text #: _docs/FAQ_-_Client.md msgid "Theoretically, the number of downloads is available via our web server logs. However, this would be a meaningless figure because:" msgstr "Teorik olarak, indirme sayısı web sunucusu günlüklerimizden elde edilebilir. Ancak, bu anlamsız bir rakam olacaktır çünkü:" #. type: Bullet: '1. ' #: _docs/FAQ_-_Client.md msgid "I might download an app, and decide not to install it" msgstr "Bir uygulama indirebilir ve yüklememeye karar verebilirim" #. type: Bullet: '2. ' #: _docs/FAQ_-_Client.md msgid "I might download and install it, then uninstall it immediately because I don't like it" msgstr "İndirip kurabilirim, sonra beğenmediğim için hemen kaldırabilirim" #. type: Bullet: '3. ' #: _docs/FAQ_-_Client.md msgid "I might download my app 1,000,000 times to make it look popular" msgstr "Popüler görünmesi için uygulamamı 1.000.000 kez indirebilirim" #. type: Plain text #: _docs/FAQ_-_Client.md msgid "Additionally, on a technical level, we don't even track that information. While the back-end server does track hits on each APK, these are actually served up by multiple front-end servers that cache. This means one counted hit could represent one download, or a million. Theoretically we could resolve this, but we are not interested enough to do so." msgstr "Ayrıca, teknik düzeyde, bu bilgileri takip etmiyoruz bile. Arka uç sunucusu her APK'daki isabetleri takip etse de, bunlar aslında önbelleğe alan birden fazla ön uç sunucusu tarafından sunulur. Bu da sayılan bir isabetin bir ya da bir milyon indirmeyi temsil edebileceği anlamına geliyor. Teorik olarak bunu çözebiliriz, ancak bunu yapacak kadar ilgilenmiyoruz." #. type: Plain text #: _docs/FAQ_-_Client.md msgid "Finally, even assuming any of this information were available, what does it actually mean? Are you going to use an app just because lots of others do, or ignore it because few others have discovered it yet? Is this a sensible way to decide whether something is useful to you or not? Perhaps you should just try it." msgstr "Son olarak, bu bilgilerden herhangi birinin mevcut olduğunu varsaysak bile, gerçekte ne anlama geliyor? Sırf başkaları kullanıyor diye bir uygulamayı kullanacak mısınız yoksa henüz çok az kişi keşfetti diye görmezden mi geleceksiniz? Bir şeyin sizin için yararlı olup olmadığına karar vermenin mantıklı bir yolu mu? Belki de sadece denemelisiniz." #. type: Title ### #: _docs/FAQ_-_Client.md #, no-wrap msgid "How do I send a Repo configuration using NFC?" msgstr "NFC kullanarak bir Depo yapılandırmasını nasıl gönderebilirim?" #. type: Plain text #: _docs/FAQ_-_Client.md msgid "Starting in v0.59, the F-Droid client supports sending repo configurations via NFC. For this to work, both the sending and receiving device must have NFC and be running Android 4.0 or newer." msgstr "v0.59'dan itibaren F-Droid istemcisi, NFC aracılığıyla repo yapılandırmalarının gönderilmesini desteklemektedir. Bunun çalışması için hem gönderen hem de alan cihazın NFC'ye sahip olması ve Android 4.0 veya daha yenisini çalıştırması gerekir." #. type: Bullet: '1. ' #: _docs/FAQ_-_Client.md msgid "select **Repositories** in the menu on the main screen" msgstr "ana ekrandaki menüden **Depolar** öğesini seçin" #. type: Bullet: '2. ' #: _docs/FAQ_-_Client.md msgid "click on the repo that you want to send" msgstr "göndermek istediğiniz depoya tıklayın" #. type: Bullet: '2. ' #: _docs/FAQ_-_Client.md msgid "put the devices together until you get the NFC zoom prompt" msgstr "NFC yakınlaştırma istemini alana kadar cihazları bir araya getirin" #. type: Bullet: '4. ' #: _docs/FAQ_-_Client.md msgid "touch the screen with the selected repo" msgstr "seçili depo ile ekrana dokunun" #. type: Bullet: '5. ' #: _docs/FAQ_-_Client.md msgid "click **OK** on the receiving device" msgstr "alıcı cihazda **TAMAM** kısmına tıklayın" #. type: Title ### #: _docs/FAQ_-_Client.md #, no-wrap msgid "How can I send the F-Droid app using NFC or Android Beam?" msgstr "F-Droid uygulamasını NFC veya Android Beam kullanarak nasıl gönderebilirim?" #. type: Plain text #: _docs/FAQ_-_Client.md msgid "Starting in v0.59, the F-Droid client supports sending the F-Droid app itself to another device to set it up for the first time. For this to work, both the sending and receiving device must have NFC, Android Beam, and be running Android 4.1 or newer." msgstr "v0.59 sürümünden itibaren F-Droid istemcisi, F-Droid uygulamasını ilk kez kurmak için başka bir cihaza göndermeyi destekler. Bunun çalışması için hem gönderen hem de alan cihazın NFC, Android Beam ve Android 4.1 veya daha yeni bir sürümü çalıştırıyor olması gerekir." #. type: Bullet: '1. ' #: _docs/FAQ_-_Client.md msgid "go to the F-Droid main screen" msgstr "F-Droid ana ekranına gidin" #. type: Bullet: '3. ' #: _docs/FAQ_-_Client.md msgid "touch the screen with F-Droid installed" msgstr "F-Droid yüklü ekrana dokunun" #. type: Bullet: '4. ' #: _docs/FAQ_-_Client.md msgid "keep the devices near each other until the beam completes" msgstr "ışın tamamlanana kadar cihazları birbirine yakın tutun" #. type: Bullet: '5. ' #: _docs/FAQ_-_Client.md msgid "on the receiving device, click the Android Beam notification and install F-Droid" msgstr "alıcı cihazda Android Beam bildirimine tıklayın ve F-Droid'i yükleyin" #. type: Title ### #: _docs/FAQ_-_Client.md #, no-wrap msgid "How can I send apps via Bluetooth or WiFi?" msgstr "Uygulamaları Bluetooth veya WiFi üzerinden nasıl gönderebilirim?" #. type: Plain text #: _docs/FAQ_-_Client.md msgid "This is done using the 'Nearby' Tab in F-Droid (previously called 'Swap'). See [here](../../tutorials/swap) for a walkthrough." msgstr "F-Droid'deki 'Yakınımda' Sekmesi (daha önce 'Takas' olarak adlandırılıyordu) kullanılarak yapılır. İzlenecek yol için [buraya](../../tutorials/swap) bakın." #. type: Title ### #: _docs/FAQ_-_Client.md #, no-wrap msgid "What is the security model that F-Droid uses?" msgstr "F-Droid'in kullandığı güvenlik modeli nedir?" #. type: Plain text #: _docs/FAQ_-_Client.md msgid "The F-Droid security model started out with HTTPS connections and signed metadata. It has been evolving, inspired by [Debian](https://wiki.debian.org/SecureApt), [The Update Framework](https://github.com/theupdateframework/tuf/blob/develop/docs/tuf-spec.txt), and other things. You can read about details here: [Security Model](../Security_Model)." msgstr "F-Droid'in güvenlik modeli; HTTPS bağlantıları ve üst verileri imzalamakla başladı . [Debian](https://wiki.debian.org/SecureApt), [The Update Framework](https://github.com/theupdateframework/tuf/blob/develop/docs/tuf-spec.txt), ve diğerlerinden esinlenerek gelişiyor. Ayrıntıları buradan okuyabilirsiniz: [Security Model](../Security_Model)." #. type: YAML Front Matter: title #: _docs/FAQ_-_General.md #, no-wrap msgid "FAQ - General" msgstr "SSS - Genel" #. type: Title ### #: _docs/FAQ_-_General.md #, no-wrap msgid "Where should I ask questions?" msgstr "Soruları nerede sormam gerekir?" #. type: Plain text #: _docs/FAQ_-_General.md msgid "We welcome all questions and have a few places to reach out to the F-Droid community:" msgstr "Tüm sorularınızı yanıtlamaktan memnuniyet duyarız ve F-Droid topluluğuna ulaşabileceğiniz birkaç yer bulunmaktadır:" #. type: Bullet: '- ' #: _docs/FAQ_-_General.md msgid "the IRC chat room: [\\#fdroid](ircs://irc.oftc.net:6697/fdroid) IRC chatroom on OFTC ([click here to join the webchat](https://webchat.oftc.net/?randomnick=1&channels=fdroid&prompt=1))" msgstr "IRC sohbet odası: [\\#fdroid](ircs://irc.oftc.net:6697/fdroid) OFTC üzerindeki IRC sohbet odası ([web sohbetine katılmak için buraya tıklayın](https://webchat.oftc.net/?randomnick=1&channels=fdroid&prompt=1))" #. type: Bullet: '- ' #: _docs/FAQ_-_General.md msgid "the [web forum](https://forum.f-droid.org/)" msgstr "[forum](https://forum.f-droid.org/)" #. type: Bullet: '- ' #: _docs/FAQ_-_General.md msgid "[issue tracker](https://gitlab.com/fdroid/fdroidclient/issues) for the Android app itself (aka client)" msgstr "Android uygulamasının kendisi (diğer adıyla istemci) için [sorun izleyici](https://gitlab.com/fdroid/fdroidclient/issues)" #. type: Bullet: '- ' #: _docs/FAQ_-_General.md msgid "[issue tracker](https://gitlab.com/fdroid/fdroidserver/issues) for the developer tools (aka server)" msgstr "Geliştirici araçları (diğer adıyla sunucu) için [issue tracker](https://gitlab.com/fdroid/fdroidserver/issues)" #. type: Bullet: '- ' #: _docs/FAQ_-_General.md msgid "[issue tracker](https://gitlab.com/fdroid/rfp/issues) for packaging new apps" msgstr "Yeni uygulamaları hazırlamak için [sorun izleyici](https://gitlab.com/fdroid/rfp/issues)" #. type: Bullet: '- ' #: _docs/FAQ_-_General.md msgid "[issue tracker](https://gitlab.com/fdroid/fdroiddata/issues) for issues with published apps" msgstr "Yayınlanmış uygulamalarla ilgili sorunlar için [sorun izleyici](https://gitlab.com/fdroid/fdroiddata/issues)" #. type: Title ### #: _docs/FAQ_-_General.md #, no-wrap msgid "Why isn't my favourite app included?" msgstr "Favori uygulamam neden dahil değil?" #. type: Plain text #: _docs/FAQ_-_General.md msgid "Some common reasons:" msgstr "Bazı yaygın nedenler:" #. type: Bullet: '- ' #: _docs/FAQ_-_General.md msgid "It's not [Free Software](https://www.gnu.org/philosophy/free-sw.html);" msgstr "Uygulama [Özgür Yazılım](https://www.gnu.org/philosophy/free-sw.html) değil;" #. type: Bullet: '- ' #: _docs/FAQ_-_General.md msgid "We're trying to include it, but there's a problem with it that we're trying to resolve. Check the open [merge requests](https://gitlab.com/fdroid/fdroiddata/-/merge_requests);" msgstr "Eklemeye çalışıyoruz ancak çözmeye çalıştığımız bir sorun var. Açık [birleştirme isteklerini](https://gitlab.com/fdroid/fdroiddata/-/merge_requests) kontrol edin;" #. type: Bullet: '- ' #: _docs/FAQ_-_General.md msgid "It's on our radar, but we haven't got to it yet. Search the [issues](https://gitlab.com/fdroid/fdroiddata/-/issues);" msgstr "Radarımızda ama henüz ele almadık. [Sorunları](https://gitlab.com/fdroid/fdroiddata/-/issues) arayın;" #. type: Bullet: '- ' #: _docs/FAQ_-_General.md msgid "We don't know about it. See the [Inclusion Policy](../Inclusion_Policy)." msgstr "Bu konuda bilgimiz yok. [Dahil Etme Politikası](../Inclusion_Policy) bölümüne bakın." #. type: Plain text #: _docs/FAQ_-_General.md msgid "Otherwise if you think that an app respects the Inclusion Policy and actually nobody is talking about it in the forum, you can try to be the first to do it: See the [Inclusion How-To](../Inclusion_How-To)." msgstr "Aksi takdirde bir uygulamanın Dahil Etme Politikası'na uyduğunu düşünüyorsanız ve aslında forumda kimse bundan bahsetmiyorsa, bunu ilk yapan siz olabilirsiniz: [Dahil Etme Nasıl Yapılır](../Inclusion_How-To) bölümüne bakın." #. type: Title ### #: _docs/FAQ_-_General.md #, no-wrap msgid "How can I keep track of new apps?" msgstr "Yeni uygulamaları nasıl takip edebilirim?" #. type: Plain text #: _docs/FAQ_-_General.md msgid "There are several ways of keeping up with new apps that are added:" msgstr "Eklenen yeni uygulamaları takip etmenin birkaç yolu var:" #. type: Bullet: '- ' #: _docs/FAQ_-_General.md msgid "The website sidebar shows the three most recent updates, as well as the three most recent additions" msgstr "Web sitesi kenar çubuğunda en son üç güncellemenin yanı sıra en son üç ekleme de gösterilmektedir" #. type: Bullet: '- ' #: _docs/FAQ_-_General.md msgid "In the client, the \"Latest\" tab shows all the apps updated during the last two months that have good [descriptions and graphics](../All_About_Descriptions_Graphics_and_Screenshots)" msgstr "İstemcide \"En Son\" sekmesi son iki ay içinde güncellenen ve iyi [açıklamaları ve görüntüleri](../All_About_Descriptions_Graphics_and_Screenshots) olan tüm uygulamaları gösterir" #. type: Bullet: '- ' #: _docs/FAQ_-_General.md msgid "If you don't mind a detailed and potentially noisy stream of information that also includes updates and other changes, you could subscribe to [this feed](https://gitlab.com/fdroid/fdroiddata/commits/master.atom)" msgstr "Güncellemeleri ve diğer değişiklikleri de içeren ayrıntılı ve potansiyel olarak yoğun bir bilgi akışını önemsemiyorsanız, [bu beslemeye](https://gitlab.com/fdroid/fdroiddata/commits/master.atom) abone olabilirsiniz" #. type: Plain text #: _docs/FAQ_-_General.md msgid "We don't yet have a dedicated and user-friendly feed you can subscribe to for new additions, but we welcome contributions to make this work better." msgstr "Henüz yeni eklemeler için abone olabileceğiniz özel ve kullanıcı dostu bir akışımız yok, ancak bu çalışmayı daha iyi hale getirmek için yapılacak katkılara açığız." #. type: Title ### #: _docs/FAQ_-_General.md #, no-wrap msgid "Is your building and signing process secure?" msgstr "Oluşturma ve imzalama süreciniz güvenli mi?" #. type: Plain text #: _docs/FAQ_-_General.md msgid "The building and signing is done in an secure **offline** (i.e. inaccessible from the internet) environment. Every package is built in a completely fresh isolated virtual machine environment which is discarded once the build is complete. Additionally, that build environment is completely separated from the signing environment." msgstr "Oluşturma ve imzalama güvenli bir **çevrimdışı** (yani internetten erişilemez) bir ortamda yapılır. Her paket, oluşturma tamamlandıktan sonra atılan tamamen yeni ve izole bir sanal makine ortamında oluşturulur. Ayrıca bu oluşturma ortamı imzalama ortamından tamamen ayrılmıştır." #. type: Plain text #: _docs/FAQ_-_General.md msgid "So yes, as far as we know, it's secure. However, as with everything else on the site, bear in mind this is a small community project which you are warned to use at your own risk. As with apps you get from elsewhere, including Google Play, you should exercise caution regarding the permissions they request when you install them. If in doubt, don't install." msgstr "Yani evet, bildiğimiz kadarıyla güvenli. Ancak sitedeki diğer her şeyde olduğu gibi, bunun da riski size ait olmak üzere kullanmanız konusunda uyarıldığınız küçük bir topluluk projesi olduğunu unutmayın. Google Play'de dahil olmak üzere başka yerlerden edindiğiniz uygulamalarda olduğu gibi, bunları yüklerken talep ettikleri izinler konusunda dikkatli olmalısınız. Şüpheniz varsa yüklemeyin." #. type: Title ### #: _docs/FAQ_-_General.md #, no-wrap msgid "Why isn't F-Droid on Google Play?" msgstr "F-Droid neden Google Play'de yok?" #. type: Plain text #: _docs/FAQ_-_General.md msgid "Pick your favourite reason (both are true and valid):" msgstr "Tercih ettiğiniz nedeni seçin (her ikisi de doğru ve geçerlidir):" #. type: Bullet: '- ' #: _docs/FAQ_-_General.md msgid "We don't use proprietary software: Google Play is proprietary software;" msgstr "Tescilli yazılım kullanmıyoruz: Google Play tescilli bir yazılımdır;" #. type: Bullet: '- ' #: _docs/FAQ_-_General.md msgid "F-Droid, as an app that \"competes\" with Google Play, is against their [Terms of Service (paragraph 4.5)](https://play.google.com/about/developer-distribution-agreement.html)." msgstr "F-Droid, Google Play ile \"rekabet eden\" bir uygulama olarak [Hizmet Şartları (paragraf 4.5)](https://play.google.com/about/developer-distribution-agreement.html)'a aykırıdır." #. type: Title ### #: _docs/FAQ_-_General.md #, no-wrap msgid "How can I report bugs or request features?" msgstr "Hataları nasıl bildirebilir veya özellik talep edebilirim?" #. type: Plain text #: _docs/FAQ_-_General.md msgid "Use the [issue tracker](https://gitlab.com/fdroid/fdroidclient/issues) or email . You can also discuss them in the [\\#fdroid](ircs://irc.oftc.net:6697/fdroid) IRC chatroom on OFTC ([click here to join the webchat](https://webchat.oftc.net/?randomnick=1&channels=fdroid&prompt=1))." msgstr "[Sorun izleyiciyi](https://gitlab.com/fdroid/fdroidclient/issues) kullanın veya adresine bir e-posta gönderin. Bunları ayrıca OFTC'deki [\\#fdroid](ircs://irc.oftc.net:6697/fdroid) IRC sohbet odasında da tartışabilirsiniz ([web sohbetine katılmak için buraya tıklayın](https://webchat.oftc.net/?randomnick=1&channels=fdroid&prompt=1))." #. type: Plain text #: _docs/FAQ_-_General.md msgid "If you do not already have an account, or do not want to create one, you can use our reusable account. The issue tracker works better if reporters use an account that will receive notifications. Issue reports are usually a conversation, not just a single report." msgstr "Halihazırda bir hesabınız yoksa veya bir hesap oluşturmak istemiyorsanız, yeniden kullanılabilir hesabımızı kullanabilirsiniz. Sorun izleyici, raporlayanlar bildirim alacak bir hesap kullanırsa daha iyi çalışır. Sorun raporları genellikle tek bir rapor değil, bir diyalog niteliğindedir." #. type: Plain text #: _docs/FAQ_-_General.md msgid "That said, the account username is _fdroid-anyone_ and the password is _fdroid does not track_." msgstr "Bununla birlikte, hesap kullanıcı adı _fdroid-anyone_ ve parola _fdroid does not track_ şeklindedir." #. type: Plain text #: _docs/FAQ_-_General.md msgid "Please note that we will have to remove this account, in case it gets abused." msgstr "Kötüye kullanılması durumunda bu hesabı kaldırmak zorunda kalacağımızı lütfen unutmayın." #. type: YAML Front Matter: title #: _docs/Feeds.md #, no-wrap msgid "Feeds" msgstr "" #. type: Title ### #: _docs/Feeds.md #, no-wrap msgid "News" msgstr "" #. type: Plain text #: _docs/Feeds.md msgid "Sometimes there is a newsworthy item (submissions welcome!) or client release and details get posted on the blog: ." msgstr "" #. type: Title ### #: _docs/Feeds.md #, no-wrap msgid "Builds" msgstr "" #. type: Plain text #: _docs/Feeds.md msgid "Find out the build status of the APKs on: ." msgstr "" #. type: Title ### #: _docs/Feeds.md _docs/Repository_Style_Guide.md #, no-wrap msgid "Source Code" msgstr "" #. type: Plain text #: _docs/Feeds.md msgid "If you have an account on GitLab you can watch the F-Droid repos, or subscribe to atom feeds for them. A feed including actions from all fdroid repositories is available at ." msgstr "" #. type: Title ### #: _docs/Feeds.md #, no-wrap msgid "Forums" msgstr "" #. type: Plain text #: _docs/Feeds.md msgid "You can subscribe to new [forum](https://forum.f-droid.org/) posts and threads via the following URLs:" msgstr "" #. type: Plain text #: _docs/Feeds.md msgid "- - " msgstr "" #. type: Title ### #: _docs/Feeds.md #, no-wrap msgid "Bugs and Suggestions" msgstr "" #. type: Plain text #: _docs/Feeds.md msgid ", , : All expose RSS feeds, and also email notifications if desired." msgstr "" #. type: Title ### #: _docs/Feeds.md #, no-wrap msgid "Matrix" msgstr "" #. type: Plain text #: _docs/Feeds.md msgid "The room can be previewed without an account on https://matrix.to/#/#fdroid:f-droid.org or https://matrix.to/#/#fdroid-dev:f-droid.org" msgstr "" #. type: Title ### #: _docs/Feeds.md #, no-wrap msgid "IRC" msgstr "IRC" #. type: Plain text #: _docs/Feeds.md msgid "Old IRC logs are available at and ." msgstr "" #. type: Title ## #: _docs/Feeds.md #, no-wrap msgid "OPML import to a feed reader" msgstr "" #. type: Plain text #: _docs/Feeds.md msgid "For importing into your favourite news reader, save the following text as feeds.opml and add/remove feeds your are interested in." msgstr "" #. type: Plain text #: _docs/Feeds.md msgid "On Android we have [Feeder]({{ site.baseurl }}/packages/com.nononsenseapps.feeder/), [Handy News Reader]({{ site.baseurl }}/packages/ru.yanus171.feedexfork/), [Antennapod](https://f-droid.org/repository/browse/?fdfilter=de.danoeh.antennapod&fdid=de.danoeh.antennapod), [FreshRSS]({{ site.baseurl }}/packages/fr.chenry.android.freshrss/), [Flym DecSync]({{ site.baseurl }}/packages/org.decsync.flym/) and many more. On the desktop you could use the Akregator for KDE, Liferea for Gnome or [http://newsbeuter.org newsbeuter] which is nice if you like working in a terminal." msgstr "" #. type: Fenced code block (xml) #: _docs/Feeds.md #, no-wrap msgid "" "\n" "\n" " \n" " F-Droid related feeds\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" msgstr "" #. type: YAML Front Matter: title #: _docs/Getting_logcat_messages_after_crash.md #, no-wrap msgid "Getting _logcat_ messages after crash" msgstr "" #. type: Title ### #: _docs/Getting_logcat_messages_after_crash.md #, no-wrap msgid "What is _logcat_?" msgstr "" #. type: Plain text #: _docs/Getting_logcat_messages_after_crash.md msgid "As an app runs, and particularly when it crashes, it sends some information to the Android system to help diagnose what caused the problem. If the F-Droid developers have access to this information, it provides lots of really good information to help find out what went wrong. This is in comparison to a generic error message such as \"F-Droid crashed\"." msgstr "" #. type: Plain text #: _docs/Getting_logcat_messages_after_crash.md msgid "Many apps will automatically send crash report to the developer, but F-Droid does not. This is not a technical limitation, but rather a philosophical one. We try to connect to the internet only when necessary to perform what you asked us to: download and install apps. The downside of this is that we require a little bit of help from our users when they tell us about crashes. This article explains how to obtain _logcat_ files, which are the most important pieces of information you can provide to help us investigate and fix any bugs." msgstr "" #. type: Title ### #: _docs/Getting_logcat_messages_after_crash.md #, no-wrap msgid "How to find _logcat_ messages" msgstr "" #. type: Plain text #: _docs/Getting_logcat_messages_after_crash.md msgid "There are two ways to get a _logcat_ message. The usual way will be to install an app on your device which knows how to access the _logcat_ information. Another way is to install the Android SDK on your computer and get the _logcat_ messages over USB or WiFi." msgstr "" #. type: Title #### #: _docs/Getting_logcat_messages_after_crash.md #, no-wrap msgid "Using an app on your device" msgstr "" #. type: Plain text #: _docs/Getting_logcat_messages_after_crash.md msgid "For those who don't want to install software on their computers in order to get the _logcat_ messages, you can download an app such as:" msgstr "" #. type: Bullet: '* ' #: _docs/Getting_logcat_messages_after_crash.md msgid "[aLogCat](https://f-droid.org/packages/org.jtb.alogcat/)" msgstr "" #. type: Bullet: '* ' #: _docs/Getting_logcat_messages_after_crash.md msgid "[Logcat Reader](https://f-droid.org/packages/com.dp.logcatapp/)" msgstr "" #. type: Bullet: '* ' #: _docs/Getting_logcat_messages_after_crash.md msgid "[Logs](https://f-droid.org/packages/com.tananaev.logcat/)" msgstr "" #. type: Plain text #: _docs/Getting_logcat_messages_after_crash.md msgid "The general idea is to open the app, ask it to start recording _logcat_ messages, and then try and cause F-Droid to crash. Once it crashes, the _logcat_ app will save the error messages. These messages can then be copied and pasted in the [F-Droid issue tracker](https://gitlab.com/fdroid/fdroidclient/issues)." msgstr "" #. type: Plain text #: _docs/Getting_logcat_messages_after_crash.md msgid "On Debian-ish things, try `apt-get install pidcat`, it has colorization and tab completion even!" msgstr "" #. type: Title #### #: _docs/Getting_logcat_messages_after_crash.md #, no-wrap msgid "Using the Android SDK" msgstr "" #. type: Plain text #: _docs/Getting_logcat_messages_after_crash.md msgid "If you have the [Android SDK](https://developer.android.com/sdk/index.html) installed on your computer, then you will be able to use the [adb](https://developer.android.com/tools/help/adb.html) (command line) or [DDMS](https://developer.android.com/tools/debugging/ddms.html) (graphical app) tools when your phone is plugged in via USB and has “Debugging” enabled from the Android settings." msgstr "" #. type: Plain text #: _docs/Getting_logcat_messages_after_crash.md msgid "Once you have the SDK installed, and are able to use the adb tool, then run the following command:" msgstr "" #. type: Plain text #: _docs/Getting_logcat_messages_after_crash.md #, no-wrap msgid " adb logcat\n" msgstr "" #. type: Plain text #: _docs/Getting_logcat_messages_after_crash.md msgid "Depending on how many apps you have installed/running, it might be a little bit noisy. If you don't want to post all of that noise online (there is a slight chance that it contains information you don't want on the internet - if apps are logging private information to the log), then you can filter to only error messages with:" msgstr "" #. type: Plain text #: _docs/Getting_logcat_messages_after_crash.md #, no-wrap msgid " adb logcat *:E\n" msgstr "" #. type: Plain text #: _docs/Getting_logcat_messages_after_crash.md msgid "This information can then be posted to a GitLab issue to help developers diagnose the issue. When posting to GitLab, surround the log in three backticks (```) before, and three backticks after to format it correctly." msgstr "" #. type: YAML Front Matter: title #: _docs/How_to_Help.md #, no-wrap msgid "How to Help" msgstr "Nasıl Yardım Edilir" #. type: Plain text #: _docs/How_to_Help.md msgid "The project is entirely developed and maintained by volunteers. You can help in the following ways:" msgstr "Proje tamamen gönüllüler tarafından geliştirilmekte ve sürdürülmektedir. Aşağıdaki şekillerde yardımcı olabilirsiniz:" #. type: Title ### #: _docs/How_to_Help.md #, no-wrap msgid "Follow our work" msgstr "Çalışmalarımızı takip edin" #. type: Plain text #: _docs/How_to_Help.md msgid "The [Feeds](../Feeds) page lists the various sites that we work on." msgstr "[Yayınlar](../Feeds) sayfasında, üzerinde çalıştığımız çeşitli siteler listelenir." #. type: Title ### #: _docs/How_to_Help.md #, no-wrap msgid "Report problems" msgstr "Sorunları bildirin" #. type: Plain text #: _docs/How_to_Help.md msgid "If you experience problems with the site or client software, you can report them in the [issue tracker](https://gitlab.com/u/fdroid), discuss them in the [Forum](https://forum.f-droid.org/), on [Matrix](https://matrix.to/#/#fdroid:f-droid.org) or on IRC ([#fdroid on OFTC](https://webchat.oftc.net/?randomnick=1&channels=fdroid&prompt=1)). Take a look at the [Repository Maintenance](https://monitor.f-droid.org/builds) page to see how you can help keeping apps and their metadata up to date." msgstr "Site veya istemci yazılımı ile ilgili sorun yaşarsanız, bunları [sorun izleyici](https://gitlab.com/u/fdroid)'ye bildirebilir, [Forum](https://forum.f-droid.org/), [Matrix](https://matrix.to/#/#fdroid:f-droid.org) veya IRC'de ([OFTC'de #fdroid](https://webchat.oftc.net/?randomnick=1&channels=fdroid&prompt=1)) tartışabilirsiniz. Uygulamaları ve üst verilerini güncel tutmaya nasıl yardımcı olabileceğinizi görmek için [Depo Bakımı](https://monitor.f-droid.org/builds) sayfasına bir göz atın." #. type: Plain text #: _docs/How_to_Help.md msgid "If you are reporting an issue with the client, [check out these pointers](../Client_Bug_Reports) to make sure we have the best chance of reproducing and fixing your issue." msgstr "İstemci ile ilgili bir sorun bildiriyorsanız, sorununuzu yeniden üretme ve düzeltme şansımızın en yüksek olduğundan emin olmak için [bu işaretçilere göz atın](../Client_Bug_Reports)." #. type: Title ### #: _docs/How_to_Help.md #, no-wrap msgid "Submit applications" msgstr "Uygulamaları gönderin" #. type: Plain text #: _docs/How_to_Help.md msgid "If you see an application missing from the repository that fits with the [Inclusion Policy](../Inclusion_Policy)), then [you can add that application](../Submitting_to_F-Droid_Quick_Start_Guide) via a merge request. Otherwise, to make a simple request, go to the dedicated [Requests for Packaging](https://gitlab.com/fdroid/rfp/issues) tracker." msgstr "Depoda [Dahil Etme Politikası](../Inclusion_Policy)) ile uyumlu bir uygulamanın eksik olduğunu görürseniz, [bu uygulamayı](../Submitting_to_F-Droid_Quick_Start_Guide) bir birleştirme isteği yoluyla ekleyebilirsiniz. Aksi takdirde, basit bir talepte bulunmak için özel [Paketleme Talepleri](https://gitlab.com/fdroid/rfp/issues) izleyicisine gidin." #. type: Plain text #: _docs/How_to_Help.md msgid "Metadata may already be found there but it can always be improved. Often developers don't mark their releases well: you can ask them to use tags via an issue on their tracker, which will allow us to use an automatic check for new versions (and you can suggest a donation method while you're about it!). Another common task is the comparison of included libraries with official versions." msgstr "Üst veriler zaten orada bulunabilir ancak her zaman geliştirilebilir. Genellikle geliştiriciler sürümlerini iyi işaretlemezler: izleyicilerinde bir sorun aracılığıyla etiketleri kullanmalarını isteyebilirsiniz, bu da yeni sürümler için otomatik bir kontrol kullanmamızı sağlar (ve bu konuda bir bağış yöntemi önerebilirsiniz!). Bir başka ortak görev de dahil edilen kütüphanelerin resmi sürümlerle karşılaştırılmasıdır." #. type: Plain text #: _docs/How_to_Help.md msgid "If you have the technical skills required, you can also put together the relevant metadata and submit a merge request to the git repository, which should speed up the inclusion of the application. See the [sticky thread](https://f-droid.org/forums/topic/adding-apps-with-git/) at the top of that forum for more information." msgstr "Gerekli teknik becerilere sahipseniz, ilgili üst verileri bir araya getirebilir ve git deposuna bir birleştirme isteği gönderebilirsiniz, bu da uygulamanın dahil edilmesini hızlandıracaktır. Daha fazla bilgi için bu forumun üst kısmındaki [yapışkan başlık](https://f-droid.org/forums/topic/adding-apps-with-git/) bölümüne bakınız." #. type: Title ### #: _docs/How_to_Help.md #, no-wrap msgid "Update apps" msgstr "Uygulamaları güncelleyin" #. type: Plain text #: _docs/How_to_Help.md msgid "The procedure for updating apps is similar to adding new apps: changes are applied to the metadata in the fdroiddata git repository. You'll need to already be familiar with adding new apps. Even though it should take much less time to update an app one should still be cautious. Follow the steps in the [update guide](../How_to_update_an_app) to minimize the risk of messing up and don't be afraid to ask for help!" msgstr "Uygulamaları güncelleme prosedürü yeni uygulama eklemeye benzer: değişiklikler fdroiddata git deposundaki üst verilere uygulanır. Yeni uygulama eklemeye zaten aşina olmanız gerekir. Bir uygulamayı güncellemek çok daha az zaman alsa da yine de dikkatli olunmalıdır. Hata yapma riskini en aza indirmek için [güncelleme kılavuzu](../How_to_update_an_app) içindeki adımları izleyin ve yardım istemekten çekinmeyin!" #. type: Title ### #: _docs/How_to_Help.md #, no-wrap msgid "Add information about no longer maintained apps" msgstr "Artık bakımı yapılmayan uygulamalar hakkında bilgi ekleyin" #. type: Plain text #: _docs/How_to_Help.md msgid "At the beginning of the app's description in metadata (provided Description is held on our end), insert a paragraph saying" msgstr "Uygulamanın üst verilerdeki açıklamasının başına (açıklamanın bizim tarafımızda tutulması şartıyla) şöyle bir paragraf ekleyin" #. type: Fenced code block #: _docs/How_to_Help.md #, no-wrap msgid "NOTE: This app is no longer maintained.\n" msgstr "NOT: Bu uygulama artık geliştirilmemektedir.\n" #. type: Plain text #: _docs/How_to_Help.md msgid "Optionally link \"no longer maintained\" to where that statement is found (if not directly on the app's Readme/Website). Or add \"(its repo has been archived)\" – whichever fits. If the repo is gone altogether, instead remove the entries for `RepoType` and `RepoURL`, and at the very end of the metadata YAML add a line saying `NoSourceSince: 0.1.2` (where 0.1.2 should be the versionName of the last build available) – this will automatically translate into an AntiFeature and thus be displayed prominently. In the end make that an MR." msgstr "İsteğe bağlı olarak \"artık geliştirilmiyor\" ifadesini bu ifadenin bulunduğu yere bağlayın (doğrudan uygulamanın Benioku/Web Sitesinde değilse). Ya da \"(deposu arşivlendi)\" ekleyin - hangisi uygunsa. Depo tamamen ortadan kalkmışsa, bunun yerine `RepoType` ve `RepoURL` girişlerini kaldırın ve üst veri YAML'nin en sonuna `NoSourceSince: 0.1.2` (burada 0.1.2 mevcut son derlemenin sürüm adı olmalıdır) şeklinde bir satır ekleyin - bu otomatik olarak bir AntiFeature'a çevrilecek ve böylece belirgin bir şekilde görüntülenecektir. Sonunda bunu bir MR yapın." #. type: Title ### #: _docs/How_to_Help.md #, no-wrap msgid "Translate" msgstr "Çeviri" #. type: Plain text #: _docs/How_to_Help.md msgid "The client application is available in many languages, but if yours is not included, or if it needs updating or improving, follow [these instructions](https://hosted.weblate.org/engage/f-droid/)." msgstr "İstemci uygulaması birçok dilde mevcuttur, ancak sizinki dahil değilse veya güncellenmesi ya da geliştirilmesi gerekiyorsa, [bu talimatları](https://hosted.weblate.org/engage/f-droid/) izleyin." #. type: Plain text #: _docs/How_to_Help.md msgid "The web site and some app descriptions (if the original developer does not supply their own description) can also be translated through Weblate." msgstr "Web sitesi ve bazı uygulama açıklamaları da (orijinal geliştirici kendi açıklamasını sağlamıyorsa) Weblate aracılığıyla çevrilebilir." #. type: Plain text #: _docs/How_to_Help.md msgid "There's a [dedicated forum section](https://forum.f-droid.org/c/translation) for discussions about translation." msgstr "Çeviri hakkındaki tartışmalar için [özel bir forum bölümü](https://forum.f-droid.org/c/translation) bulunmaktadır." #. type: Title ### #: _docs/How_to_Help.md #, no-wrap msgid "Help with development" msgstr "Geliştirme konusunda yardım edin" #. type: Plain text #: _docs/How_to_Help.md msgid "There are three git repositories hosted at GitLab, as follows:" msgstr "GitLab'da aşağıdaki gibi barındırılan üç git deposu vardır:" #. type: Bullet: '- ' #: _docs/How_to_Help.md msgid "Android client application - Issues suitable for new contributors are tagged [help-wanted](https://gitlab.com/fdroid/fdroidclient/issues?label_name=help-wanted)" msgstr "Android istemci uygulaması - Yeni katılımcılar için uygun konular [yardım aranıyor](https://gitlab.com/fdroid/fdroidclient/issues?label_name=help-wanted) olarak etiketlenmiştir" #. type: Bullet: '- ' #: _docs/How_to_Help.md msgid "Server tools, for the tools for running a repository and building/installing applications locally - " msgstr "Sunucu araçları, bir depoyu çalıştırmaya ve uygulamaları yerel olarak oluşturmaya/yüklemeye yönelik araçlar için - " #. type: Bullet: '- ' #: _docs/How_to_Help.md msgid "Metadata files for applications in the main F-Droid repository - " msgstr "Ana F-Droid deposundaki uygulamalar için üst veri dosyaları - " #. type: Plain text #: _docs/How_to_Help.md msgid "The easiest way to contribute to development is to make clones of these projects and submit merge requests. If you are making large changes, it would be good to discuss them on IRC or in the forum first, to ensure they fit with the direction of the project, and do not clash with or duplicate work already in development." msgstr "Geliştirmeye katkıda bulunmanın en kolay yolu, bu projelerin klonlarını yapmak ve birleştirme istekleri göndermektir. Büyük değişiklikler yapıyorsanız, projenin yönüne uygun olduklarından ve halihazırda geliştirilmekte olan çalışmalarla çakışmadıklarından veya yinelenmediklerinden emin olmak için bunları önce IRC'de veya forumda tartışmak iyi olacaktır." #. type: Plain text #: _docs/How_to_Help.md msgid "For working with the server project, it's a good idea to read [the docs](http://f-droid.org/docs/) and learn our [git workflow](https://f-droid.org/wiki/page/git_workflow)." msgstr "Sunucu projesi ile çalışmak için [dokümanları](http://f-droid.org/docs/) okumak ve [git iş akışımızı](https://f-droid.org/wiki/page/git_workflow) öğrenmek iyi bir fikirdir." #. type: Title ### #: _docs/How_to_Help.md #, no-wrap msgid "Help with Infrastructure" msgstr "Altyapı ile İlgili Yardımcı Olun" #. type: Plain text #: _docs/How_to_Help.md msgid "F-Droid provides multiple servers (builders, web portal, download areas...) which need regular maintenance, Ansible-based deployment, and hardware management. Further information can be found by asking on [Matrix](https://matrix.to/#/#fdroid-dev:f-droid.org), [IRC](https://webchat.oftc.net/?randomnick=1&channels=fdroid&prompt=1) (#fdroid-dev on OFTC) or team@f-droid.org." msgstr "F-Droid düzenli bakım, Ansible tabanlı dağıtım, ve donanım yönetimine ihtiyaç duyan birçok sunucu (oluşturucular, web portalı, indirme bölgeleri...) sağlamaktadır. Daha fazla bilgi [Matrix](https://matrix.to/#/#fdroid-dev:f-droid.org), [IRC](https://webchat.oftc.net/?randomnick=1&channels=fdroid&prompt=1) (OFTC'de #fdroid-dev) veya team@f-droid.org adreslerinden sorularak edinilebilir." #. type: Title ### #: _docs/How_to_Help.md #, no-wrap msgid "Design" msgstr "Tasarım" #. type: Plain text #: _docs/How_to_Help.md msgid "We'd love any contributions to make the project prettier and easier to use. If you are good at writing we are working on improving the [Home page](https://f-droid.org/wiki/page/Home_page). If you can design mockups the client developers could use your help. Post them to the issue tracker for [client](https://gitlab.com/fdroid/fdroidclient/issues) or the [website](https://gitlab.com/fdroid/fdroid-website/issues)." msgstr "Projeyi daha güzel ve kullanımı daha kolay hale getirmek için her türlü katkıyı çok isteriz. Yazma konusunda iyiyseniz [Ana Sayfa'yı](https://f-droid.org/wiki/page/Home_page) geliştirmek için çalışıyoruz. Mockup tasarlayabiliyorsanız, müşteri geliştiricileri yardımınızı kullanabilir. Bunları [istemci](https://gitlab.com/fdroid/fdroidclient/issues) veya [web sitesi](https://gitlab.com/fdroid/fdroid-website/issues) için sorun izleyiciye gönderin." #. type: YAML Front Matter: title #: _docs/How_to_update_an_app.md #, no-wrap msgid "How to update an app" msgstr "" #. type: Plain text #: _docs/How_to_update_an_app.md msgid "What I would like to read here would be:" msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "\"What is where, and why?\" - a brief guide through the infrastructure and workflow / scripts." msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "Howto \"update the metadata on gitlab.com/fdroid/fdroiddata\"." msgstr "" #. type: Plain text #: _docs/How_to_update_an_app.md msgid "Target group would be developer/release-manager of the apps **and** for the \"external interested user\" who just notices that there is a new version of an app - but not yet in F-Droid system available. \"What would I do to trigger the update?\"" msgstr "" #. type: Plain text #: _docs/How_to_update_an_app.md msgid "@Tverrbjelke: (If s.o. briefs me, I would spend some of my time writing that down. love F-Droid, and hate to see such simple and needed issue is not yet ready. :-) )" msgstr "" #. type: Plain text #: _docs/How_to_update_an_app.md msgid "@daithib8: Assuming everything is setup and the user is familiar with building via fdroid … (these instructions take a terminal-based approach. You can manage with a web browser, but it takes quite a while to learn the layout of the common source code websites. For complicated apps that rebase code and use many branches, I'll often visit the source code site too)." msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "Take a note of the current version according to the developer – a clue is often written above the _CurrentVersion_ in the metadata. To visit Google Play quickly to get the version name there, install w3m and add this function `gplay() { w3m play.google.com/store/apps/details/?id=\"$@\" ;}` to your bashrc. Then you can just do `gplay package-name`. If you find that the version is greater than the _CurrentVersion_ in the metadata, update it right away (unless there are any beta or test builds currently activated)" msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "If the _CurrentVersion_ in the metadata (especially in the case of the update check mode RepoManifest) is greater than on Google Play or the download page, you may not need to update and can just add a dummy build version e.g `Build Version:1.2,34,!not published by the developer,subdir=main`" msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "Clone the source code repository if you don't have it already by building an already existing version (which you can quit once the build is under way)" msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "Change in to the repo: `pushd build/package-name`" msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "`la` to remind onesself of the VCS type. Let's assume it's Mercurial (with which I am barely familiar)" msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "`hg revert -a; hg pull; hg up` to get the latest code from the repo. Take a note of the new tags" msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "`hg log |less` and read the single line descriptions back to the previous version to get a quick idea of the latest changes and find the revision or tag corresponding to the current version noted earlier" msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "` hg up \"tag\"` to switch to the tag or revision (to make sure you are auditing exactly what will be built)" msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "`hg log -p` e.g. libs | _build.xml_ | _AndroidManifest.xml_ | _project.properties_ | res/raw | assets | _.gitmodules_ | _.classpath_ to take a closer look at the changes in some of the important files (as far as updating is concerned). If new jars (or new versions of old ones) are found then they must be verified to see they were found from canonical sources and are free with source code;the first thing to try is to open the jar to see the class names (`unzip -l`) and visit e.g. where you will find checksums to compare with. Take a note of jars such as bugsense or acra which are used for bugreports" msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "If you find proprietary files add a dummy build version to the metadata with a few words about the reason, add _NoSourceSince_ to the bottom and a line to the descripion beginning with Status: to the description explaining the reason that the app can't be updated" msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "`find . -type f -executable` to locate any scripts and things. Note that ant will also execute anything it finds in _build.xml_ and custom_rules.xml!" msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "`$find . -name '\\*' | xargs file --mime | grep executable|shared-lib` to see if any prebuilts are around. These would often be detected by fdroid anyway and would usually be located in res/raw/ , assets/ or jni/." msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "Open some files in your editor, like the README, licenses, possibly files in res/xml that would contain changelogs, project.properties; run `git submodule` if applicable. All these will give clues about what might need changing from the previous build. It's very possible that no info will be given about Android libraries so you'll have to look for other clues, in the commit log for instance. If all else fails: `cd ../srclibs/ActionLibrary` and checkout out the latest code to find a suitable commit." msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "Write a patch if necessary although sed in the metadata is usually the better option: `mkdir ../../metadata/package-name; hg diff > ../../metadata/package-name.diff`" msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "`popd; vi metadata/package-name.txt` to add a new Build Version" msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "Test with `fdroid build -p package-name -t -l -v | less` (use the completion script in fdroidserver) N.B --install doesn't currently warn if version names/codes are different from the metadata. Also proguard isn't enabled (since it is a debug build); neither will it warn you if it hasn't been installed for some reason." msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "Sign with a debug key `jarsigner -keystore \\~/.android/debug.keystore -digestalg SHA1 -sigalg SHA1withRSA tmp/com.seawolfsanctuary.keepingtracks_20130727.apk androiddebugkey`" msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "`adb install tmp/com.seawolfsanctuary.keepingtracks_20130727.apk -a` and have look at the result. Look at the about screen in particular. If bug report libraries are in use verify that crash reporting is optional (the Android Manifest can help here). If crash reporting is on by default the app needs an anti-feature. Same thing applies to ads." msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "Add any info for the next time above AutoUpdateMode, and see if the update check mode needs any tweaking." msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "Have a quick look at the description and urls to see if anything needs updating" msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "Commit new srclibs and extlibs `git commit build/extlibs/volley/\\*` and include a source.txt if a jar is from a new location" msgstr "" #. type: Bullet: '- ' #: _docs/How_to_update_an_app.md msgid "If there is nothing special, commit directly with the commitupdates script. If not, include as much info as you can in the body of the git commit" msgstr "" #. type: Plain text #: _docs/How_to_update_an_app.md msgid "That's a lot of things to do, but experience shows that it's a good idea to be vigilant and of course the process gets faster with time... Good luck!" msgstr "" #. type: YAML Front Matter: title #: _docs/Importing_Applications.md #, no-wrap msgid "Importing Applications" msgstr "" #. type: Plain text #: _docs/Importing_Applications.md msgid "To help with starting work on including a new application, use `fdroid import` to set up a new template project. It has two modes of operation, starting with a cloned git repo:" msgstr "" #. type: Fenced code block (bash) #: _docs/Importing_Applications.md #, no-wrap msgid "" "git clone https://gitlab.com/fdroid/fdroidclient\n" "cd fdroidclient\n" "fdroid import\n" msgstr "" #. type: Plain text #: _docs/Importing_Applications.md msgid "Or starting with a URL to a project page:" msgstr "" #. type: Fenced code block (bash) #: _docs/Importing_Applications.md #, no-wrap msgid "fdroid import --url=http://address.of.project\n" msgstr "" #. type: Plain text #: _docs/Importing_Applications.md msgid "When a URL is specified using the `--url=` flag, `fdroid import` will use that URL to find out information about the project, and if it finds a git repo, it will also clone that. For this to work, the URL must point to a project format that the script understands. Currently this is limited to one of the following:" msgstr "" #. type: Bullet: '1. ' #: _docs/Importing_Applications.md msgid "GitLab - `https://gitlab.com//`" msgstr "" #. type: Bullet: '3. ' #: _docs/Importing_Applications.md msgid "GitHub - `https://github.com//`" msgstr "" #. type: Bullet: '4. ' #: _docs/Importing_Applications.md msgid "Bitbucket - `https://bitbucket.org///`" msgstr "" #. type: Bullet: '5. ' #: _docs/Importing_Applications.md msgid "NotABug - `https://notabug.org//`" msgstr "" #. type: Bullet: '6. ' #: _docs/Importing_Applications.md msgid "Git - `git://` or `https://`" msgstr "" #. type: Plain text #: _docs/Importing_Applications.md msgid "Depending on the project type, more or less information may be gathered. A bare repo url, such as the git:// one, is the least preferable option of all, since you will have to enter much more information manually. While _gradle_ based builds should be auto-detected for all types, links to issue trackers can not be set for plain git projects. You can also use one of the following arguments to pre-fill your metadata:" msgstr "" #. type: Bullet: '* ' #: _docs/Importing_Applications.md msgid "`-u `, `--url=`: Project URL to import from." msgstr "" #. type: Bullet: '* ' #: _docs/Importing_Applications.md msgid "`-s `, `--subdir=`: Path to main android project subdirectory, if not in root." msgstr "" #. type: Bullet: '* ' #: _docs/Importing_Applications.md msgid "`-c `, `--categories=`: Comma separated list of categories." msgstr "" #. type: Bullet: '* ' #: _docs/Importing_Applications.md msgid "`-l `, `--license=`: Overall license of the project." msgstr "" #. type: Bullet: '* ' #: _docs/Importing_Applications.md msgid "`--revision `: Allows a different revision (or git branch) to be specified for the initial import" msgstr "" #. type: Plain text #: _docs/Importing_Applications.md msgid "If the import is successful, a metadata file will be created. You will need to edit this further to check the information, and fill in the blanks." msgstr "" #. type: Plain text #: _docs/Importing_Applications.md msgid "If it fails, you’ll be told why. If it got as far as retrieving the source code, you can inspect it further by looking in `tmp/importer` where a full checkout will exist." msgstr "" #. type: Plain text #: _docs/Importing_Applications.md msgid "A frequent cause of initial failure is that the project directory is actually a subdirectory in the repository. In this case, run the importer again using the `--subdir` option to tell it where. It will not attempt to determine this automatically, since there may be several options." msgstr "" #. type: YAML Front Matter: title #: _docs/Inclusion_How-To.md #, no-wrap msgid "Inclusion How-To" msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "This page documents how a new application gets included in the main F-Droid repository. It includes the technical details that a submitter should be aware of." msgstr "" #. type: Title ## #: _docs/Inclusion_How-To.md #, no-wrap msgid "Application Inclusion Proposal" msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "To propose inclusion of a new application to the main F-Droid repository, one could post the applications relevant information to the Submission Queue. The more advanced alternative is writing a complete metadata file yourself, test, and propose inclusion (merge request) directly into the fdroiddata Git repository; speeding up the process. Both ways will be described below in detail." msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "Note that you can propose inclusion even you are not a developer or maintainer of the proposed application itself. See [Inclusion Policy](../Inclusion_Policy) and [Repository Style Guide](../Repository_Style_Guide) for the policy aspect of this section." msgstr "" #. type: Title ### #: _docs/Inclusion_How-To.md #, no-wrap msgid "Proposal by Submission Queue" msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "This is the simplest way to get the application included. But due to an amount of reviewer labor required for each application, this is the slowest method." msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "Do this by creating a new ticket at the [F-Droid Submission Queue on GitLab](https://gitlab.com/fdroid/rfp/issues), add all details required by the minimal issue template; and wait for people in F-Droid team to review the application and do all necessary steps for you." msgstr "" #. type: Title ### #: _docs/Inclusion_How-To.md #, no-wrap msgid "Proposal by Metadata Merge Request" msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "A more advanced alternative for application inclusion is to write an F-Droid metadata file for the application yourself, and propose inclusion by filing a git merge request on the F-Droid application metadata repository ([fdroiddata GitLab repository](https://gitlab.com/fdroid/fdroiddata/)). This will lead to much quicker inclusion as the already-available metadata file will reduce the burden on reviewers when inspecting your proposed metadata; the submitter assumes responsibility of providing a correct metadata file." msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "When proposing inclusion this way, it is assumed that:" msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "You have a good understanding of what [Free Software](https://www.gnu.org/philosophy/free-sw.html) means, and what F-Droid is for." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "You already read and understand the [Inclusion Policy](../Inclusion_Policy)." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "You already read and understand the [Repository Style Guide](../Repository_Style_Guide)." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "You already read and understand [the relevant parts of the F-Droid documentation](../Build_Metadata_Reference)." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "You know how to use [Git VCS](https://git-scm.com/), and know how a merge request (a.k.a. \"pull request\" in GitHub terminology) works in general." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "You have an account on [GitLab](https://gitlab.com/)." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "You have a local instance of the F-Droid server software, and you know what you are doing." msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "Recommended steps to propose inclusion this way are written on the [F-Droid application metadata repository](https://gitlab.com/fdroid/fdroiddata/blob/master/CONTRIBUTING.md)." msgstr "" #. type: Title ## #: _docs/Inclusion_How-To.md #, no-wrap msgid "Application Review Process" msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "Once the inclusion proposal is filed, the application will enter a reviewing process where F-Droid staff look into the applications source code and determine whether the it fits for inclusion (and when it's not, determine all necessary steps to make it so)." msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "As F-Droid is a software repository which promises users free software, a review process is for ensuring that all applications distributed from the F-Droid main repository are Free Software." msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "This is a nonexhaustive list of what a reviewer would do:" msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "They will go to your source code repository, and look for copyright notices in license files, including README, to check that the proposed application is released under [recognized Free Software license(s)](https://www.gnu.org/licenses/license-list.html)." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "They will look at your build script to see which build system you use, and whether F-Droid build server can handle it (Ant and Gradle are the most common and easiest ones)." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "They will try to download a copy of your source code." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "They will look in all source code files to verify that their licenses are consistent with corresponding license/README files." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "They will check if your application uses any pre-compiled libraries or binary blobs." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "They will look at your non-source code files to identify [Non-Free resources](https://monitor.f-droid.org/anti-feature/NonFreeAssets) used in your application." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "They will skim through the source code to see if your application uses Non-Free dependencies, shows advertisements, tracks users, promotes or depends on Non-Free services/applications, or does anything that is harmful or otherwise undesirable for users." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "They will list a summary of any [_AntiFeatures_](https://monitor.f-droid.org/anti-features) in your application." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "They will try patching your application to remove usage of third-party proprietary software (if there is any)." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "They will try to determine a suitable update process for your application (e.g. by looking at how your releases relate to VCS tags and/or version information in _AndroidManifest.xml_)." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "They will try writing a suitable metadata file for your application, and add it to local F-Droid build server instance. (`fdroid rewritemeta`, `fdroid lint` are used to ensure that metadata is well-formed)" msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "They will try to build your application in an isolated environment to see if the process succeeds and yield a functional APK." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "If all went smoothly, they will add a new metadata file to their local fdroiddata git repository and synchronizes the change to GitLab." msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "In the case that the application failed some steps in the review, feedback will be given in the original submission queue thread where the proposal was posted." msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "Once the fdroiddata repository is updated on GitLab, it's mostly just a matter of time before F-Droid's official build server will fetch, build, and publish your application on the main F-Droid repository." msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "You can confirm the inclusion of your application by looking at the [GitLab fdroiddata revision history](https://gitlab.com/fdroid/fdroiddata/commits/master)." msgstr "" #. type: Title ### #: _docs/Inclusion_How-To.md #, no-wrap msgid "Special Consideration of Metadata Merge Request" msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "In case the inclusion is from a GitLab merge request, the review process is theoretically the same. They are done mostly to confirm that the proposed metadata is consistent with what is really in the application source code. Steps about writing and committing metadata are omitted, as they will use the original metadata file you proprosed. Feedback will be given on the original merge request thread that the application was proposed; and once the process is completed, the request will be merged to the `master` branch of the fdroiddata GitLab repository." msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "In an attempt to optimize the process, when you proposed inclusion via metadata merge request, F-Droid staff rely on several assumptions ([outlined above](#Proposal_by_Metadata_Merge_Request)). As such, the reviewing process will be much less intensive in several respects, and consumes much less time. Policy-violating applications that somehow sneaked in this way will be dealt with after the fact." msgstr "" #. type: Title ## #: _docs/Inclusion_How-To.md #, no-wrap msgid "Build Process" msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "After the application metadata is added to fdroiddata GitLab repository, the next step is for the main F-Droid build server to fetch the applications source code and related components, build the application, and publish it on the main F-Droid repository." msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "This build process is done **daily**, and applications are processed in batch. As steps are done behind the scene and are mostly automatic; all the submitter needs to do is to wait for it to finish." msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "A record of a successful build process for one application is provided on the F-Droid's website page for that specific app (e.g. [see the Build Log for the F-Droid Client](https://f-droid.org/en/packages/org.fdroid.fdroid/#latest))." msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "Apps that fail will have the log available during the build cycle on the [F-Droid Monitor - Running](https://monitor.f-droid.org/builds/running) page or, if in the previous cycle, on the [Build](https://monitor.f-droid.org/builds/build) page. This is useful to aid in diagnosing problems when the build unexpectedly failed." msgstr "" #. type: Title ### #: _docs/Inclusion_How-To.md #, no-wrap msgid "Metadata Refreshing Process" msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "When the scheduled building time arrives, the F-Droid build server will fetch changes from the fdroiddata GitLab repository and merge it to a local repository. Then, update checks will be performed for all applications. If a new version is found, their metadata files will be updated and committed to the repository by the author `F-Droid Builder `." msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "Once metadata files are updated, the F-Droid Server will check them against a list of released APKs to constuct a list of new applications and/or versions that need to be built. It will then enter the application preprocessing process, followed by the build process for each of them." msgstr "" #. type: Title ### #: _docs/Inclusion_How-To.md #, no-wrap msgid "Application Preprocessing" msgstr "" #. type: Title ### #: _docs/Inclusion_How-To.md #, no-wrap msgid "Application Build Process" msgstr "" #. type: Title ### #: _docs/Inclusion_How-To.md #, no-wrap msgid "APK Signing Process" msgstr "" #. type: Title ### #: _docs/Inclusion_How-To.md #, no-wrap msgid "Repository Publishing Process" msgstr "" #. type: Title ## #: _docs/Inclusion_How-To.md #, no-wrap msgid "What to Expect" msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "When your application metadata is approved and accepted into the fdroiddata git repository on GitLab, **it won't immediately appear** in the main F-Droid repository." msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "Provided that your application does not have any build problems, it would takes somewhere **around 24 to 48 hours** from fdroiddata merge until the application to appears in the main repository.[1](https://f-droid.org/forums/topic/how-fast-the-main-f-droid-repository-updates/) This timing limitation is due to the APK signing part of the build process, which requires human intervention on keystore access step.[2](https://f-droid.org/forums/topic/encouraging-f-droid-participation-by-developers/#post-17868)" msgstr "" #. type: Plain text #: _docs/Inclusion_How-To.md msgid "Nevertheless, your application will not appear in f-droid.org's Lastest Apps list just yet, even though people can now already search and download it: Once the application appeared in the main F-Droid repository, it would take another day before appearing on [Latest Apps list](https://f-droid.org/)." msgstr "" #. type: Title ## #: _docs/Inclusion_How-To.md #, no-wrap msgid "External Links" msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "[F-Droid application submission queue on GitLab](https://gitlab.com/fdroid/rfp/issues) (for new submissions)" msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "[F-Droid application submission queue on forum](https://f-droid.org/forums/forum/submission-queue/) (for following-up old submissions)" msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "[fdroiddata GitLab repository](https://gitlab.com/fdroid/fdroiddata/)" msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_How-To.md msgid "[fdroiddata revision history](https://gitlab.com/fdroid/fdroiddata/commits/master)" msgstr "" #. type: YAML Front Matter: title #: _docs/Inclusion_Policy.md #, no-wrap msgid "Inclusion Policy" msgstr "" #. type: Plain text #: _docs/Inclusion_Policy.md msgid "All applications in the repository must be Free, Libre and Open Source Software (FLOSS) – for example, released under a GPL or Apache license. Every effort is made to verify that this is actually the case, both by visual inspection of the source, and by building the application from the published source. To determine which licenses are FLOSS, We defer to widely trusted organizations that have a proven track record. Specifically, we acknowledge these standards: [DFSG](https://wiki.debian.org/DFSGLicenses), [FSF](https://www.fsf.org/licensing), [GNU](https://www.gnu.org/licenses/license-list.html), and [OSI](https://opensource.org/licenses)." msgstr "" #. type: Plain text #: _docs/Inclusion_Policy.md msgid "For software to be FLOSS, the software in its entirety must be so - including all libraries and dependencies used. Additionally, it must be buildable with only FLOSS tools." msgstr "" #. type: Plain text #: _docs/Inclusion_Policy.md msgid "Notably:" msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "We cannot build apps using Google's proprietary \"Play Services\". Please talk to upstream about an untainted build flavor (either using microg or removing Non-Free dependencies completely)." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "We cannot build apps using proprietary tracking/analytic dependencies like Crashlytics and Firebase. Please talk to upstream about an untainted build flavor (either using a FLOSS analytics software like ACRA or by removing Non-Free dependencies completely)." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "We cannot build apps using proprietary ad libraries. We have nothing against advertisments (see [_Anti-Features_](../Anti-Features)), but they must be provided by a FLOSS-compatible way." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "We cannot build apps requiring Non-Free build tools, including Oracle's JDK or some pre-release toolchains." msgstr "" #. type: Plain text #: _docs/Inclusion_Policy.md msgid "Additionally:" msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "The source code for the application must be maintained in a publicly accessible Version Control System which we have support for (git, hg, svn, bzr), and the source code needs to be maintained in an up to date state." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "The software should not download additional executable binary files (e.g. Non-Free addons, auto-updates, etc)." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "The software should use its own unique Android \"[Application ID](https://developer.android.com/studio/build/configure-app-module)\" based on a domain name under the developer's control. For example, if the app is in a group called \"foo\" on [gitlab.com](https://gitlab.com), then the domain name could be `io.gitlab.foo`. It should not be based on someone's domain name, (e.g. `com.google.foo`). Maven Central OSSRH provides [good guidance](https://central.sonatype.org/publish/requirements/coordinates/)." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "Where the application is a fork of another (even one not included in the F-Droid repository) it must have a new ID, different from the original. Make sure to rename your fork accordingly (including all active translations). Forks which only re-brand an app but do not add value for users might not get accepted." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "Although not ideal, \"non-functional\" assets (e.g. artwork) *may* be acceptable under less permissive licenses than functional code - an example would be artwork assets that are licensed only for use with that particular game. In any case though, they must be included under some kind of license, and not be copyright violations." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "Trademarks must not be infringed, and any other legal requirements must be adhered to." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "F-Droid does not sign up for any API keys. Even if provided by a third party, we include them in both, binary and sourcecode releases." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "Binary dependencies such as JAR files have to be replaced by source-built versions or used from a trusted repository like Maven Central OSSRH (see manual)." msgstr "" #. type: Plain text #: _docs/Inclusion_Policy.md msgid "Ideally:" msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "Releases should be clearly tagged (or otherwise marked)." msgstr "" #. type: Plain text #: _docs/Inclusion_Policy.md msgid "Though we tried to build everyting from source, we still need some prebuild binaries. Therefore we have some exceptions:" msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "Android SDK/NDK. They are released as proprietary binaries but we don't have an alternative currently. There is in-progress work to package recent Android SDK versions in Debian." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "Gradle. Only some old versions of Gradle are packaged in Debian. Currently we download them from the developer website." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "Flutter SDK. They are FOSS but not packaged in Debian and we are not able to built it from source. Currently we download them from the developer website with the Flutter srclib scripts." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "JSC/Hermers. They can be built from source which takes hours. Currently we downloaded them from npm and scanignore them." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "Binaries from pip wheels. Some apps install deps with pip and we just trust the untrustworthy Pypi." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "Binaries from Nix cache. These binaries are mostly reproducible." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "Rust/Rustup. Currently we download them from the developer website with the scripts in the rustup srclib. We may be able to use the Debian packages." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "Golang & Nodejs. They are available in Debian but we are using a very old Debian version so recent versions are not available. Currently we download them from the developer website." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "Some other compilers/build tools not packaged in our very old Debian version." msgstr "" #. type: Plain text #: _docs/Inclusion_Policy.md msgid "Some software, while being Free and Open Source, may engage in practices which are undesirable to some or all users. Where possible, we still include these applications in the repository, but they are flagged with the appropriate [_Anti-Features_](../Anti-Features). Even though such software can be included, when appropriately flagged, it is frequently the case that other \"FLOSS\" software with these features is actually not entirely free. For example, advertising and tracking users is often enabled via proprietary binary libraries which we cannot include." msgstr "" #. type: Plain text #: _docs/Inclusion_Policy.md msgid "When including donation information, the relevant donation links (e.g. Liberapay/OpenCollective/Bitcoin/etc) must also be available either:" msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "In a README or similar file in the project's source code." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "In a [_FUNDING.yml_](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository#about-funding-files) file included in the project's source code." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "On the applications main website." msgstr "" #. type: Bullet: '- ' #: _docs/Inclusion_Policy.md msgid "If the software is hosted on GitLab, then it is sufficient that the person requesting donation info to be added to the fdroiddata repository is the same user account which manages the application source code." msgstr "" #. type: Plain text #: _docs/Inclusion_Policy.md msgid "This is to prevent arbitrary people from maliciously changing the donation links of applications in the main F-Droid repository without the consent of upstream developers." msgstr "" #. type: Plain text #: _docs/Inclusion_Policy.md msgid "For more information on adding applications to the F-Droid Repository, see the [Inclusion How-To](../Inclusion_How-To)." msgstr "" #. type: YAML Front Matter: title #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "Installing the Server and Repo Tools" msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "The [fdroidserver](https://gitlab.com/fdroid/fdroidserver) tools provide everything you need to set up and maintain your own repos, run an fdroid build server, and even host your own website like f-droid.org. The F-Droid developers mostly work on Debian, Arch, and Ubuntu, so those are currently the best supported platforms." msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "To setup and maintain your own collection of apps and media from the command line, setup an F-Droid repository using the tools from _fdroidserver_. To run the full F-Droid build server setup, see [Build Server Setup](../Build_Server_Setup)." msgstr "" #. type: Title ## #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "Debian/Ubuntu/Mint/etc" msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "The F-Droid tools, also known as _fdroidserver_, may be installed from the standard OS package repository. On Debian-based OS's, this should be enough to install the basic F-Droid setup:" msgstr "" #. type: Fenced code block (bash) #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "sudo apt-get install fdroidserver\n" msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "However, it is common to find that the version of _fdroidserver_ available in the standard OS package repository is out of date." msgstr "" #. type: Title ### #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "Getting a newer version" msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "A newer version of _fdroidserver_ may be found in the F-Droid PPA or your OS's _backports_ repository." msgstr "" #. type: Bullet: '- ' #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "Ubuntu/Mint: use the [F-Droid PPA](https://launchpad.net/~fdroid/+archive/fdroidserver/+packages) (fingerprint: `9AAC 2531 93B6 5D4D F1D0 A13E EC46 32C7 9C5E 0151`):" msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "" " ```bash\n" " sudo add-apt-repository ppa:fdroid/fdroidserver\n" " sudo apt-get update\n" " sudo apt-get install fdroidserver\n" " ```\n" msgstr "" #. type: Bullet: '- ' #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "Debian: first [setup backports](http://backports.debian.org/Instructions/#index2h2), then, substituting your Debian release for 'buster': ```bash apt-get install fdroidserver/buster-backports ```" msgstr "" #. type: Title ## #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "Fedora/Archlinux" msgstr "Fedora/Archlinux" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "Since packages in these distros could be newer than the official ones on pypi, installing the dependencies in a separate virtual environment workarounds dependency resolving failures:" msgstr "" #. type: Fenced code block (bash) #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "" "python3 -m venv env\n" "source env/bin/activate\n" "pip install -e .\n" msgstr "" "python3 -m venv env\n" "source env/bin/activate\n" "pip install -e .\n" #. type: Title ## #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "Guix" msgstr "Guix" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "The tools are also available in the main Guix channel. To install: \n" msgstr "" #. type: Fenced code block #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "guix install fdroidserver\n" msgstr "guix install fdroidserver\n" #. type: Title ## #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "macOS" msgstr "macOS" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "You can install `fdroidserver` directly using Homebrew, or `easy_install` as a last resort:" msgstr "" #. type: Title ### #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "Homebrew:" msgstr "Homebrew:" #. type: Bullet: '1. ' #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "Preparation: Check [the Homebrew formula](https://formulae.brew.sh/formula/fdroidserver) for instructions. Example:" msgstr "" #. type: Fenced code block (bash) #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "" "brew install android-sdk\n" "android update sdk --no-ui --all --filter tools,platform-tools,build-tools-25.0.0\n" msgstr "" "brew install android-sdk\n" "android update sdk --no-ui --all --filter tools,platform-tools,build-tools-25.0.0\n" #. type: Bullet: '2. ' #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "Install _fdroidserver_:" msgstr "_fdroidserver_ kurun:" #. type: Fenced code block (bash) #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "brew install fdroidserver\n" msgstr "brew install fdroidserver\n" #. type: Title ### #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "With only `easy_install`:" msgstr "" #. type: Fenced code block #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "sudo easy_install fdroidserver\n" msgstr "sudo easy_install fdroidserver\n" #. type: Title ## #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "Windows" msgstr "Windows" #. type: Title ### #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "Windows 10 Subsystem for Linux" msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "Starting with the Windows 10 \"Anniversary Update\", you can [enable an Ubuntu environment](https://msdn.microsoft.com/en-us/commandline/wsl/install_guide) that runs in Windows, known has \"Bash on Windows\", \"Ubuntu on Windows\", or \"Windows Subsystem for Linux\"." msgstr "" #. type: Bullet: '1. ' #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "[setup Windows Subsystem for Linux](https://msdn.microsoft.com/en-us/commandline/wsl/install_guide)" msgstr "" #. type: Bullet: '2. ' #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "install *fdroidserver* from the [F-Droid PPA](https://launchpad.net/~fdroid/+archive/fdroidserver/+packages) (fingerprint: `9AAC 2531 93B6 5D4D F1D0 A13E EC46 32C7 9C5E 0151`) by running this in the Bash shell window:" msgstr "" #. type: Fenced code block (bash) #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "" "sudo add-apt-repository ppa:fdroid/fdroidserver\n" "sudo apt-get update\n" "sudo apt-get install fdroidserver\n" msgstr "" "sudo add-apt-repository ppa:fdroid/fdroidserver\n" "sudo apt-get update\n" "sudo apt-get install fdroidserver\n" #. type: Title ### #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "Cygwin" msgstr "Cygwin" #. type: Bullet: '1. ' #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "add Java to your PATH: " msgstr "" #. type: Bullet: '2. ' #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "Install Cygwin " msgstr "" #. type: Bullet: '3. ' #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "in Cygwin, install these packages: *gcc-core git openssh python3 python3-pyasn1 python3-imaging python3-paramiko python3-requests python3-setuptools rsync wget*" msgstr "" #. type: Bullet: '4. ' #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "open a Cygwin bash shell and run: `easy_install fdroidserver`" msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "Then here's the repo setup:" msgstr "" #. type: Fenced code block (bash) #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "" "export ANDROID_HOME=/cygdrive/c/path/to/android-sdk\n" "fdroid init # the keystore gen will fail\n" msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "After running `fdroid init`, you need to set the Windows path to your keystore in _config.yml_. It is also possible to install _fdroidserver_ in a virtual environment using _virtualenv_ and _pip_." msgstr "" #. type: Title ## #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "Docker Executable Image (any platform)" msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "If you are already running Docker \"Executable Images\", then the easiest way to run _fdroidserver_ is to use our [executable image](https://gitlab.com/fdroid/docker-executable-fdroidserver)" msgstr "" #. type: Title ## #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "Installing the latest code (any platform)" msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "The easiest way to install the fdroidserver tools from source is to use virtualenv and pip. First, make sure you have the Python3 version of _virtualenv_ or _pyvenv_ installed, it should be included in your OS's Python distribution or via other mechanisms like dnf/yum/pacman/emerge/Fink/MacPorts/Brew. Then here's how to install _fdroidserver_ into a Python \"virtual env\":" msgstr "" #. type: Fenced code block (bash) #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "" "pyvenv fdroidserver-env\n" ". fdroidserver-env/bin/activate\n" "pip install git+https://gitlab.com/fdroid/fdroidserver.git\n" msgstr "" "pyvenv fdroidserver-env\n" ". fdroidserver-env/bin/activate\n" "pip install git+https://gitlab.com/fdroid/fdroidserver.git\n" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "You can find variations on this used in the CI tests: https://gitlab.com/fdroid/fdroidserver/blob/master/.gitlab-ci.yml" msgstr "" #. type: Title ## #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "Building apps" msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "To build apps using F-Droid, Java and the whole Android SDK must be installed. This process is currently only developed on GNU/Linux, but we'd love patches getting it working on macOS and Windows. If you only want to make F-Droid repositories of APK files that you already have or don't know what this means, then you can skip this section." msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "In order to build Android apps with the _fdroidserver_ toolchain, Java, the Android SDK, and some other essential tools must be installed. Only [parts of the Android SDK](https://qa.debian.org/developer.php?email=android-tools-devel%40lists.alioth.debian.org) are available in Debian, so the Android SDK must be installed manually, as well as the packages that it requires (_the Android SDK tools include some 32-bit binaries, so even 64-bit systems need these i386 library packages_). The F-Droid tools use the Android SDK to build and inspect apps, so you must have the Android SDK installed and setup before using _fdroidserver_." msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "[Install the Android SDK](https://developer.android.com/sdk/index.html#downloads) and make sure the `ANDROID_HOME` environment variable is properly set. Be sure to verify the file you downloaded, you can double-check the SHA-1 Checksum on Google's download page." msgstr "" #. type: Fenced code block (bash) #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "" "$ sudo apt-get install fdroidserver\n" "$ mkdir ~/android-sdk-linux\n" "$ cd ~/android-sdk-linux\n" "$ wget https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip\n" "$ echo \"87f6dcf41d4e642e37ba03cb2e387a542aa0bd73cb689a9e7152aad40a6e7a08 commandlinetools-linux-6858069_latest.zip\" | sha256sum -c\n" "commandlinetools-linux-6858069_latest.zip: OK\n" "$ unzip commandlinetools-linux-6858069_latest.zip\n" "$ export ANDROID_HOME=\"$HOME/android-sdk-linux\"\n" "$ ./cmdline-tools/bin/sdkmanager --sdk_root=\"$ANDROID_HOME\" platform-tools \"build-tools;30.0.3\"\n" msgstr "" "$ sudo apt-get install fdroidserver\n" "$ mkdir ~/android-sdk-linux\n" "$ cd ~/android-sdk-linux\n" "$ wget https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip\n" "$ echo \"87f6dcf41d4e642e37ba03cb2e387a542aa0bd73cb689a9e7152aad40a6e7a08 commandlinetools-linux-6858069_latest.zip\" | sha256sum -c\n" "commandlinetools-linux-6858069_latest.zip: OK\n" "$ unzip commandlinetools-linux-6858069_latest.zip\n" "$ export ANDROID_HOME=\"$HOME/android-sdk-linux\"\n" "$ ./cmdline-tools/bin/sdkmanager --sdk_root=\"$ANDROID_HOME\" platform-tools \"build-tools;30.0.3\"\n" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "Note: If you have Android Studio installed, you have the Android SDK installed. It should be located at `~/Android/Sdk` instead of `~/android-sdk-linux`. You can find the location in Android Studio when you open the Tools→SDK Manager menu." msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "To add these settings permanently to your shell:" msgstr "" #. type: Fenced code block (bash) #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "$ echo export ANDROID_HOME=$ANDROID_HOME >> .bashrc\n" msgstr "$ echo export ANDROID_HOME=$ANDROID_HOME >> .bashrc\n" #. type: Title ## #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "Building all apps from f-droid.org" msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "In order to build all apps that are included in f-droid.org, then a lot more software packages are required:" msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "- all SDK platforms requested by the apps you want to build - all Debian packages required by every app build process (maven, ant, etc) - every source code management tool (git, subversion, mercurial, etc) - every version of the Android NDK that apps use" msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "On top of that, to build apps like they are built on f-droid.org, then the whole [Build Server Setup](../Build_Server_Setup) is required. That is a more secure, production-ready setup that requires quite a bit more setup and resources. The [build server provisioning scripts](https://gitlab.com/fdroid/fdroidserver/tree/master/buildserver/) provide a useful reference for all the needed bits." msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "If you want to make your own official releases with the F-Droid tools, then you'll also need to set up the [Signing Process](../Signing_Process)." msgstr "" #. type: Title ## #: _docs/Installing_the_Server_and_Repo_Tools.md #, no-wrap msgid "Proprietary, Non-Free libraries" msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "The Android SDK is made available by Google under a proprietary license. Within that, the essential build tools, SDK platforms, support library and some other components are under the Apache license and source code is provided." msgstr "" #. type: Plain text #: _docs/Installing_the_Server_and_Repo_Tools.md msgid "Google APIs, used for building apps using Google Maps, are free to the extent that the library comes pre-installed on the device. Google Play Services, Google Admob, GCM, and many other third party libraries are proprietary and cannot be included in the main F-Droid repository. The [MicroG project](https://microg.org) is developing free software replacements for some of the most used proprietary Google libraries" msgstr "" #. type: YAML Front Matter: title #: _docs/Maintaining_the_Forum.md #, no-wrap msgid "Maintaining the forum" msgstr "" #. type: Plain text #: _docs/Maintaining_the_Forum.md msgid "[F-Droid's forum](https://forum.f-droid.org) is powered by [Discourse](https://www.discourse.org/) and [maintained by volunteers](https://forum.f-droid.org/about)." msgstr "" #. type: Plain text #: _docs/Maintaining_the_Forum.md msgid "This page is the central place where all information needed to maintain the forum are stored." msgstr "" #. type: Title ### #: _docs/Maintaining_the_Forum.md #, no-wrap msgid "General information" msgstr "" #. type: Plain text #: _docs/Maintaining_the_Forum.md msgid "Here is some general, non-sensitive information about our instance. When setting up the forum, we followed [Docker's](https://docs.docker.com/engine/installation/linux/docker-ce/debian) and [Dicourse's](https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md) official installation guides. Posts from the old forum were not imported due to time restrictions of the voluntary administrators." msgstr "" #. type: Bullet: '* ' #: _docs/Maintaining_the_Forum.md msgid "Installation type: [docker-ce](https://github.com/discourse/discourse_docker)" msgstr "" #. type: Bullet: '* ' #: _docs/Maintaining_the_Forum.md msgid "Storage driver: [AUFS](https://docs.docker.com/engine/userguide/storagedriver/aufs-driver/)" msgstr "" #. type: Bullet: '* ' #: _docs/Maintaining_the_Forum.md msgid "Sever's specifications: 2 cores, 4GB RAM, 30GB SSD" msgstr "" #. type: Bullet: '* ' #: _docs/Maintaining_the_Forum.md msgid "Server's location: Amsterdam" msgstr "" #. type: Title #### #: _docs/Maintaining_the_Forum.md #, no-wrap msgid "Paths" msgstr "" #. type: Bullet: '* ' #: _docs/Maintaining_the_Forum.md msgid "Installation directory: _/var/discourse_" msgstr "" #. type: Bullet: '* ' #: _docs/Maintaining_the_Forum.md msgid "App configuration: _/var/discourse/containers/app.yml_" msgstr "" #. type: Bullet: '* ' #: _docs/Maintaining_the_Forum.md msgid "Backups: _/var/discourse/shared/standalone/backups/default_" msgstr "" #. type: Title #### #: _docs/Maintaining_the_Forum.md #, no-wrap msgid "Discourse" msgstr "" #. type: Bullet: '* ' #: _docs/Maintaining_the_Forum.md msgid "Version: _tests-passed_" msgstr "" #. type: Bullet: '* ' #: _docs/Maintaining_the_Forum.md msgid "SSL: Let's Encrypt" msgstr "" #. type: Bullet: '* ' #: _docs/Maintaining_the_Forum.md msgid "Login methods: local, GitHub" msgstr "" #. type: Bullet: '* ' #: _docs/Maintaining_the_Forum.md msgid "Backup frequency: daily" msgstr "" #. type: Bullet: '* ' #: _docs/Maintaining_the_Forum.md msgid "Amount of backups stored: Last 15 ones" msgstr "" #. type: Title ### #: _docs/Maintaining_the_Forum.md #, no-wrap msgid "Upgrading" msgstr "" #. type: Plain text #: _docs/Maintaining_the_Forum.md msgid "Upgrading the forum is quite simple. Upgrades are planned to be done every one to two weeks. If you feel like there was an important update to Discourse which should get deployed earlier, [please reach out to us]({{ site.baseurl }}/about/)." msgstr "" #. type: Plain text #: _docs/Maintaining_the_Forum.md msgid "For administrators, this is the common way how to upgrade the forum:" msgstr "" #. type: Bullet: '* ' #: _docs/Maintaining_the_Forum.md msgid "[Make a backup of the forum](https://forum.f-droid.org/admin/backups)" msgstr "" #. type: Bullet: '* ' #: _docs/Maintaining_the_Forum.md msgid "Wait until the backup finished and download it (you'll get a link by mail)" msgstr "" #. type: Bullet: '* ' #: _docs/Maintaining_the_Forum.md msgid "Go to the [upgrade section](https://forum.f-droid.org/admin/upgrade)" msgstr "" #. type: Plain text #: _docs/Maintaining_the_Forum.md #, no-wrap msgid "" "* Upgrade (the different parts of) the forum, e.g. sometimes\n" "_docker_manager_ has available updates which need to happen before _discourse_\n" "* Report that all updates were successful in the\n" "[maintenance log](https://forum.f-droid.org/t/maintenance-log/775)\n" msgstr "" #. type: Title ## #: _docs/Maintaining_the_Forum.md #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md #, no-wrap msgid "Troubleshooting" msgstr "" #. type: Plain text #: _docs/Maintaining_the_Forum.md msgid "In case something goes wrong with the forum, stay calm, you're likely not the first to be affected by this. Mostly a quick internet search gives you detailed instructions on how to fix a problem. There is also a really good guide called [Advanced Troubleshooting with Docker](https://meta.discourse.org/t/advanced-troubleshooting-with-docker/15927) on Discourse's forum. In the past, the following instructions were helpful:" msgstr "" #. type: Title #### #: _docs/Maintaining_the_Forum.md #, no-wrap msgid "Rebuilding the container" msgstr "" #. type: Plain text #: _docs/Maintaining_the_Forum.md msgid "This also updates all the parts of Discourse to their newest versions. Therefore, it's also of interest if there are many available updates in the updates section on the web interface and you want to quickly update all of them." msgstr "" #. type: Plain text #: _docs/Maintaining_the_Forum.md msgid "Sometimes you even have to update the forum this way because a new version of _Docker manager_ got installed, causing Discourse to refuse updates through its web interface." msgstr "" #. type: Fenced code block (bash) #: _docs/Maintaining_the_Forum.md #, no-wrap msgid "" "cd /var/discourse\n" "git pull\n" "./launcher rebuild app\n" msgstr "" #. type: Title #### #: _docs/Maintaining_the_Forum.md #, no-wrap msgid "Cleaning up Docker" msgstr "" #. type: Plain text #: _docs/Maintaining_the_Forum.md msgid "Docker stores copies of a lot of stuff that _could_ be used in the future, but mostly is not. From time to time it's required to clean up that stuff which sometimes results in more than 10 GB of freed space." msgstr "" #. type: Fenced code block (bash) #: _docs/Maintaining_the_Forum.md #, no-wrap msgid "docker system prune -a\n" msgstr "docker system prune -a\n" #. type: Plain text #: _docs/Maintaining_the_Forum.md msgid "With this, the following things get deleted:" msgstr "" #. type: Bullet: '* ' #: _docs/Maintaining_the_Forum.md msgid "all stopped containers" msgstr "" #. type: Bullet: '* ' #: _docs/Maintaining_the_Forum.md msgid "all networks not used by at least one container" msgstr "" #. type: Bullet: '* ' #: _docs/Maintaining_the_Forum.md msgid "all images without at least one container associated to them" msgstr "" #. type: Bullet: '* ' #: _docs/Maintaining_the_Forum.md msgid "all build cache" msgstr "" #. type: Title ### #: _docs/Maintaining_the_Forum.md #, no-wrap msgid "Installation log" msgstr "" #. type: Plain text #: _docs/Maintaining_the_Forum.md msgid "In case we need to set up the virtual machine because of some problem, you can use this instruction to do so quickly." msgstr "" #. type: Plain text #: _docs/Maintaining_the_Forum.md #, no-wrap msgid "Install Docker" msgstr "" #. type: Plain text #: _docs/Maintaining_the_Forum.md msgid "References:" msgstr "" #. type: Bullet: '* ' #: _docs/Maintaining_the_Forum.md msgid "https://docs.docker.com/engine/installation/linux/docker-ce/debian" msgstr "" #. type: Plain text #: _docs/Maintaining_the_Forum.md msgid "Download Docker's PGP key" msgstr "" #. type: Fenced code block (bash) #: _docs/Maintaining_the_Forum.md #, no-wrap msgid "" "wget -O docker-gpg https://download.docker.com/linux/debian/gpg\n" "apt-key add docker-gpg\n" msgstr "" #. type: Plain text #: _docs/Maintaining_the_Forum.md msgid "Check PGP key" msgstr "" #. type: Fenced code block (bash) #: _docs/Maintaining_the_Forum.md #, no-wrap msgid "" "# Must match '9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88'\n" "apt-key fingerprint 0EBFCD88\n" msgstr "" #. type: Plain text #: _docs/Maintaining_the_Forum.md msgid "Add Docker repository" msgstr "" #. type: Fenced code block (bash) #: _docs/Maintaining_the_Forum.md #, no-wrap msgid "" "echo 'deb [arch=amd64] https://download.docker.com/linux/debian stretch stable' >> /etc/apt/sources.list.d/docker.com.list\n" "apt update\n" msgstr "" #. type: Fenced code block (bash) #: _docs/Maintaining_the_Forum.md #, no-wrap msgid "apt install docker-ce\n" msgstr "" #. type: Plain text #: _docs/Maintaining_the_Forum.md msgid "Check Docker" msgstr "" #. type: Fenced code block (bash) #: _docs/Maintaining_the_Forum.md #, no-wrap msgid "docker run hello-world\n" msgstr "" #. type: Title #### #: _docs/Maintaining_the_Forum.md #, no-wrap msgid "Install Discourse" msgstr "" #. type: Plain text #: _docs/Maintaining_the_Forum.md msgid "If you still have the old _/var/discourse_ directory available, you can simply deploy it on the new server and start it by `./launcher rebuild app`." msgstr "" #. type: Plain text #: _docs/Maintaining_the_Forum.md msgid "Follow the [official installation guide](https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md)." msgstr "" #. type: Title #### #: _docs/Maintaining_the_Forum.md #, no-wrap msgid "More Info" msgstr "" #. type: Plain text #: _docs/Maintaining_the_Forum.md msgid "You can find more info about updating and maintaining the forum as well as other admin tasks in the [F-Droid forum administrator training](https://forum.f-droid.org/t/f-droid-forum-administrator-training/5527?u=paulakreuzer) topic." msgstr "" #. type: YAML Front Matter: title #: _docs/MIA_Process.md #, no-wrap msgid "MIA Process" msgstr "" #. type: Plain text #: _docs/MIA_Process.md msgid "Maintainers come and go, interests and priorities change and time flies. This is true for every project and F-Droid as well. To keep the credentials and permissions in F-Droid reasonable, there is this missing in action (MIA) process." msgstr "" #. type: Plain text #: _docs/MIA_Process.md msgid "This means we regularly check if F-Droid team members are still active, i.e. when they last contributed, and drop those that don't respond to messages after some time. The idea is to improve F-Droid's quality, not to hunt developers." msgstr "" #. type: Title ### #: _docs/MIA_Process.md #, no-wrap msgid "What are F-Droid team members" msgstr "" #. type: Plain text #: _docs/MIA_Process.md msgid "- [Gitlab](https://gitlab.com/fdroid/admin/-/project_members) - [Forum](https://forum.f-droid.org/g/contributors)" msgstr "" #. type: Title ### #: _docs/MIA_Process.md #, no-wrap msgid "What are contributions" msgstr "" #. type: Plain text #: _docs/MIA_Process.md msgid "- Commits to one of the repos hosted on [Gitlab](https://gitlab.com/fdroid/). - Contributions to issues on [Gitlab](https://gitlab.com/groups/fdroid/-/issues). - Activity on the forum." msgstr "" #. type: Title ### #: _docs/MIA_Process.md #, no-wrap msgid "Who is MIA" msgstr "" #. type: Plain text #: _docs/MIA_Process.md msgid "No contribution or pong to a MIA ping for at least six month." msgstr "" #. type: Title ### #: _docs/MIA_Process.md #, no-wrap msgid "How are MIAs tracked" msgstr "" #. type: Plain text #: _docs/MIA_Process.md msgid "For every member that is MIA, an internal issue in the [admin project](https://gitlab.com/fdroid/admin/issues/) is opened. Every ping and pong is documented there. If a number of pings don't receive a pong, the team is mentioned in the issue, to ask if someone has an other way to contact the person." msgstr "" #. type: Title ### #: _docs/MIA_Process.md #, no-wrap msgid "The removal" msgstr "" #. type: Bullet: '- ' #: _docs/MIA_Process.md msgid "Status: First warning -> wait 16 weeks." msgstr "" #. type: Bullet: '- ' #: _docs/MIA_Process.md msgid "Status: Second warning -> wait 8 weeks." msgstr "" #. type: Bullet: '- ' #: _docs/MIA_Process.md msgid "Status: Final warning -> wait 4 weeks." msgstr "" #. type: Plain text #: _docs/MIA_Process.md msgid "Afterwards, MIA accounts are removed from all F-Droid directories (Gitlab) or downgraded to normal user account (forum) and the issue is closed and made public if it was set to confidential." msgstr "" #. type: Title ### #: _docs/MIA_Process.md #, no-wrap msgid "References" msgstr "" #. type: Plain text #: _docs/MIA_Process.md msgid "- [Debian reference](https://www.debian.org/doc/manuals/developers-reference/beyond-pkging.html#dealing-with-inactive-and-or-unreachable-maintainers) - [Debian team site](https://wiki.debian.org/Teams/MIA) - [Debian tools](https://salsa.debian.org/qa/qa/tree/master/mia)" msgstr "" #. type: YAML Front Matter: title #: _docs/Publishing_Nightly_Builds.md #, no-wrap msgid "Publishing Nightly Builds" msgstr "" #. type: Plain text #: _docs/Publishing_Nightly_Builds.md msgid "Having users run \"nightly\" builds is a great way to get rapid feedback on current development activities. One key way to get this kind of feedback is to make it as easy as possible for people to install the nightly builds, and to keep updated. The F-Droid tools now let you automate this whole process for apps that are setup on GitLab CI." msgstr "" #. type: Plain text #: _docs/Publishing_Nightly_Builds.md msgid "The F-Droid nightly repos are built on top of the standard Android _~/.android/debug.keystore_ that the Android tools automatically generate. That signing key is used to sign the nightly builds as well as the repo index. This is meant to be easy to setup and manage, but it does __not__ provide the same level of security as a standard F-Droid repo!" msgstr "" #. type: Plain text #: _docs/Publishing_Nightly_Builds.md msgid "Since this is about smoothing the development process, it also makes sense to reuse a shared _debug.keystore_ among your team. That way, all debug builds are interchangeable. This makes debugging certain problems a lot easier since you can keep the app state when installing your own debug builds, for example, to add logging." msgstr "" #. type: Title ## #: _docs/Publishing_Nightly_Builds.md #, no-wrap msgid "Automatic Version Codes" msgstr "" #. type: Plain text #: _docs/Publishing_Nightly_Builds.md msgid "With nightly builds, the normal logic for setting `versionCode` in git for each release no longer makes sense. In order for Android to treat each new build as a possible update, the `versionCode` must increase, but that does not make sense to commit to git each time. So there needs to be some automatic logic for setting `versionCode`:" msgstr "" #. type: Bullet: '* ' #: _docs/Publishing_Nightly_Builds.md msgid "timestamp in seconds (`date +%s`) will always increase" msgstr "" #. type: Bullet: '* ' #: _docs/Publishing_Nightly_Builds.md msgid "incrementing the last release's `versionCode` (e.g. 104030034, 104030035, 104030036)" msgstr "" #. type: Bullet: '* ' #: _docs/Publishing_Nightly_Builds.md msgid "git commit count (`git rev-list --first-parent --count HEAD`) provides some hints of where in the code the build was made from" msgstr "" #. type: Plain text #: _docs/Publishing_Nightly_Builds.md msgid "For many apps, some combo will make the most sense. For F-Droid, we have a variable `DB_VERSION` for the internal database. We only handle upgrading the database, never downgrading. So that needs to be the most important part of the versionCode. Any build with `DB_VERSION = 77` should not be upgraded by any build with `DB_VERSION = 75`. Then the minor part is the commit count, so it looks like (7502543, 7502544, 7702601, etc). with `DB_VERSION` as the first two digits, then a 0-padded commit count as the last 5 digits." msgstr "" #. type: Title ## #: _docs/Publishing_Nightly_Builds.md #, no-wrap msgid "Configuring GitLab CI" msgstr "" #. type: Plain text #: _docs/Publishing_Nightly_Builds.md msgid "This assumes that the app is already setup with _.gitlab-ci.yml_ and builds are running on GitLab CI. This also works for forks of the main project that has the _.gitlab-ci-yml_." msgstr "" #. type: Bullet: '1. ' #: _docs/Publishing_Nightly_Builds.md msgid "Run `fdroid nightly --show-secret-var` in the local git repo that is being setup, e.g. _fdroid/fdroidclient_. It will print out the SSH Public Key. Using `--show-secret-var` will make it print out base 64 text to be pasted into secret variable called `DEBUG_KEYSTORE`. Careful! That text is the entire _debug.keystore_, so protect it accordingly!" msgstr "" #. type: Bullet: '2. ' #: _docs/Publishing_Nightly_Builds.md msgid "Create a new GitLab \"project\" by appending _-nightly_ to the name. For example, becomes and becomes " msgstr "" #. type: Bullet: '3. ' #: _docs/Publishing_Nightly_Builds.md msgid "In that new project, add the SSH Public Key derived from your _debug.keystore_ as a Deploy Key in your Repository Settings, e.g. `https://gitlab.com/eighthave/fdroidclient-nightly/settings/repository`" msgstr "" #. type: Bullet: '4. ' #: _docs/Publishing_Nightly_Builds.md msgid "In the CI/CD Settings of the project being built, paste that into GitLab CI Secret Variable called `DEBUG_KEYSTORE`, e.g. `https://gitlab.com/eighthave/fdroidclient/settings/ci_cd`" msgstr "" #. type: Bullet: '5. ' #: _docs/Publishing_Nightly_Builds.md msgid "Then in that same page, in the Protected section, set up your _master_ branch to limit the possibility of leaking the _debug.keystore_. If _master_ cannot be force-pushed, then any attempts to get the stored secrets are permanently written to the git history. Without that protection, someone with push access could push a commit in a branch to print out the secrets, then remove that commit to hide their actions." msgstr "" #. type: Bullet: '6. ' #: _docs/Publishing_Nightly_Builds.md msgid "Add a _deploy_ stage to your _.gitlab-ci.yml_ that produces only the build to publish to the nightly, then runs `fdroid nightly`. For example:" msgstr "" #. type: Fenced code block (yaml) #: _docs/Publishing_Nightly_Builds.md #, no-wrap msgid "" "deploy_nightly:\n" " stage: deploy\n" " only:\n" " - master\n" " script:\n" " - ./gradlew assembleDebug\n" " - pip3 install fdroidserver\n" " - export PATH=~/.local/bin:$PATH\n" " - fdroid nightly\n" msgstr "" #. type: Plain text #: _docs/Publishing_Nightly_Builds.md msgid "For a real world example using _gitlab-ci_, see _fdroidclient_: * * " msgstr "" #. type: Title ## #: _docs/Publishing_Nightly_Builds.md #, no-wrap msgid "Configuring for GitHub Actions" msgstr "" #. type: Plain text #: _docs/Publishing_Nightly_Builds.md msgid "GitHub and GitHub Actions are both proprietary platforms that are widely used to develop free software. Since F-Droid does not promote proprietary software, there is no official support for GitHub Actions. All of the F-Droid tooling is free software, so contributors have made a GitHub Action based on the F-Droid tools." msgstr "" #. type: Bullet: '2. ' #: _docs/Publishing_Nightly_Builds.md msgid "Create a new GitHub \"project\" by appending _-nightly_ to the name. For example, becomes and becomes " msgstr "" #. type: Bullet: '3. ' #: _docs/Publishing_Nightly_Builds.md msgid "In that new project, add the SSH Public Key derived from your _debug.keystore_ as a Deploy Key in your Security settings, e.g. `https://github.com/eighthave/fdroidclient-nightly/settings/keys`" msgstr "" #. type: Bullet: '4. ' #: _docs/Publishing_Nightly_Builds.md msgid "In the Settings of the project being built, find \"Actions\" under \"Secrets\" in the \"Security\" section. Paste the whole `DEBUG_KEYSTORE` output line into a new repository secret called `DEBUG_KEYSTORE`, e.g. `https://github.com/eighthave/fdroidclient/settings/secrets/actions`." msgstr "" #. type: Bullet: '5. ' #: _docs/Publishing_Nightly_Builds.md msgid "Add a _nightly_ stage to your _.github/workflows/_ that produces only the build to publish to the nightly, then runs `fdroid nightly`. For example:" msgstr "" #. type: Fenced code block (yaml) #: _docs/Publishing_Nightly_Builds.md #, no-wrap msgid "" "name: Publish nightly build\n" "\n" "on:\n" " push:\n" " branches:\n" " - main\n" "\n" "jobs:\n" " nightly:\n" " name: Publish nightly build\n" " runs-on: ubuntu-latest\n" " environment: nightly\n" " steps:\n" " - name: Checkout\n" " uses: actions/checkout@v2\n" " - name: Gradle Wrapper Validation\n" " uses: gradle/wrapper-validation-action@v1\n" " - name: Set up JDK 11\n" " uses: actions/setup-java@v2\n" " with:\n" " distribution: 'adopt'\n" " java-version: 11\n" " - name: Build\n" " run: |\n" " # use timestamp as Version Code\n" " export versionCode=$(date '+%s')\n" " sed -i \"s,^\\(\\s*versionCode\\) *[0-9].*,\\1 $versionCode,\" app/build.gradle\n" " ./gradlew assembleDebug\n" " - name: fdroid nightly\n" " run: |\n" " sudo add-apt-repository ppa:fdroid/fdroidserver\n" " sudo apt-get update\n" " sudo apt-get install apksigner fdroidserver --no-install-recommends\n" " export DEBUG_KEYSTORE=${{ '{{' }} secrets.DEBUG_KEYSTORE }}\n" " fdroid nightly --archive-older 10\n" msgstr "" #. type: Plain text #: _docs/Publishing_Nightly_Builds.md msgid "There is an alternate approach based on Docker maintained by @wardvl: [wardvl/f-droid-nightly-action](https://github.com/wardvl/f-droid-nightly-action/)" msgstr "" #. type: Title ## #: _docs/Publishing_Nightly_Builds.md #, no-wrap msgid "Configuring for GitHub and Travis CI" msgstr "" #. type: Bullet: '1. ' #: _docs/Publishing_Nightly_Builds.md msgid "Generate a new _debug.keystore_ for each app, since GitHub only allows a deploy key to be used on a single repo. Keep that file safe, since it is the signing key for your nightly build." msgstr "" #. type: Fenced code block #: _docs/Publishing_Nightly_Builds.md #, no-wrap msgid "" "keytool -genkey -v -keystore im.zom.messenger-debug.keystore \\\n" " -keyalg RSA -keysize 2048 -validity 10000 \\\n" " -alias androiddebugkey -storepass android -keypass android \\\n" " -dname \"CN=Android Debug,O=Android,C=US\"\n" msgstr "" "keytool -genkey -v -keystore im.zom.messenger-debug.keystore \\\n" " -keyalg RSA -keysize 2048 -validity 10000 \\\n" " -alias androiddebugkey -storepass android -keypass android \\\n" " -dname \"CN=Android Debug,O=Android,C=US\"\n" #. type: Plain text #: _docs/Publishing_Nightly_Builds.md #, no-wrap msgid "" "2. Set a GitHub Deploy Key for\n" " `https://github.com/zom/zom-android-nightly` by going to\n" " `https://github.com/zom/zom-android-nightly/settings/keys`. The\n" " public SSH key is printed out by running:\n" msgstr "" #. type: Fenced code block #: _docs/Publishing_Nightly_Builds.md #, no-wrap msgid "fdroid nightly --keystore im.zom.messenger-debug.keystore\n" msgstr "fdroid nightly --keystore im.zom.messenger-debug.keystore\n" #. type: Bullet: '3. ' #: _docs/Publishing_Nightly_Builds.md msgid "check _Allow write access_ in the GitHub Deploy Key settings" msgstr "" #. type: Bullet: '4. ' #: _docs/Publishing_Nightly_Builds.md msgid "To print out the secret variable contents, use `--show-secret-var`. Careful! That text is the entire _debug.keystore_, so protect it accordingly! This prints out base64 text to be pasted into a Travis CI \"Environment Variable\" in `https://travis-ci.org/zom/Zom-Android/settings`. Call the variable `DEBUG_KEYSTORE` and make sure \"Display value in build log\" is __OFF__." msgstr "" #. type: Fenced code block #: _docs/Publishing_Nightly_Builds.md #, no-wrap msgid "fdroid nightly --keystore im.zom.messenger-debug.keystore --show-secret-var\n" msgstr "fdroid nightly --keystore im.zom.messenger-debug.keystore --show-secret-var\n" #. type: Plain text #: _docs/Publishing_Nightly_Builds.md msgid "And here's a simple example of how to add _fdroidserver_ to your Travis CI setup to make it deploy the APK after a successful test:" msgstr "" #. type: Fenced code block (yaml) #: _docs/Publishing_Nightly_Builds.md #, no-wrap msgid "" "sudo: required\n" "language: android\n" "\n" "addons:\n" " apt:\n" " sources:\n" " - sourceline: 'ppa:fdroid/fdroidserver'\n" " packages:\n" " - fdroidserver\n" " - openssh-client\n" "\n" "android:\n" " components:\n" " - tools\n" " - platform-tools\n" " - build-tools-26.0.2\n" " - android-25\n" " licenses:\n" " - 'android-sdk-license-.+'\n" "\n" "script:\n" " - ./gradlew test\n" "\n" "after_success:\n" " - fdroid nightly -v\n" msgstr "" "sudo: required\n" "language: android\n" "\n" "addons:\n" " apt:\n" " sources:\n" " - sourceline: 'ppa:fdroid/fdroidserver'\n" " packages:\n" " - fdroidserver\n" " - openssh-client\n" "\n" "android:\n" " components:\n" " - tools\n" " - platform-tools\n" " - build-tools-26.0.2\n" " - android-25\n" " licenses:\n" " - 'android-sdk-license-.+'\n" "\n" "script:\n" " - ./gradlew test\n" "\n" "after_success:\n" " - fdroid nightly -v\n" #. type: Plain text #: _docs/Publishing_Nightly_Builds.md msgid "For a real world example, see _Zom_: * * * " msgstr "" #. type: YAML Front Matter: title #: _docs/Release_Channels_and_Signing_Keys.md #, no-wrap msgid "Release Channels and Signing Keys" msgstr "" #. type: Plain text #: _docs/Release_Channels_and_Signing_Keys.md msgid "This is a list of all signing keys used for F-Droid releases." msgstr "" #. type: Title ## #: _docs/Release_Channels_and_Signing_Keys.md #, no-wrap msgid "F-Droid client app for Android" msgstr "" #. type: Bullet: '- ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "git repo: " msgstr "" #. type: Bullet: ' - ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "git tags signed by \"Hans-Christoph Steiner \\\" aka \"Hans-Christoph Steiner \\\" aka \"Hans-Christoph Steiner \\\" with fingerprint:
`EE66 20C7 136B 0D2C 456C 0A4D E9E2 8DEA 00AA 5556`" msgstr "" #. type: Bullet: ' - ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "or previously signed by \"Daniel Martí \\\" aka \"Daniel Martí \\\" with fingerprint:
`A9DA 13CD F7A1 4ACD D3DE E530 F4CA FFDB 4348 041C`" msgstr "" #. type: Bullet: '- ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "official binary releases: " msgstr "" #. type: Bullet: ' - ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "GPG signing key: \"F-Droid \\\"" msgstr "" #. type: Bullet: ' - ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "Primary key fingerprint: `37D2 C987 89D8 3119 4839 4E3E 41E7 044E 1DBA 2E89`" msgstr "" #. type: Bullet: ' - ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "Subkey fingerprint: `802A 9799 0161 1234 6E1F EFF4 7A02 9E54 DD5D CE7A`" msgstr "" #. type: Bullet: ' - ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "APK signing key: ``` Owner: CN=Ciaran Gultnieks, OU=Unknown, O=Unknown, L=Wetherby, ST=Unknown, C=UK Issuer: CN=Ciaran Gultnieks, OU=Unknown, O=Unknown, L=Wetherby, ST=Unknown, C=UK Serial number: 4c49cd00 Valid from: Fri Jul 23 13:10:24 EDT 2010 until: Tue Dec 08 12:10:24 EST 2037 Certificate fingerprints:" msgstr "" #. type: Plain text #: _docs/Release_Channels_and_Signing_Keys.md #, no-wrap msgid "" " MD5: 17:C5:5C:62:80:56:E1:93:E9:56:44:E9:89:79:27:86\n" " SHA1: 05:F2:E6:59:28:08:89:81:B3:17:FC:9A:6D:BF:E0:4B:0F:A1:3B:4E\n" " SHA256: 43:23:8D:51:2C:1E:5E:B2:D6:56:9F:4A:3A:FB:F5:52:34:18:B8:2E:0A:3E:D1:55:27:70:AB:B9:A9:C9:CC:AB\n" " ```\n" " - APK signing certificate fingerprint:\n" " ```\n" " 43238d512c1e5eb2d6569f4a3afbf5523418b82e0a3ed1552770abb9a9c9ccab\n" " ```\n" msgstr "" #. type: Plain text #: _docs/Release_Channels_and_Signing_Keys.md msgid "And here is the whole certificate:" msgstr "" #. type: Fenced code block #: _docs/Release_Channels_and_Signing_Keys.md #, no-wrap msgid "" "\n" "-----BEGIN PUBLIC KEY-----\n" "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAltB15HwBTngiyJ/Wf3ld\n" "IyA+KohD9Tuk5rG/Xy/Q4iWTgmfPyuf79P5ZY0avuvQHD9uR9m+83yNIo9kkMFAo\n" "JPgFF7FW+rAICb3I5jG/qa/ULZBFq1/W0o2eFAr8EwCRexm3xsTfSklM8ffLSmPI\n" "DXNCZdc1r55PCUVfQnqmWlNWP4ezNsosGdJE/LumF7oLGeVu00r+CyU6uR4v2xJx\n" "8bnjwyMgJ+2IYqES8HBuI0zyNpFLk5vPlZgh7LKmwYBX4HDeNCgEbZSxdeHYm9eV\n" "5TVJmgkfW8ZaedU5qNQ4kexQQFissowIOTtXGLV2AKIR6AP0pjTlxX8lubjEQixv\n" "2QIDAQAB\n" "-----END PUBLIC KEY-----\n" "\n" "-----BEGIN CERTIFICATE-----\n" "MIIDXjCCAkagAwIBAgIETEnNADANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJV\n" "SzEQMA4GA1UECBMHVW5rbm93bjERMA8GA1UEBxMIV2V0aGVyYnkxEDAOBgNVBAoT\n" "B1Vua25vd24xEDAOBgNVBAsTB1Vua25vd24xGTAXBgNVBAMTEENpYXJhbiBHdWx0\n" "bmlla3MwHhcNMTAwNzIzMTcxMDI0WhcNMzcxMjA4MTcxMDI0WjBxMQswCQYDVQQG\n" "EwJVSzEQMA4GA1UECBMHVW5rbm93bjERMA8GA1UEBxMIV2V0aGVyYnkxEDAOBgNV\n" "BAoTB1Vua25vd24xEDAOBgNVBAsTB1Vua25vd24xGTAXBgNVBAMTEENpYXJhbiBH\n" "dWx0bmlla3MwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCW0HXkfAFO\n" "eCLIn9Z/eV0jID4qiEP1O6Tmsb9fL9DiJZOCZ8/K5/v0/lljRq+69AcP25H2b7zf\n" "I0ij2SQwUCgk+AUXsVb6sAgJvcjmMb+pr9QtkEWrX9bSjZ4UCvwTAJF7GbfGxN9K\n" "SUzx98tKY8gNc0Jl1zWvnk8JRV9CeqZaU1Y/h7M2yiwZ0kT8u6YXugsZ5W7TSv4L\n" "JTq5Hi/bEnHxuePDIyAn7YhioRLwcG4jTPI2kUuTm8+VmCHssqbBgFfgcN40KARt\n" "lLF14dib15XlNUmaCR9bxlp51Tmo1DiR7FBAWKyyjAg5O1cYtXYAohHoA/SmNOXF\n" "fyW5uMRCLG/ZAgMBAAEwDQYJKoZIhvcNAQEFBQADggEBAAjk72memAdnf/VnU9pz\n" "77I5DVriwX5NtpHV33p7YPwHGuUJxUFL59XadN8oEeg9NmjEoLGryEufp9lrTN8w\n" "u6aFF60qk+IzsEKXKsBVOkgByevge/V+vpo7PW1mOWUmDlDzuPRtsFMXYeYDQKK9\n" "3DQmCYOX/aVARKF+UkRUn5hptGDKXm4ha29qLbBYC0gMoq/m7GtG7trPpKpFA4gJ\n" "7ODFl4ZT1shfZ45/WiFW0b7dgRd1HmSksNzRQPMECwIYIajZOu2NAbo222yCNyIR\n" "/tcU2aMmBwOM39VlvVKf/GNyEqqiwiTvIrYD7M77W/HghcGR1LJP50KxerP1XU5v\n" "Be8=\n" "-----END CERTIFICATE-----\n" msgstr "" #. type: Plain text #: _docs/Release_Channels_and_Signing_Keys.md msgid "To confirm that the `1DBA2E89 admin@f-droid.org` PGP key is trusted by the index JAR signing key that is built into the F-Droid client app, run these commands:" msgstr "" #. type: Fenced code block (bash) #: _docs/Release_Channels_and_Signing_Keys.md #, no-wrap msgid "" "sudo apt-get install wget vim-common unzip openjdk-8-jdk-headless\n" "wget https://f-droid.org/assets/admin@f-droid.org.jar\n" "\n" "# verify against the key embedded in fdroidclient\n" "git clone https://gitlab.com/fdroid/fdroidclient\n" "grep -m1 -Eo '3082035e[0-9a-f]+' fdroidclient/app/src/main/res/values/default_repos.xml | xxd -r -p - > fdroidclient.der\n" "keytool -import -noprompt -trustcacerts -alias fdroidclient -storepass android -file fdroidclient.der -keystore fdroidclient.jks\n" "jarsigner -keystore fdroidclient.jks -storepass android -strict -verify admin@f-droid.org.jar\n" "\n" "# verify against the key that signed the index.jar\n" "wget https://f-droid.org/repo/index.jar\n" "unzip -p index.jar META-INF/CIARANG.RSA | openssl pkcs7 -print_certs -inform DER -out index.cer\n" "keytool -import -noprompt -trustcacerts -alias index -storepass android -file index.cer -keystore index.jks\n" "jarsigner -keystore index.jks -storepass android -strict -verify admin@f-droid.org.jar\n" "\n" "# verify against the key that is embedded in this page\n" "wget -O - https://f-droid.org/docs/Release_Channels_and_Signing_Keys/ | openssl x509 -inform pem -outform der -out docs.der\n" "keytool -import -noprompt -trustcacerts -alias docs -storepass android -file docs.der -keystore docs.jks\n" "jarsigner -keystore docs.jks -storepass android -strict -verify admin@f-droid.org.jar\n" "\n" "# when satisfied with the verification, import it\n" "unzip admin@f-droid.org.jar admin@f-droid.org.asc\n" "gpg --import admin@f-droid.org.asc\n" "gpg --keyserver keyserver.ubuntu.com --recv-key 37D2C98789D8311948394E3E41E7044E1DBA2E89\n" msgstr "" #. type: Title ## #: _docs/Release_Channels_and_Signing_Keys.md #, no-wrap msgid "fdroidserver" msgstr "" #. type: Bullet: '- ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "git repo: " msgstr "" #. type: Bullet: ' - ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "or previously \"Daniel Martí \\\" aka \"Daniel Martí \\\" with fingerprint:
`A9DA 13CD F7A1 4ACD D3DE E530 F4CA FFDB 4348 041C`" msgstr "" #. type: Bullet: '- ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "source package: " msgstr "" #. type: Bullet: ' - ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "package tags signed by \"Hans-Christoph Steiner \\\" aka \"Hans-Christoph Steiner \\\" aka \"Hans-Christoph Steiner \\\" with fingerprint:
`EE66 20C7 136B 0D2C 456C 0A4D E9E2 8DEA 00AA 5556` or previously
`5E61 C878 0F86 295C E17D 8677 9F0F E587 374B BE81`" msgstr "" #. type: Bullet: ' - ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "release command: `python3 setup.py sdist upload --sign`" msgstr "" #. type: Bullet: '- ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "official Debian package: " msgstr "" #. type: Bullet: ' - ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "package source: " msgstr "" #. type: Bullet: ' - ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "package tags signed by \"Hans-Christoph Steiner \\\" aka \"Hans-Christoph Steiner \\\" aka \"Hans-Christoph Steiner \\\" with fingerprint:
`EE66 20C7 136B 0D2C 456C 0A4D E9E2 8DEA 00AA 5556` or previously
`5E61 C878 0F86 295C E17D 8677 9F0F E587 374B BE81`" msgstr "" #. type: Bullet: '- ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "official Ubuntu PPA: " msgstr "" #. type: Bullet: ' - ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "fingerprint: `9AAC 2531 93B6 5D4D F1D0 A13E EC46 32C7 9C5E 0151`" msgstr "" #. type: Plain text #: _docs/Release_Channels_and_Signing_Keys.md #, no-wrap msgid "" " - how to setup:\n" " ```bash\n" " sudo add-apt-repository ppa:fdroid/fdroidserver\n" " sudo apt-get update\n" " sudo apt-get install fdroidserver\n" " ```\n" msgstr "" #. type: Title ## #: _docs/Release_Channels_and_Signing_Keys.md #, no-wrap msgid "Repomaker" msgstr "Repomaker" #. type: Bullet: '- ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "git repo: " msgstr "" #. type: Bullet: ' - ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "git tags signed by \"Nico Alt \\\" with fingerprint:
`558B E907 1CA6 CA44 DBF5 576B 95A0 DAF7 DBC7 B548`" msgstr "" #. type: Bullet: '- ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "source package: " msgstr "" #. type: Bullet: ' - ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "package tags signed by \"Nico Alt \\\" with fingerprint:
`558B E907 1CA6 CA44 DBF5 576B 95A0 DAF7 DBC7 B548`" msgstr "" #. type: Title ## #: _docs/Release_Channels_and_Signing_Keys.md #, no-wrap msgid "Privileged Extension" msgstr "" #. type: Bullet: '- ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "git repo: " msgstr "" #. type: Bullet: ' - ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "git tags signed by \"Hans-Christoph Steiner \\\" aka \"Hans-Christoph Steiner \\\" aka \"Hans-Christoph Steiner \\\" with fingerprint:
`EE66 20C7 136B 0D2C 456C 0A4D E9E2 8DEA 00AA 5556`" msgstr "" #. type: Title ## #: _docs/Release_Channels_and_Signing_Keys.md #, no-wrap msgid "F-Droid Jekyll Plugin" msgstr "" #. type: Bullet: '- ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "git repo: " msgstr "" #. type: Bullet: ' - ' #: _docs/Release_Channels_and_Signing_Keys.md msgid "git tags signed by \"Hans-Christoph Steiner \\\" aka \"Hans-Christoph Steiner \\\" aka \"Hans-Christoph Steiner \\\" with fingerprint:
`EE66 20C7 136B 0D2C 456C 0A4D E9E2 8DEA 00AA 5556` or \"Nico Alt \\\" with fingerprint:
`558B E907 1CA6 CA44 DBF5 576B 95A0 DAF7 DBC7 B548`" msgstr "" #. type: YAML Front Matter: title #: _docs/Repository_Style_Guide.md #, no-wrap msgid "Repository Style Guide" msgstr "" #. type: Plain text #: _docs/Repository_Style_Guide.md msgid "This page is a __work in progress__, and needs attention from experts on the subject, especially on fact checking." msgstr "" #. type: Plain text #: _docs/Repository_Style_Guide.md msgid "This guide gives some more detailed information on what to store in metadata fields. Most items are outdated and will be merge with the manual over time." msgstr "" #. type: Bullet: '* ' #: _docs/Repository_Style_Guide.md msgid "*E.g* " msgstr "" #. type: Plain text #: _docs/Repository_Style_Guide.md msgid "The F-Droid server does not directly publish an APK online, instead the F-Droid server needs a buildable source to build an APK from. This way the server guarantees that the resulting APK accurately represents the source code without any hidden anti-features." msgstr "" #. type: Plain text #: _docs/Repository_Style_Guide.md msgid "Because F-Droid builds every app from its source code (via the Android SDK with ant, gradle or maven, sometimes with help from the Android NDK, standard GNU/Linux programs and a little pre-processing in the BASH shell), probably if you can see a file called _AndroidManifest.xml_ or _build.gradle_ in your sources then there are many possibilities that F-Droid will be able to build it." msgstr "" #. type: Plain text #: _docs/Repository_Style_Guide.md msgid "Note that most projects call upon pre-built libraries. The source code for these is found elsewhere. For ant, these will be found in the `libs/` folder and external ones are mentioned in the _project.properties_ files; for gradle, these will be mentioned in _build.gradle_ and are usually pulled from ; for maven there will be `pom.xml` files which describe the dependencies. If native code pre-built libraries are used, these will often be found in `res/raw/` or `assets/`: there should be something said about these in the `README`. The example above has one jar file dependency with a text reference and doesn't use any external libraries, so no extra references are needed." msgstr "" #. type: Plain text #: _docs/Repository_Style_Guide.md msgid "- *E.g.* Overall: (overall of a source code under a *GPLv3+* license); - *E.g.* Source code header: (header of a file under a *GPLv3+* license); - *E.g.* Libraries: (see the `LICENSE` file with the *Apache License, Version 2.0* license for that library); - *E.g.* Artwork: (see the *CC BY-SA 3.0* license for artworks)" msgstr "" #. type: Plain text #: _docs/Repository_Style_Guide.md msgid "All apps in the F-Droid repository *must* be FOSS (Free and Open Source software). If the software doesn't clearly state a license that is listed as a Free Software License in the [GNU license list](http://www.gnu.org/licenses/license-list.html#SoftwareLicenses) then it probably isn't." msgstr "" #. type: Plain text #: _docs/Repository_Style_Guide.md msgid "If there aren't any `README` or `LICENSE` in the source code of the app it's very difficult for the F-Droid community verify that the entire source code, libraries and artwork each are released under a suitable Free and Open Source license. So, it's a good pratice to verify that the app has headers in every file of the source code, a text file in the library folder and a statement in the source code or on the official website of the app that clearly explain the license about all the stuff that can be find related the app." msgstr "" #. type: Plain text #: _docs/Repository_Style_Guide.md #, no-wrap msgid "" "*Note:* There is a little precisation to do about the use of the *GNU\n" "General Public License **v2***. The Android support library and most\n" "other Android libraries are licensed under the *Apache Licence*. Due to\n" "technical legal reasons, these can't be combined with the *GNU General\n" "Public License **v2***. In case of an app released under the\n" "*GPL**v2***, it is legally accepted only if the source code headers of\n" "the app say «GPLv2 **or later**», then we can choose the overall licence\n" "to be *GPL**v3*** (this because on the contrary the *GPL**v3*** is full\n" "legally compatible with the Android support library and the others\n" "libraries).\n" msgstr "" #. type: Title ### #: _docs/Repository_Style_Guide.md #, no-wrap msgid "Summaries" msgstr "" #. type: Plain text #: _docs/Repository_Style_Guide.md msgid "The summary should be the shortest possible thing that describes what the app does or enables the user to do, e.g. instead of \"E-mail client\" use \"Receive and send e-mails\"." msgstr "" #. type: Title ### #: _docs/Repository_Style_Guide.md #, no-wrap msgid "Descriptions" msgstr "" #. type: Plain text #: _docs/Repository_Style_Guide.md msgid "Descriptions should be written in an objective, neutral style, with at least the first paragraph devoted to describing what the application is and what features it has. This can be followed with concise help for specific features/problems, and links to external resources for more information. Additional information such as links to related/compatible/required (but not alternative) applications should also be included where appropriate." msgstr "" #. type: Plain text #: _docs/Repository_Style_Guide.md msgid "Some other notes:" msgstr "" #. type: Bullet: '- ' #: _docs/Repository_Style_Guide.md msgid "Phrases like \"a note-taking app for Android\" should never appear. Obviously it's for Android. Obviously it's an app." msgstr "" #. type: Bullet: '- ' #: _docs/Repository_Style_Guide.md msgid "Similary, don't say \"it's free software\" or \"it's open source\" because obviously it is." msgstr "" #. type: Bullet: '- ' #: _docs/Repository_Style_Guide.md msgid "There shouldn't be any compatiblity-related things in there (e.g. \"for Android 2.3+\") because this is handled automatically. Only include compatibility notes when the client app doesn't automatically detect them." msgstr "" #. type: Bullet: '- ' #: _docs/Repository_Style_Guide.md msgid "The summary will always be shown with the description, so avoid repeating it." msgstr "" #. type: Bullet: '- ' #: _docs/Repository_Style_Guide.md msgid "If there is anything different about the F-Droid build compared to a standard one, it should be described." msgstr "" #. type: Bullet: '- ' #: _docs/Repository_Style_Guide.md msgid "There should never be anything written from the developer's point of view, e.g. \"I wrote this cat gallery app because I like cats\"." msgstr "" #. type: Plain text #: _docs/Repository_Style_Guide.md msgid "Other information worth mentioning are:" msgstr "" #. type: Bullet: '- ' #: _docs/Repository_Style_Guide.md msgid "Does the app require root permissions?" msgstr "" #. type: Bullet: '- ' #: _docs/Repository_Style_Guide.md msgid "Can it interact with other apps?" msgstr "" #. type: Bullet: '- ' #: _docs/Repository_Style_Guide.md msgid "How easy is it to use?" msgstr "" #. type: Title ### #: _docs/Repository_Style_Guide.md #, no-wrap msgid "Donations" msgstr "Bağışlar" #. type: Plain text #: _docs/Repository_Style_Guide.md msgid "Where a project accepts donations, the ideal donation link would be to a specific page that the project maintains for that purpose. If one doesn't exist, it's acceptable to just link to their page that has a donation icon or similar somewhere on it, but this doesn't create a good user experience when, for example, someone selects 'Donate' in the F-Droid client and then has to search a page for the details. Try to encourage the developers to create a dedicate page if possible." msgstr "" #. type: Title ### #: _docs/Repository_Style_Guide.md #, no-wrap msgid "AntiFeatures" msgstr "Karşıt-Özellikler" #. type: Plain text #: _docs/Repository_Style_Guide.md msgid "In addition some software, even being Free and Open Source software, may do practices which can be considered undesirable and that we consider [_AntiFeatures_](https://monitor.f-droid.org/anti-features)\". Where possible the F-Droid community still include these applications in the repository but flagging and cataloging these antifeatures in order to warn users (on the F-Droid client and on the web repository browser) by any antifeatures present on the app. Even though software can be included in the F-Droid even with antifeatures, it is frequently the case that software with these antifeatures is actually not entirely FOSS (for example advertising and tracking user activity is often enabled via Non-Free binary libraries) compromising in this way the inclusion of the app in the F-Droid repository." msgstr "" #. type: Title ### #: _docs/Repository_Style_Guide.md #, no-wrap msgid "Updating" msgstr "" #. type: Plain text #: _docs/Repository_Style_Guide.md msgid "- *E.g.* & & " msgstr "" #. type: Plain text #: _docs/Repository_Style_Guide.md msgid "Getting the app in the repository isn't the end of the story: we have to keep the versions, descriptions and URLs up-to-date." msgstr "" #. type: Plain text #: _docs/Repository_Style_Guide.md msgid "The most important is to know when new versions are published. We have three automatic methods and one manual: from tags; checking the _AndroidManifest.xml_ at the most recent revision in the repository; and checking Google Play. If these won't do, we must look at the version of the package published by the upstream developers, either by loading the Google Play web page or downloading an APK and checking its version. Repository tags are the natural way of labelling new versions (look for them under \"releases\" on an example in [github.com](https://github.com/dschuermann/document-viewer/releases) or under the \"tags\" directory in the case of SVN repos). If you can't find tags it would be a helpful to make an issue about it on the issue tracker. In the example, we point to a changelog page as a backup check; other possiblities are a Google Code download page or a Google Play link." msgstr "" #. type: Title ### #: _docs/Reproducible_Builds.md #, no-wrap msgid "Reproducible Builds" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "F-Droid supports [reproducible builds](https://reproducible-builds.org) of apps, so that anyone can run the build process again and reproduce the same APK as the original release. This means that F-Droid can verify that an app is 100% free software while still using the original developer's APK signatures. Ideally, all of the built APKs will have the exact same hash, but that is a more difficult standard with less payoff. Right now, F-Droid verifies reproducible builds using the APK signature." msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "This concept is occasionally called \"deterministic builds\". That is a much stricter standard: that means that the whole process runs with the same ordering each time. The most important thing is that anyone can run the process and end up with the exact same result." msgstr "" #. type: Title ### #: _docs/Reproducible_Builds.md #, no-wrap msgid "How it is implemented as of now" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "Publishing signed binaries from elsewhere (e.g. the upstream developer) is now possible after verifying that they match ones built using a recipe. Publishing only takes place if there is a proper match. (Which seems very unlikely to be the case unless the exact same tool-chain is used, so I would imagine that unless the person building and signing the incoming binaries uses fdroidserver to build them, probably the exact same buildserver ID, they will not match. But at least we have the functionality to support that.)" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "This procedures are implemented as part of `fdroid publish`. At the publish step, the reproducibility check will follow this logic:" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "![Flow-chart for reproducibility check]({% asset docs/reproducible-builds/publish.png %})" msgstr "" #. type: Title #### #: _docs/Reproducible_Builds.md #, no-wrap msgid "Publish both (upstream-)developer signed and F-Droid signed APKs" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "Use this approach for shipping a version of an app, with both (upstream-)developer signed and F-Droid signed APKs. This enables us to ship updates for users who installed apps from other sources than F-Droid (eg. Play Store) which are therefore signed by the app-developers, while also shipping updates for apps which were built and signed by F-Droid." msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "This requires to put (upstream-)developer signatures into fdroiddata. We provide a command for easily extracting signatures from APKs:" msgstr "" #. type: Fenced code block (console) #: _docs/Reproducible_Builds.md #, no-wrap msgid "" "$ cd /path/to/fdroiddata\n" "$ fdroid signatures F-Droid.apk\n" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "You may also supply HTTPS-URLs directly to `fdroid signatures` instead of local files. The signature files are extracted to the according metadata directory ready to be used with `fdroid publish`. A signature consists of 2-6 files: a v1 signature (manifest, signature file, and signature block file) and/or a v2/v3 signature (APK Signing Block and offset); if the APK was v1-signed with e.g. `signflinger` instead of `apksigner` there will also be a `differences.json`. The result of extracting one will resemble these file listings:" msgstr "" #. type: Fenced code block (console) #: _docs/Reproducible_Builds.md #, no-wrap msgid "" "$ ls metadata/org.fdroid.fdroid/signatures/1000012/ # v1 signature only\n" "CIARANG.RSA CIARANG.SF MANIFEST.MF\n" "$ ls metadata/your.app/signatures/42/ # v1 + v2/v3 signature\n" "APKSigningBlock APKSigningBlockOffset MANIFEST.MF YOURKEY.RSA YOURKEY.SF\n" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "If you don't want to install `fdroidserver` or have an older version that doesn't support extracting v2/v3 signatures yet, you can also use [`apksigcopier`](https://github.com/obfusk/apksigcopier) (available in e.g. Debian unstable) instead of `fdroid signatures`:" msgstr "" #. type: Fenced code block (console) #: _docs/Reproducible_Builds.md #, no-wrap msgid "" "$ cd /path/to/fdroiddata\n" "$ APPID=your.app VERSIONCODE=42\n" "$ mkdir metadata/$APPID/signatures/$VERSIONCODE\n" "$ apksigcopier extract --v1-only=auto Your.apk metadata/$APPID/signatures/$VERSIONCODE\n" msgstr "" #. type: Title #### #: _docs/Reproducible_Builds.md #, no-wrap msgid "Exclusively publishing (upstream-)developer signed APKs" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "For using this older approach, everything in the metadata should be the same as normal, with the addition of the `Binaries:` directive to specify where to get the binaries from. In this case F-Droid will never attempt to ship APKs signed by F-Droid. Should `fdroid publish` manage to verify that a downloaded APK can be built reproducibly, the downloaded APK will be published. Otherwise F-Droid will skip publishing this version of the app." msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "Here is an example for a _Binaries_ directive:" msgstr "" #. type: Fenced code block (yaml) #: _docs/Reproducible_Builds.md #, no-wrap msgid "Binaries: https://foo.com/path/to/myapp-%v.apk\n" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "Also see: [Build Metadata Reference - Binaries](../Build_Metadata_Reference/#Binaries)" msgstr "" #. type: Title ### #: _docs/Reproducible_Builds.md #, no-wrap msgid "Verification builds" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "Many people or organizations will only be interested in reproducing builds to make sure that the f-droid.org builds match the original source and nothing has been inserted in. In that case, the resulting APKs are not published for installation. The [Verification Server](../Verification_Server) automates this process." msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "An awful lot of builds already verify with no extra effort since Java code is often compiled into the same bytecode by a wide range of Java versions. The Android SDK's _build-tools_ will create differences in the resulting XML, PNG, etc. files, but this is usually not a problem since the _build.gradle_ includes the exact version of _build-tools_ to use." msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "Anything built with the NDK will be much more sensitive. For example, even for builds that use the exact same version of the NDK (e.g. _r13b_) but on different platforms (.e.g OSX version Ubuntu), the resulting binaries will have differences." msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "Additionally, we'll have to look out for anything that includes timestamping information, is sensitive to sort order, etc." msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "Google is also working towards reproducible builds of Android apps, so using recent versions of the Android SDK helps. One specific case is starting with Gradle Android Plugin v2.2.2, timestamps in the APK file's ZIP header are automatically zeroed out." msgstr "" #. type: Title ### #: _docs/Reproducible_Builds.md #, no-wrap msgid "Reproducible Signatures" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "F-Droid verifies reproducible builds using the APK signature, which requires [copying](https://github.com/obfusk/apksigcopier) the signature from a signed APK to an unsigned one and then checking if the latter verifies. The old v1 (JAR) signatures only cover the *contents* of the APK (ZIP metadata and ordering are irrelevant), but v2/v3 signatures cover *all other bytes in the APK*. Thus, the APKs must be completely identical *before* and *after* signing (apart from the signature) in order to verify correctly." msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "Copying the signature uses the same algorithm that `apksigner` uses when signing an APK. It is therefore important that (upstream) developers do the same when signing APKs, ideally by using `apksigner`." msgstr "" #. type: Title ### #: _docs/Reproducible_Builds.md #, no-wrap msgid "_platform_ Revisions" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "The Android SDK tools [were changed](https://issuetracker.google.com/issues/37132313) in 2014 to [stick two](https://android.googlesource.com/platform/frameworks/base/+/ad2d07d%5E!/) [data elements](https://android.googlesource.com/platform/frameworks/base/+/5283fab%5E!/) in _AndroidManifest.xml_ as part of the build process: `platformBuildVersionName` and `platformBuildVersionCode`. `platformBuildVersionName` includes the \"revision\" of the _platforms_ package built against (e.g. _android-23_), however different \"revisions\" of the same _platforms_ package cannot be installed in parallel. Plus the SDK tools do not support specifying the required revision as part of the build process. This often results in an otherwise reproducible build where the only difference is the `platformBuildVersionName` attribute." msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "The \"_platform_\" is part of the Android SDK that represents the standard library that is installed on the phone. They have two parts to their version: \"version code\", which is an integer that represents the SDK release, and the \"revision\", which represents bugfix versions to each platform. These versions can be seen in the included _build.prop_ file. Each revision has a different number in _ro.build.version.incremental_. Gradle has no way to specify the revision in _compileSdkVersion_ or _targetSdkVersion_. Only one \"_platform-23_\" can be installed at a time, unlike _build-tools_, where every release can be installed in parallel." msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "Here are two examples where I think all the differences came from just different revisions of the platform:" msgstr "" #. type: Bullet: '* ' #: _docs/Reproducible_Builds.md msgid "https://verification.f-droid.org/de.nico.asura_12.apk.diffoscope.html" msgstr "" #. type: Bullet: '* ' #: _docs/Reproducible_Builds.md msgid "https://verification.f-droid.org/de.nico.ha_manager_25.apk.diffoscope.html" msgstr "" #. type: Title ### #: _docs/Reproducible_Builds.md #, no-wrap msgid "PNG Crush/Crunch" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "A standard part of the Android build process is to run some kind of PNG optimization tool, like `aapt singleCrunch`, `pngcrush`, `zopflipng` or `optipng`. These do not provide deterministic output, it is still an open question as to why. Since PNGs are normally committed to the source repo, a workaround to this problem is to run the tool of your choice on the PNG files, then commit those changes to the source repo (e.g. `git`). Then, disable the default PNG optimization process by adding this to _build.gradle_:" msgstr "" #. type: Fenced code block #: _docs/Reproducible_Builds.md #, no-wrap msgid "" "android {\n" " aaptOptions {\n" " cruncherEnabled = false\n" " }\n" "}\n" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "Note that tools such as `svgo` can do similar optimization to SVG files." msgstr "" #. type: Title ### #: _docs/Reproducible_Builds.md #, no-wrap msgid "R8 Optimizer" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "It appears that some R8 optimizations done in nondeterministic way, producing different bytecode on different build runs." msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "For instance, R8 tries to optimize ServiceLoader usage making a static list of all services in the code. The order of this list may be different (or even incomplete) on each build run. The only way to avoid this behavior is disabling such optimizations declaring optimized classes in _proguard-rules.pro_:" msgstr "" #. type: Fenced code block #: _docs/Reproducible_Builds.md #, no-wrap msgid "" "-keep class kotlinx.coroutines.CoroutineExceptionHandler\n" "-keep class kotlinx.coroutines.internal.MainDispatcherFactory\n" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "Be careful with R8. Always test your builds multiple times and disable optimizations which produce a nondeterministic output." msgstr "" #. type: Title ### #: _docs/Reproducible_Builds.md #, no-wrap msgid "Resource Shrinker" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "It's possible to reduce the APK file size removing unused resources from the package. This is useful when a project depends on some bloat libraries such as AppCompat, especially when R8/ProGuard code shrinking is used." msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "However, it might be possible that resource shrinker will increase the APK size on different platforms, especially if there is not too many resources to shrink, in which case the original APK will be used instead of the shrinked one (nondeterministic behavior of Gradle plugin). Avoid using resource shrinker unless it decreases the APK file size significantly." msgstr "" #. type: Title ### #: _docs/Reproducible_Builds.md #, no-wrap msgid "coreLibraryDesugaring" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "In some cases builds are not reproducible due to a [bug in `coreLibraryDesugaring`](https://issuetracker.google.com/issues/195968520) (requires a google account to view); this [currently affects NewPipe](https://github.com/TeamNewPipe/NewPipe/issues/6486)." msgstr "" #. type: Title ### #: _docs/Reproducible_Builds.md #, no-wrap msgid "Native library stripping" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "It seems that the stripping of native libraries, e.g. _libfoo.so_, can cause intermittent reproducibility issues. It is important to use the exact NDK version when rebuilding, e.g. r21e. Disabling stripping can sometimes help. Gradle seems to strip shared libraries by default, even the app is receiving the shared libraries via an AAR library. Here is how to disable it in Gradle:" msgstr "" #. type: Fenced code block (gradle) #: _docs/Reproducible_Builds.md #, no-wrap msgid "" "android {\n" "\tpackagingOptions {\n" "\t\tdoNotStrip '**/*.so'\n" "\t}\n" "}\n" "\n" msgstr "" #. type: Title ### #: _docs/Reproducible_Builds.md #, no-wrap msgid "NDK _build-id_" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "On different build machines different NDK paths and different paths to the project (and thus to its _jni_ directory) are used. This leads to different paths to the source files in debug symbols, causing linker to generate different _build-id_, which is preserved after stripping." msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "One possible solution is adding `LOCAL_LDFLAGS += -Wl,--build-id=none` to _Android.mk_ files which will disable _build-id_ generation completely." msgstr "" #. type: Title ### #: _docs/Reproducible_Builds.md #, no-wrap msgid "Build Server IDs" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "To describe the build environment used by F-Droid builds, APKs have two files inserted into them:" msgstr "" #. type: Bullet: '* ' #: _docs/Reproducible_Builds.md msgid "_META-INF/fdroidserverid_ - git commit hash of [_fdroidserver_](https://gitlab.com/fdroid/fdroidserver) used for the build" msgstr "" #. type: Bullet: '* ' #: _docs/Reproducible_Builds.md msgid "_META-INF/buildserverid_ - git commit hash of [_makebuildserver_](https://gitlab.com/fdroid/fdroidserver/blob/master/makebuildserver) used for the build" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "To ensure reproducibility, use the exact same revision of the `./makebuildserver` and `fdroid build`. You can find the commit hash of _fdroidserver_ by going to your git clone and running `git log -n1`. The build server instance is stamped with the git commit hash on creation, and that ID is included in builds." msgstr "" #. type: Title ### #: _docs/Reproducible_Builds.md #, no-wrap msgid "ZIP entry info" msgstr "" #. type: Plain text #: _docs/Reproducible_Builds.md msgid "The ZIP format was originally designed around the MSDOS FAT filesystem. UNIX file permissions were added as an extension. APKs only need the most basic ZIP format, without any of the extensions. These extensions are often stripped out in the final release signing process. But the APK build process can add them. For example:" msgstr "" #. type: Fenced code block (diff) #: _docs/Reproducible_Builds.md #, no-wrap msgid "" "--- a2dp.Vol_137.apk\n" "+++ sigcp_a2dp.Vol_137.apk\n" "@@ -1,50 +1,50 @@\n" "--rw---- 2.0 fat 8976 bX defN 79-Nov-30 00:00 AndroidManifest.xml\n" "--rw---- 2.0 fat 1958312 bX defN 79-Nov-30 00:00 classes.dex\n" "--rw---- 1.0 fat 78984 bx stor 79-Nov-30 00:00 resources.arsc\n" "+-rw-rw-rw- 2.3 unx 8976 b- defN 80-000-00 00:00 AndroidManifest.xml\n" "+-rw---- 2.4 fat 1958312 b- defN 80-000-00 00:00 classes.dex\n" "+-rw-rw-rw- 2.3 unx 78984 b- stor 80-000-00 00:00 resources.arsc\n" msgstr "" #. type: Title ### #: _docs/Reproducible_Builds.md #, no-wrap msgid "Migration to reproducible builds" msgstr "" #. type: Title #### #: _docs/Reproducible_Builds.md #, no-wrap msgid "TODO" msgstr "" #. type: Bullet: '* ' #: _docs/Reproducible_Builds.md msgid "jar sort order for APKs" msgstr "" #. type: Bullet: '* ' #: _docs/Reproducible_Builds.md msgid "`aapt` versions produce different results (XML and res/ subfolder names)" msgstr "" #. type: Title #### #: _docs/Reproducible_Builds.md #, no-wrap msgid "Sources" msgstr "" #. type: Bullet: '* ' #: _docs/Reproducible_Builds.md msgid "" msgstr "" #. type: Bullet: '* ' #: _docs/Reproducible_Builds.md msgid "[Verification Server](../Verification_Server)" msgstr "" #. type: Bullet: '* ' #: _docs/Reproducible_Builds.md msgid "" msgstr "" #. type: Bullet: '* ' #: _docs/Reproducible_Builds.md msgid "" msgstr "" #. type: Bullet: '* ' #: _docs/Reproducible_Builds.md msgid "" msgstr "" #. type: Bullet: '* ' #: _docs/Reproducible_Builds.md msgid "" msgstr "" #. type: Bullet: '* ' #: _docs/Reproducible_Builds.md msgid "[Google Issue #70292819 platform-27\\_r01.zip was overwritten with a new update](https://issuetracker.google.com/issues/70292819) (_Google login and JavaScript required_)" msgstr "" #. type: Bullet: '* ' #: _docs/Reproducible_Builds.md msgid "[Google Issue #37132313 platformBuildVersionName makes builds difficult to reproduce, creates unneeded diffs](https://issuetracker.google.com/issues/37132313) (_Google login and JavaScript required_)" msgstr "" #. type: Bullet: '* ' #: _docs/Reproducible_Builds.md msgid "[Google Issue #110237303 resources.arsc built with non-determism, prevents reproducible APK builds](https://issuetracker.google.com/issues/110237303) (_Google login and JavaScript required_)" msgstr "" #. type: Bullet: '* ' #: _docs/Reproducible_Builds.md msgid "[Unreproducible/non-deterministic code generation by navigation.safeargs.kotlin](https://issuetracker.google.com/issues/189498001) (_Google login and JavaScript required_)" msgstr "" #. type: YAML Front Matter: title #: _docs/Running_a_Mirror.md #, no-wrap msgid "Running a Mirror" msgstr "" #. type: Plain text #: _docs/Running_a_Mirror.md msgid "F-Droid's collection of apps and files are run on servers run by the core F-Droid contributors. Originally, this main repository was hosted only on [f-droid.org](https://f-droid.org/), but as F-Droid grew [f-droid.org](https://f-droid.org/) alone was no longer able to handle the entire load. F-Droid now supports \"mirror\" servers that replicate a full copy of the repositories. Hosting a mirror involves running an HTTPS webserver that has a full copy of the repository synchronized using `rsync`." msgstr "" #. type: Title #### #: _docs/Running_a_Mirror.md #, no-wrap msgid "Requirements" msgstr "" #. type: Plain text #: _docs/Running_a_Mirror.md msgid "There are two official F-Droid repository sections, the \"repo\" and the \"archive\". It's most important to mirror the \"repo\" since it is used much more than the \"archive\"." msgstr "" #. type: Plain text #: _docs/Running_a_Mirror.md msgid "The primary resources required by a mirror are disk space and upload bandwidth. Bandwidth requirements are reduced with each new mirror, but disk requirements grow at a [reasonable rate](https://ftp.fau.de/cgi-bin/show-ftp-stats.cgi?statstype=2&what=mirrorsize&mirrorname=fdroid×pan=-1&graphsize=large&submit=Go%21). At time of writing (Mar 2019), the primary repository requires just over 60GB of disk space in 24K files, and the archive requires 300GB of disk space in 52K files. The amount of disk space required grows with every new app release." msgstr "" #. type: Plain text #: _docs/Running_a_Mirror.md msgid "There are many mirror servers which offer an _rsync_ connection, make sure to select the mirror closest to your mirror server:" msgstr "" #. type: Plain text #: _docs/Running_a_Mirror.md msgid "{% include running-a-mirror-rsync.html %}" msgstr "{% include running-a-mirror-rsync.html %}" #. type: Plain text #: _docs/Running_a_Mirror.md msgid "You can find current information on disk space requirements by running the following in your terminal:" msgstr "" #. type: Fenced code block (console) #: _docs/Running_a_Mirror.md #, no-wrap msgid "$ rsync --dry-run --recursive --stats --human-readable ftp.fau.de::fdroid .\n" msgstr "$ rsync --dry-run --recursive --stats --human-readable ftp.fau.de::fdroid .\n" #. type: Title #### #: _docs/Running_a_Mirror.md #, no-wrap msgid "Setup" msgstr "Kur" #. type: Plain text #: _docs/Running_a_Mirror.md msgid "This guide assumes the use of Nginx with a deb-based distribution, and mirroring the primary repository plus the archive. Please adjust accordingly if you're using alternatives or don't intend to mirror the archive. Also substitute the examples paths and domains for your own." msgstr "" #. type: Plain text #: _docs/Running_a_Mirror.md msgid "For assistance with this process, [feel free to reach out to us]({{ site.baseurl }}/about/)." msgstr "" #. type: Bullet: '1. ' #: _docs/Running_a_Mirror.md msgid "Create appropriate directories" msgstr "" #. type: Fenced code block (console) #: _docs/Running_a_Mirror.md #, no-wrap msgid "" "$ sudo mkdir -p /var/www/fdroid/fdroid/repo\n" "$ sudo mkdir -p /var/www/fdroid/fdroid/archive\n" "$ sudo chown -R www-data.www-data /var/www/fdroid\n" msgstr "" #. type: Bullet: '2. ' #: _docs/Running_a_Mirror.md msgid "Synchronize the repositories. These commands are best run in a terminal multiplexer (`screen`, `tmux` etc) as they will take some time to complete. With `--info=progress2` you can see the progress." msgstr "" #. type: Fenced code block (console) #: _docs/Running_a_Mirror.md #, no-wrap msgid "" "$ sudo -u www-data -E /usr/bin/rsync -aHS --delete --delete-delay --info=progress2 ftp.fau.de::fdroid/repo/ /var/www/fdroid/fdroid/repo/\n" "$ sudo -u www-data -E /usr/bin/rsync -aHS --delete --delete-delay --info=progress2 ftp.fau.de::fdroid/archive/ /var/www/fdroid/fdroid/archive/\n" msgstr "" #. type: Bullet: '3. ' #: _docs/Running_a_Mirror.md msgid "Establish a cronjob to keep the repositories up to date" msgstr "" #. type: Plain text #: _docs/Running_a_Mirror.md msgid "Create a cronjob file in `/etc/cron.d`" msgstr "" #. type: Fenced code block (console) #: _docs/Running_a_Mirror.md #, no-wrap msgid "$ vi /etc/cron.d/fdroid\n" msgstr "" #. type: Plain text #: _docs/Running_a_Mirror.md msgid "Fill the file with entries to update the repositories. These commands will run at minute 35 past every 6th hour, you can change it to fit your needs." msgstr "" #. type: Fenced code block #: _docs/Running_a_Mirror.md #, no-wrap msgid "" "35 */6 * * * www-data /usr/bin/rsync -aHS --delete --delete-delay ftp.fau.de::fdroid/repo/ /var/www/fdroid/fdroid/repo/\n" "35 */6 * * * www-data /usr/bin/rsync -aHS --delete --delete-delay ftp.fau.de::fdroid/archive/ /var/www/fdroid/fdroid/archive/\n" msgstr "" #. type: Bullet: '4. ' #: _docs/Running_a_Mirror.md msgid "Configure your webserver" msgstr "" #. type: Plain text #: _docs/Running_a_Mirror.md msgid "This is an example server block for nginx. If used, it should be copied to _/etc/nginx/sites-available/_ and symlinked to _/etc/nginx/sites-enabled_. Note that it is important that your URI be `/fdroid/repo` so that the app can automatically add your mirror." msgstr "" #. type: Fenced code block #: _docs/Running_a_Mirror.md #, no-wrap msgid "" "server {\n" " listen [::]:80 ipv6only=off;\n" "\n" " server_name fdroidmirror.example;\n" "\n" " rewrite ^ https://fdroidmirror.example$request_uri permanent;\n" "}\n" "\n" "server {\n" " listen [::]:443 ssl http2 ipv6only=off;\n" "\n" " server_name fdroidmirror.example;\n" "\n" " root /var/www/fdroid/;\n" "\n" " # TODO: https://gitlab.com/snippets/1834032\n" " location /health {\n" " proxy_pass http://127.0.0.1:8000/;\n" " }\n" "\n" " ssl_certificate /etc/letsencrypt/live/fdroidmirror.example/fullchain.pem;\n" " ssl_certificate_key /etc/letsencrypt/live/fdroidmirror.example/privkey.pem;\n" "\n" " # Insert here a TLS config from Mozilla SSL config generator https://mozilla.github.io/server-side-tls/ssl-config-generator/\n" "}\n" msgstr "" #. type: Bullet: '5. ' #: _docs/Running_a_Mirror.md msgid "Submit your mirror for inclusion" msgstr "" #. type: Bullet: '* ' #: _docs/Running_a_Mirror.md msgid "Fork the [mirror monitor repo](https://gitlab.com/fdroid/mirror-monitor), add your mirror to the list in the README, and open a merge request." msgstr "" #. type: Bullet: '* ' #: _docs/Running_a_Mirror.md msgid "Open an issue on the [admin repo](https://gitlab.com/fdroid/admin), including any pertinent information, requesting the inclusion of your mirror." msgstr "" #. type: Bullet: '* ' #: _docs/Running_a_Mirror.md msgid "Once the core contributor team deems your mirror trustworthy and reliable, it will be accepted into the official list." msgstr "" #. type: Plain text #: _docs/Running_a_Mirror.md msgid "Also, it would be nice to include a privacy policy so users can understand what happens with their metadata when using the mirror. Purdue PLUG https://plug-mirror.rcac.purdue.edu/info.html and FAU https://ftp.fau.de/datenschutz are two examples." msgstr "" #. type: Title #### #: _docs/Running_a_Mirror.md #, no-wrap msgid "Other considerations" msgstr "" #. type: Bullet: '* ' #: _docs/Running_a_Mirror.md msgid "Set up a privacy policy that describes what happens to the metadata (for example [FAU](https://ftp.fau.de/datenschutz/), [PLUG](https://plug-mirror.rcac.purdue.edu/info.html), [Lysator](https://ftp.lysator.liu.se/datahanteringspolicy.txt))." msgstr "" #. type: Bullet: '* ' #: _docs/Running_a_Mirror.md msgid "Forward emails from cronjob failures so you know if the synchronization fails" msgstr "" #. type: Bullet: '* ' #: _docs/Running_a_Mirror.md msgid "Set up monitoring on your mirror so you know if it goes down (ideally keyword on _/srv/mymirror.org/htdocs/fdroid/repo/index-v1.jar_)" msgstr "" #. type: Bullet: '* ' #: _docs/Running_a_Mirror.md msgid "Harden your SSH server config (disable password authentication, install _fail2ban_)" msgstr "" #. type: Bullet: '* ' #: _docs/Running_a_Mirror.md msgid "Enable unattended security upgrades (in Debian, just `apt-get install unattended-upgrades`)" msgstr "" #. type: Title ## #: _docs/Running_a_Mirror.md #, no-wrap msgid "Running a Primary Mirror (receiving syncs via push)" msgstr "" #. type: Plain text #: _docs/Running_a_Mirror.md msgid "The preferred setup is for the F-Droid updates to be pushed to the primary mirror via _rsync_ over _ssh_ with SSH Key authentication. This is the same as [Debian](https://www.debian.org/mirror/push_server#sshtrigger), the key difference is that there currently is no script used for the `command=\"\"`, but instead, there is a hard-coded _rsync_ command. This really nicely restricts the security interaction to only want needs to happen (Least Authority!)." msgstr "" #. type: Fenced code block #: _docs/Running_a_Mirror.md #, no-wrap msgid "command=\"rsync --server -logDtpre.iLsfx --log-format=X --delete --delay-updates . /srv/fdroid-mirror.at.or.at/htdocs/fdroid/\"\n" msgstr "" #. type: Plain text #: _docs/Running_a_Mirror.md msgid "The only piece of that command that is customizable is the final path. It can be any path but it must point to the `/fdroid/` directory and must have the trailing slash. If any of the _rsync_ options are changed, it will break the sync setup." msgstr "" #. type: Plain text #: _docs/Running_a_Mirror.md msgid "As an extra precaution, there should be a user account (e.g. `fdroid`) dedicated to receiving the _rsync_/_ssh_ connection. It should have as little access as possible. It should definitely not have write access to the _authorized_keys_ file, since that would allow an attacker who gains write access to add a separate key configuration line which circumvents all the restrictions listed there. This can be done simply by doing:" msgstr "" #. type: Fenced code block (console) #: _docs/Running_a_Mirror.md #, no-wrap msgid "" "$ sudo chown root.root /home/fdroid/.ssh /home/fdroid/.ssh/authorized_keys\n" "$ sudo chmod 0755 /home/fdroid/.ssh\n" "$ sudo chmod 0644 /home/fdroid/.ssh/authorized_keys\n" msgstr "" #. type: YAML Front Matter: title #: _docs/Running_on_old_Android_versions.md #, no-wrap msgid "Running on old Android versions" msgstr "Eski Android sürümlerinde çalıştırma" #. type: Plain text #: _docs/Running_on_old_Android_versions.md msgid "F-Droid repos generally maintain support for old F-Droid releases for a long time. That means that old F-Droid releases will continue to work for years. That provides a path to run F-Droid on very old Android releases. Here are the download links for installing the newest release that runs on a given Android release:" msgstr "F-Droid depoları genellikle eski F-Droid sürümleri için desteği uzun süre korur. Bu, eski F-Droid sürümlerinin yıllarca çalışmaya devam edeceği anlamına gelir. F-Droid'i çok eski Android sürümlerinde çalıştırmak için bir yol sağlar. Belirli bir Android sürümünde çalışan en yeni sürümü yüklemek için indirme bağlantıları burada verilmiştir:" #. type: Bullet: '* ' #: _docs/Running_on_old_Android_versions.md msgid "Android 5.1 (API 22) and up: [F-Droid (latest stable)]({{ site.fdroid_apk_download_url }})" msgstr "Android 5.1 (API 22) ve üzeri: [F-Droid (en son kararlı)]({{ site.fdroid_apk_download_url }})" #. type: Bullet: '* ' #: _docs/Running_on_old_Android_versions.md msgid "Android 4.0 (API 14) to Android 5.0 (API 21): [F-Droid 1.12.1](https://f-droid.org/archive/org.fdroid.fdroid_1012051.apk)" msgstr "Android 4.0 (API 14) - Android 5.0 (API 21): [F-Droid 1.12.1](https://f-droid.org/archive/org.fdroid.fdroid_1012051.apk)" #. type: Bullet: '* ' #: _docs/Running_on_old_Android_versions.md msgid "Android 2.3.3 (API 10) to Android 3.2 (API 13): [F-Droid 1.2.2](https://f-droid.org/archive/org.fdroid.fdroid_1002052.apk)" msgstr "Android 2.3.3 (API 10) - Android 3.2 (API 13): [F-Droid 1.2.2](https://f-droid.org/archive/org.fdroid.fdroid_1002052.apk)" #. type: Bullet: '* ' #: _docs/Running_on_old_Android_versions.md msgid "Android 2.2 (API 8) to Android 2.3.2 (API 9): [F-Droid 0.100.1](https://f-droid.org/archive/org.fdroid.fdroid_100150.apk)" msgstr "Android 2.2 (API 8) - Android 2.3.2 (API 9): [F-Droid 0.100.1](https://f-droid.org/archive/org.fdroid.fdroid_100150.apk)" #. type: Plain text #: _docs/Running_on_old_Android_versions.md msgid "Please note that many apps on F-Droid may no longer support such old Android versions. It is recommended to enable the \"F-Droid Archive\" repository in the F-Droid app. Enabling the archive lets F-Droid show you older versions of apps, which may include versions that still work on your device." msgstr "F-Droid'deki birçok uygulamanın artık bu tür eski Android sürümlerini desteklemeyebileceğini lütfen unutmayın. F-Droid uygulamasında \"F-Droid Arşivi\" deposunun etkinleştirilmesi önerilir. Arşivi etkinleştirmek, F-Droid'in size uygulamaların eski sürümlerini göstermesini sağlar; bunlar arasında cihazınızda hala çalışan sürümler de olabilir." #. type: YAML Front Matter: title #: _docs/Security_Model.md #, no-wrap msgid "Security Model" msgstr "Güvenlik Modeli" #. type: Plain text #: _docs/Security_Model.md #, no-wrap msgid "" "The security architecture is based on integrating models proven by\n" "[Debian](https://wiki.debian.org/SecureApt) and [The Update\n" "Framework](https://github.com/theupdateframework/specification/blob/master/tuf-spec.md)\n" " into what the Android OS already provides. The way F-Droid operates is greatly inspired by de facto security model of how reputable GNU/Linux distros like Debian, Fedora, Ubuntu, etc. operate. There is a big emphasis on operating in the public and making everything publicly available. We include source tarballs and build logs when we publish binaries. These are archived as long as possible, for retroactive review. And all of this is mirrored in many places across the internet by many different parties.\n" msgstr "" #. type: Bullet: '- ' #: _docs/Security_Model.md msgid "a repo is defined by having unique signing key, first and foremost" msgstr "bir depo, her şeyden önce benzersiz imzalama anahtarına sahip olarak tanımlanır" #. type: Bullet: '- ' #: _docs/Security_Model.md msgid "[HTTPS connections by default](https://gitlab.com/fdroid/fdroidclient/blob/v0.100.1/app/src/main/res/values/default_repo.xml#L11)" msgstr "[Varsayılan olarak HTTPS bağlantıları](https://gitlab.com/fdroid/fdroidclient/blob/v0.100.1/app/src/main/res/values/default_repo.xml#L11)" #. type: Bullet: '- ' #: _docs/Security_Model.md msgid "server only works over HTTPS, [HTTP](http://f-droid.org) is a redirect" msgstr "sunucusu yalnızca HTTPS üzerinden çalışır, [HTTP](http://f-droid.org) bir yönlendirmedir" #. type: Bullet: '- ' #: _docs/Security_Model.md msgid "[Android enforces](https://developer.android.com/studio/publish/app-signing.html#considerations) that all apps have a valid signature over the entire contents of the APK file" msgstr "[Android tüm uygulamaların APK dosyasının tüm içeriği üzerinde geçerli bir imzaya sahip olmasını zorunlu kılar](https://developer.android.com/studio/publish/app-signing.html#considerations)" #. type: Bullet: '- ' #: _docs/Security_Model.md msgid "[Android verifies updates](https://developer.android.com/studio/publish/app-signing.html#considerations) based on the signature of the installed app" msgstr "[Android yüklü uygulamanın imzasına göre güncellemeleri doğrular](https://developer.android.com/studio/publish/app-signing.html#considerations)" #. type: Bullet: '- ' #: _docs/Security_Model.md msgid "[file integrity](https://gitlab.com/fdroid/fdroidclient/blob/v0.101-alpha2/app/src/main/java/org/fdroid/fdroid/installer/ApkCache.java#L57) protected by [signed metadata](https://gitlab.com/fdroid/fdroidclient/blob/v0.101-alpha2/app/src/main/java/org/fdroid/fdroid/RepoUpdater.java#L212)" msgstr "[dosya bütünlüğü](https://gitlab.com/fdroid/fdroidclient/blob/v0.101-alpha2/app/src/main/java/org/fdroid/fdroid/installer/ApkCache.java#L57) [imzalı üst veri](https://gitlab.com/fdroid/fdroidclient/blob/v0.101-alpha2/app/src/main/java/org/fdroid/fdroid/RepoUpdater.java#L212) tarafından korunmaktadır" #. type: Bullet: '- ' #: _docs/Security_Model.md msgid "As of [_index-v2_](https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1092), files from the repo are verified based on SHA-256, including icons, screenshots, etc." msgstr "" #. type: Bullet: '- ' #: _docs/Security_Model.md msgid "_index-v2_ uses any algorithm supported by [_apksigner_](https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1134) and [_android-23_](https://developer.android.com/reference/java/security/Signature) and newer, and relies on OpenJDK's and Google's maintenance of the currently valid signing algorithms. When _index-v2_ was launched, the signature algorithm in use was `SHA256withRSA` and the digest algorithm was `SHA-256`. _index-v1_ is signed by `SHA1withRSA`. As of this writing, SHA1 are still considered strong against [second preimage attacks](https://crypto.stackexchange.com/a/48291), which is what is relevant for index JARs." msgstr "" #. type: Bullet: '- ' #: _docs/Security_Model.md msgid "Production signing is handled by [reproducible builds](https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/android-platform-tools-apksig.html) of _apksigner_ from Debian." msgstr "" #. type: Bullet: '- ' #: _docs/Security_Model.md #, fuzzy msgid "signed metadata includes hashes of [the app](https://gitlab.com/fdroid/fdroidserver/blob/0.6.0/fdroidserver/update.py#L460) and its [signing key](https://gitlab.com/fdroid/fdroidserver/blob/0.6.0/fdroidserver/update.py#L558)" msgstr "imzalı üst veriler [uygulamanın](https://gitlab.com/fdroid/fdroidserver/blob/0.6.0/fdroidserver/update.py#L460) ve [imzalama anahtarının](https://gitlab.com/fdroid/fdroidserver/blob/0.6.0/fdroidserver/update.py#L558) hash'lerini içerir" #. type: Bullet: '- ' #: _docs/Security_Model.md msgid "[signed metadata generated on a separate machine](https://gitlab.com/fdroid/fdroidserver/blob/0.6.0/fdroidserver/update.py#L989) (which is fully offline for f-droid.org and guardianproject.info)" msgstr "[ayrı bir makinede oluşturulan imzalı üst veriler](https://gitlab.com/fdroid/fdroidserver/blob/0.6.0/fdroidserver/update.py#L989) (f-droid.org ve guardianproject.info için tamamen çevrimdışıdır)" #. type: Bullet: '- ' #: _docs/Security_Model.md msgid "[public key for verifying metadata signatures built into F-Droid client app](https://gitlab.com/fdroid/fdroidclient/blob/v0.100.1/app/src/main/res/values/default_repo.xml#L13)" msgstr "[F-Droid istemci uygulamasında yapılmış üst veri imzalarını doğrulamak için ortak anahtar](https://gitlab.com/fdroid/fdroidclient/blob/v0.100.1/app/src/main/res/values/default_repo.xml#L13)" #. type: Bullet: '- ' #: _docs/Security_Model.md msgid "signed metadata includes [timestamp](https://gitlab.com/fdroid/fdroidclient/commit/02b2090e530ab5d22b522d978728f34bb332b390) and [expiry](https://gitlab.com/fdroid/fdroidserver/blob/0.6.0/fdroidserver/update.py#L775)" msgstr "imzalı üst veriler [zaman damgası](https://gitlab.com/fdroid/fdroidclient/commit/02b2090e530ab5d22b522d978728f34bb332b390) ve [vade](https://gitlab.com/fdroid/fdroidserver/blob/0.6.0/fdroidserver/update.py#L775) içerir" #. type: Bullet: '- ' #: _docs/Security_Model.md msgid "easy Tor support via Settings" msgstr "Ayarlar aracılığıyla kolay Tor desteği" #. type: Bullet: '- ' #: _docs/Security_Model.md msgid "[client-side HTTP “etag” cache check](https://gitlab.com/fdroid/fdroidclient/issues/562) so the ETag cannot be abused to track users" msgstr "ETag'ın kullanıcıları izlemek için kötüye kullanılamaması için [istemci tarafı HTTP \"etag\" önbellek kontrolü](https://gitlab.com/fdroid/fdroidclient/issues/562)" #. type: Bullet: '- ' #: _docs/Security_Model.md msgid "list of official mirrors included in signed metadata, then the client [chooses mirrors](https://gitlab.com/fdroid/fdroidclient/issues/35) based on availability and freshness based on local criteria like whether Tor is in use" msgstr "imzalı üst verilerde bulunan resmi yansıtıcıların listesi, ardından istemci Tor'un kullanımda olup olmadığı gibi yerel ölçütlere dayalı olarak kullanılabilirlik ve tazeliğe göre [yansıtıcıları seçer](https://gitlab.com/fdroid/fdroidclient/issues/35)" #. type: Plain text #: _docs/Security_Model.md msgid "While the current setup is already a solid platform, there are a number of improvements that make sense to implement:" msgstr "Mevcut kurulum halihazırda sağlam bir platform olsa da, uygulanması mantıklı olan bir dizi iyileştirme var:" #. type: Bullet: '- ' #: _docs/Security_Model.md msgid "better handling of index expiry aka \"max age\"" msgstr "\"maksimum yaş\" olarak da bilinen endeksin sona ermesinin daha iyi işlenmesi" #. type: Bullet: '- ' #: _docs/Security_Model.md msgid "[pinned TLS certificate built into the client app](https://gitlab.com/fdroid/fdroidclient/commit/0429b3f7dd4a6037fa11df64bfdd176ea378e6bf)" msgstr "[istemci uygulaması için yapılmış TLS sertifikası](https://gitlab.com/fdroid/fdroidclient/commit/0429b3f7dd4a6037fa11df64bfdd176ea378e6bf)" #. type: Plain text #: _docs/Security_Model.md msgid "In order to defend against an attacker that holds the signing keys for the app repository, there must be a trustworthy source of information to compare against. Reproducible builds means that anyone with the same source code will produce the exact same binary. When paired with an auditing system, it is easy to catch malware inserted in the build process, rather than the source code, like XCodeGhost. Reproducible builds also makes it possible to have all builds of a release binary have the exact same hash. Then any app repository can build apps only from source code, and have a source of verification data from any other app repository building the same app. Building software from source has become cheap enough that many companies like gitlab.com and Travis CI are offering free, automated build services in the cloud. Since the whole F-Droid toolset is free software and designed to be easy to setup, the barriers to setting up automatic auditing are quite low. People in separate areas of the world with different risk profiles can run [verification servers](../Verification_Server) to provide more trustworthy information." msgstr "Uygulama deposunun imzalama anahtarlarını elinde bulunduran bir saldırgana karşı savunma yapabilmek için karşılaştırma yapılabilecek güvenilir bir bilgi kaynağı olmalıdır. Tekrarlanabilir yapılar, aynı kaynak koduna sahip herkesin aynı ikili dosyayı üreteceği anlamına gelir. Bir denetim sistemi ile eşleştirildiğinde, XCodeGhost gibi kaynak kod yerine yapı sürecine eklenen kötü amaçlı yazılımları yakalamak kolaydır. Tekrarlanabilir yapılar aynı zamanda bir sürüm ikilisinin tüm yapılarının tam olarak aynı karmaya sahip olmasını mümkün kılar. Böylece herhangi bir uygulama deposu sadece kaynak koddan uygulama oluşturabilir ve aynı uygulamayı oluşturan diğer uygulama depolarından doğrulama verisi alabilir. Kaynaktan yazılım oluşturmak o kadar ucuz hale geldi ki gitlab.com ve Travis CI gibi birçok şirket bulutta ücretsiz, otomatik yapı hizmetleri sunuyor. F-Droid araç setinin tamamı ücretsiz yazılım olduğundan ve kurulumu kolay olacak şekilde tasarlandığından, otomatik denetim kurmanın önündeki engeller oldukça düşüktür. Dünyanın farklı bölgelerinde farklı risk profillerine sahip kişiler, daha güvenilir bilgiler sağlamak için [doğrulama sunucuları](../Verification_Server) çalıştırabilir." #. type: Plain text #: _docs/Security_Model.md msgid "The security model of the [Build Server Setup](../Build_Server_Setup) and the [Signing Process](../Signing_Process) are documented separately." msgstr "[Yapı Sunucusu Kurulumu](../Build_Server_Setup) ve [İmzalama İşlemi](../Signing_Process) ayrı olarak belgelenir." #. type: Title ## #: _docs/Security_Model.md #, no-wrap msgid "App signing" msgstr "" #. type: Bullet: '* ' #: _docs/Security_Model.md msgid "Apps can be distributed using the [developer's own](../Reproducible_Builds) signatures when the builds are fully reproducible." msgstr "" #. type: Bullet: '* ' #: _docs/Security_Model.md msgid "By default, the \"publish\" server will generate and manage a signing key for each individual app. These signing keys are only shared between apps when specifically configured to do so using the [_keyaliases_](https://gitlab.com/fdroid/fdroidserver/-/blob/886394c9a4909/examples/config.yml#L156) mechanism in _config.yml_." msgstr "" #. type: Bullet: '* ' #: _docs/Security_Model.md msgid "All apps are signed by [the key devoted to that app](https://gitlab.com/fdroid/fdroidserver/-/blob/2.1.2/fdroidserver/publish.py#L420) unless the upstream [specifically](https://gitlab.com/fdroid/fdroiddata/-/merge_requests/10240) requests multiple apps be signed by the same key, and the _fdroiddata_ maintainers approve it." msgstr "" #. type: Bullet: '* ' #: _docs/Security_Model.md msgid "For _f-droid.org_, all app signing is done on a dedicated, air-gapped, offline machine." msgstr "" #. type: Bullet: '* ' #: _docs/Security_Model.md msgid "At any time, the developer's own signatures may be added their app(s) in _f-droid.org_ once reproducible builds have been achieved. Additionally, releases signed by the _f-droid.org_ key will continue to be shipped." msgstr "" #. type: Bullet: '* ' #: _docs/Security_Model.md msgid "In the official F-Droid client app, the developer's own signature is the default for fresh installs." msgstr "" #. type: Bullet: '* ' #: _docs/Security_Model.md msgid "We encourage app developers and maintainers to think about whether they want to use a special Application ID for the app when published in _f-droid.org_ to avoid conflicts with other versions. One common pattern is to add `.fdroid` to the end of the Application ID via a Gradle Build Flavor." msgstr "" #. type: Title ## #: _docs/Security_Model.md #, no-wrap msgid "Initial Installs" msgstr "İlk Kurulumlar" #. type: Plain text #: _docs/Security_Model.md msgid "Most users of F-Droid download the APK from _f-droid.org_ and install it. This is a potential vector of attack that built-in app stores do not have. Therefore, many additional security precautions are taken to make it as hard as possible to exploit this vector." msgstr "Çoğu F-Droid kullanıcısı APK'yı _f-droid.org_ adresinden indirir ve yükler. Bu, yerleşik uygulama mağazalarının sahip olmadığı potansiyel bir saldırı vektörüdür. Bu nedenle, bu vektörden yararlanmayı mümkün olduğunca zorlaştırmak için birçok ek güvenlik önlemi alınmıştır." #. type: Bullet: '* ' #: _docs/Security_Model.md msgid "included on the [HSTS preload list](https://hstspreload.org/?domain=f-droid.org), so major browsers will only ever use HTTPS for all connections to _f-droid.org_" msgstr "[HSTS ön yükleme listesine](https://hstspreload.org/?domain=f-droid.org) dahil edilmiştir, bu nedenle büyük tarayıcılar _f-droid.org adresine yapılan tüm bağlantılar için yalnızca HTTPS kullanacaktır._" #. type: Bullet: '* ' #: _docs/Security_Model.md msgid "a [strong](https://observatory.mozilla.org/analyze/f-droid.org#third-party) TLS/HTTPS configuration" msgstr "[güçlü](https://observatory.mozilla.org/analyze/f-droid.org#third-party) bir TLS/HTTPS yapılandırması" #. type: Bullet: '* ' #: _docs/Security_Model.md msgid "a [strong](https://observatory.mozilla.org/analyze/f-droid.org) HTTP Content Security Policy" msgstr "[güçlü](https://observatory.mozilla.org/analyze/f-droid.org) bir HTTP İçerik Güvenliği İlkesi" #. type: Bullet: '* ' #: _docs/Security_Model.md msgid "[PGP-signature]({{ site.fdroid_apk_download_url }}.asc) on the initial install [download link]({{ site.fdroid_apk_download_url }})" msgstr "[PGP-imza]({{ site.fdroid_apk_download_url }}.asc) ilk yüklemede [indirme bağlantısı]({{ site.fdroid_apk_download_url }})" #. type: Bullet: '* ' #: _docs/Security_Model.md msgid "automated [regular](https://gitlab.com/fdroid/fdroid-website/-/jobs/47503948) and [random](https://verification.f-droid.org/check-fdroid-apk) [auditing](https://gitlab.com/fdroid/fdroidserver/blob/dfbe114af3c4cef15ce3aa5e979d9f4684f2acbc/tests/check-fdroid-apk) that [F-Droid.apk]({{ site.fdroid_apk_download_url }}) has not been tampered with" msgstr "otomatik [düzenli](https://gitlab.com/fdroid/fdroid-website/-/jobs/47503948) ve [rastgele](https://verification.f-droid.org/check-fdroid-apk) [denetleme](https://gitlab.com/fdroid/fdroidserver/blob/dfbe114af3c4cef15ce3aa5e979d9f4684f2acbc/tests/check-fdroid-apk) [F-Droid.apk]({{ site.fdroid_apk_download_url }}) ile oynanmamış" #. type: Bullet: '* ' #: _docs/Security_Model.md msgid "F-Droid Limited controls many potential phishing domains like [fdroid.org](https://whois.icann.org/lookup?name=fdroid.org), [f-droid.com](https://whois.icann.org/lookup?name=f-droid.com), and [f-dro1d.org](https://whois.icann.org/lookup?name=f-dro1d.org). (donations of more are welcome!)" msgstr "F-Droid Limited, [fdroid.org](https://whois.icann.org/lookup?name=fdroid.org), [f-droid.com](https://whois.icann.org/lookup?name=f-droid.com) ve [f-dro1d.org](https://whois.icann.org/lookup?name=f-dro1d.org) gibi birçok potansiyel kimlik avı alan adını kontrol etmektedir. (daha fazla bağış bekliyoruz!)" #. type: Bullet: '* ' #: _docs/Security_Model.md msgid "website is [statically generated](https://gitlab.com/fdroid/fdroid-website) to greatly reduce the attack surface" msgstr "web sitesi, saldırı yüzeyini büyük ölçüde azaltmak için [statik olarak oluşturulur](https://gitlab.com/fdroid/fdroid-website)" #. type: Bullet: '* ' #: _docs/Security_Model.md msgid "website is fully functional when JavaScript is disabled in the browser, eliminating all possibility of XSS attacks" msgstr "JavaScript tarayıcıda devre dışı bırakıldığında web sitesi tamamen işlevseldir ve XSS saldırılarının tüm olasılıklarını ortadan kaldırır" #. type: Title ### #: _docs/Security_Model.md #, no-wrap msgid "F-Droid as built-in app store" msgstr "Yerleşik uygulama mağazası olarak F-Droid" #. type: Plain text #: _docs/Security_Model.md msgid "When F-Droid is built into Android, either as part of the ROM or by flashing an [OTA update]({{ site.baseurl }}/packages/org.fdroid.fdroid.privileged.ota/), it no longer needs \"Unknown Sources\" enabled to function. This is the preferred method of operation, so we aim to make it as easy as possible for users to run F-Droid this way. Flashing the OTA package for F-Droid [Privileged Extension](https://gitlab.com/fdroid/privileged-extension/#how-do-i-install-it-on-my-device) has the same or lower risk profile as installing the standard \"gapps\" package that many people flash onto custom ROMs. So this delivery method does not increase the risk profile of those users." msgstr "F-Droid ROM'un bir parçası olarak veya bir [OTA güncellemesi]({{ site.baseurl }}/packages/org.fdroid.fdroid.privileged.ota/) flaşlanarak Android'e yerleştirildiğinde, çalışması için artık \"Bilinmeyen Kaynakların\" etkinleştirilmesine gerek yoktur. Bu tercih edilen çalışma yöntemidir, bu nedenle kullanıcıların F-Droid'i bu şekilde çalıştırmasını mümkün olduğunca kolaylaştırmayı amaçlıyoruz. F-Droid [Ayrıcalıklı Uzantı](https://gitlab.com/fdroid/privileged-extension/#how-do-i-install-it-on-my-device) için OTA paketini flaşlamak, birçok kişinin özel ROM'lara flaşladığı standart \"gapps\" paketini yüklemekle aynı veya daha düşük risk profiline sahiptir. Dolayısıyla bu dağıtım yöntemi, söz konusu kullanıcıların risk profilini artırmamaktadır." #. type: Plain text #: _docs/Security_Model.md msgid "On top of this, F-Droid makes it as easy as possible to [build it into](https://gitlab.com/fdroid/privileged-extension/#how-do-i-build-it-into-my-rom) ROM projects. It is already included in [CalyxOS](https://calyxos.org/), [Replicant](https://www.replicant.us/), [LineageOS for microG](https://lineage.microg.org/) and [Fairphone Open](https://code.fairphone.com/projects/fp-osos/)." msgstr "Bunun da ötesinde, F-Droid ROM projelerine [dahil edilmesini](https://gitlab.com/fdroid/privileged-extension/#how-do-i-build-it-into-my-rom) mümkün olduğunca kolaylaştırmaktadır. Zaten [CalyxOS](https://calyxos.org/), [Replicant](https://www.replicant.us/), [microG için LineageOS](https://lineage.microg.org/) ve [Fairphone Open](https://code.fairphone.com/projects/fp-osos/)'a dahil edilmiştir." #. type: Title ### #: _docs/Security_Model.md #, no-wrap msgid "Protecting against malicious contributor-generated data" msgstr "Kötü niyetli katılımcıların oluşturduğu verilere karşı koruma" #. type: Plain text #: _docs/Security_Model.md msgid "The app descriptions are submitted by all sorts of people, and they can also be taken from the app's source repository. This data is ultimately delivered to the Android client or the user's browser via _f-droid.org_." msgstr "Uygulama açıklamaları her türlü kişi tarafından gönderilir ve uygulamanın kaynak deposundan da alınabilir. Bu veriler nihayetinde Android istemcisine veya kullanıcının tarayıcısına _f-droid.org_ üzerinden iletilir." #. type: Plain text #: _docs/Security_Model.md #, no-wrap msgid "" "* the Android client never runs CSS, JavaScript, or dangerous HTML\n" "tags since it displays HTML via\n" "[`android.text.Html.fromHtml()`](https://gitlab.com/fdroid/fdroidclient/blob/1.3.1/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java#L441)\n" "with image loading disabled\n" "* the _f-droid.org_ website protects against malicious and\n" "CSS/HTML/JavaScript injection with a\n" "[strict HTTP Content Security Policy](https://observatory.mozilla.org/analyze/f-droid.org).\n" "* Repomaker filters the texts through Mozilla's\n" "[_bleach_](https://github.com/mozilla/bleach) and has a good\n" "[HTTP Content Security Policy](https://observatory.mozilla.org/analyze.html?host=repomaker.grobox.de).\n" msgstr "" "* Android istemcisi asla CSS, JavaScript veya tehlikeli HTML çalıştırmaz\n" "etiketleri aracılığıyla HTML görüntülediği için\n" "[`android.text.Html.fromHtml()`](https://gitlab.com/fdroid/fdroidclient/blob/1.3.1/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java#L441)\n" "görüntü yükleme devre dışı bırakıldığında\n" "* _ f-droid.org_ web sitesi kötü niyetli ve\n" "CSS/HTML/JavaScript enjeksiyonu ile\n" "[Sıkı HTTP İçerik Güvenliği Politikası](https://observatory.mozilla.org/analyze/f-droid.org).\n" "* Repomaker metinleri Mozilla'nın\n" "[_Bleach_](https://github.com/mozilla/bleach) ve iyi bir\n" "[HTTP İçerik Güvenliği Politikası'na sahiptir](https://observatory.mozilla.org/analyze.html?host=repomaker.grobox.de).\n" #. type: Title ## #: _docs/Security_Model.md #, no-wrap msgid "Security Audits" msgstr "Güvenlik Denetimleri" #. type: Bullet: '1. ' #: _docs/Security_Model.md msgid "There was a quick, informal [security audit](https://dev.guardianproject.info/projects/bazaar/wiki/Initial_FDroid_Audit_by_pd0x) ([_archived_](https://web.archive.org/web/20170317154208/https://dev.guardianproject.info/projects/bazaar/wiki/Initial_FDroid_Audit_by_pd0x)) done in 2013 by then graduate student Daniel McCarney aka _pd0x_." msgstr "O zamanki yüksek lisans öğrencisi Daniel McCarney tarafından 2013 yılında yapılan hızlı, gayri resmi bir [güvenlik denetimi](https://dev.guardianproject.info/projects/bazaar/wiki/Initial_FDroid_Audit_by_pd0x) ([_arşivlenmiş_](https://web.archive.org/web/20170317154208/https://dev.guardianproject.info/projects/bazaar/wiki/Initial_FDroid_Audit_by_pd0x)) _pd0x_." #. type: Bullet: '2. ' #: _docs/Security_Model.md msgid "The first \"Bazaar\" project funded by [Open Tech Fund](https://opentech.fund) included an [external public audit]({{ site.baseurl }}/2018/01/20/upcoming-security-audit.html) from [Cure53](https://cure53.de)" msgstr "[Open Tech Fund](https://opentech.fund) tarafından finanse edilen ilk \"Bazaar\" projesi, [Cure53](https://cure53.de) tarafından yapılan bir [kamu dışı denetim]({{ site.baseurl }}/2018/01/20/upcoming-security-audit.html) içeriyordu" #. type: Bullet: '3. ' #: _docs/Security_Model.md msgid "The second \"Bazaar2\" project funded by Open Tech Fund included an [external public audit]({{ site.baseurl }}/2018/09/04/second-security-audit-results.html) from [Radically Open Security](https://radicallyopensecurity.com/)" msgstr "Open Tech Fund tarafından finanse edilen ikinci \"Bazaar2\" projesi, [Radically Open Security](https://radicallyopensecurity.com/) tarafından yapılan bir [kamu dışı denetim]({{ site.baseurl }}/2018/09/04/second-security-audit-results.html) içeriyordu" #. type: YAML Front Matter: title #: _docs/Setup_an_F-Droid_App_Repo.md #, no-wrap msgid "Setup an F-Droid App Repo" msgstr "" #. type: Plain text #: _docs/Setup_an_F-Droid_App_Repo.md msgid "F-Droid.org is the default package repository (repo) in the F-Droid client, but it is not the only possibility. Anyone can create their own repo, and users can control which repos their client is using, including even disabling the default f-droid.org repo. This model is modeled somewhat after the [Debian GNU/Linux](https://www.debian.org) distro. Like Debian and Ubuntu, you can also setup your own repos for anyone to use. Custom repos do not even need to build the APKs, they can just be \"simple binary repos\" of any APKs." msgstr "" #. type: Title ## #: _docs/Setup_an_F-Droid_App_Repo.md #, no-wrap msgid "Overview" msgstr "" #. type: Plain text #: _docs/Setup_an_F-Droid_App_Repo.md msgid "If you want to maintain a simple binary repository of APKs and packages obtained elsewhere, the process is quite simple:" msgstr "" #. type: Bullet: '1. ' #: _docs/Setup_an_F-Droid_App_Repo.md msgid "[Set up the server tools](../Installing_the_Server_and_Repo_Tools)" msgstr "" #. type: Bullet: '2. ' #: _docs/Setup_an_F-Droid_App_Repo.md msgid "Create a directory called _fdroid_, then run `fdroid init` in that directory to generate the signing key that uniquely identifies your repo." msgstr "" #. type: Bullet: '3. ' #: _docs/Setup_an_F-Droid_App_Repo.md msgid "Optionally edit the _config.yml_ file to your liking, detailed examples are in [examples/config.yml](https://gitlab.com/fdroid/fdroidserver/-/blob/master/examples/config.yml)" msgstr "" #. type: Bullet: '4. ' #: _docs/Setup_an_F-Droid_App_Repo.md msgid "Within _fdroid_, make a directory called _repo_ and put APK files in it." msgstr "" #. type: Bullet: '5. ' #: _docs/Setup_an_F-Droid_App_Repo.md msgid "Run `fdroid update`." msgstr "" #. type: Bullet: '6. ' #: _docs/Setup_an_F-Droid_App_Repo.md msgid "If it reports that any metadata files are missing, you can create them in the `metadata` directory and run it again." msgstr "" #. type: Bullet: '7. ' #: _docs/Setup_an_F-Droid_App_Repo.md msgid "To ease creation of metadata files, run `fdroid update` with the `-c` option. It will create ’skeleton’ metadata files that are missing, and you can then just edit them and fill in the details." msgstr "" #. type: Bullet: '8. ' #: _docs/Setup_an_F-Droid_App_Repo.md msgid "Then, if you’ve changed things, run `fdroid update` again." msgstr "" #. type: Bullet: '9. ' #: _docs/Setup_an_F-Droid_App_Repo.md msgid "Running `fdroid update` adds an _icons_ directory into the repo directory, and also creates the repository index files (_index.xml_, _index.jar_, etc) __NOTE: To make this process secure, read [Real World Setup](#real-world-setup) below!__" msgstr "" #. type: Bullet: '0. ' #: _docs/Setup_an_F-Droid_App_Repo.md msgid "Publish the resulting contents of the _repo_ directory to your web server (or set `serverwebroot` in your _config.yml_ then use `fdroid deploy`)" msgstr "" #. type: Plain text #: _docs/Setup_an_F-Droid_App_Repo.md msgid "Following the above process will result in a _repo_ directory, which you simply need to push to any HTTP (or preferably HTTPS) server to make it accessible." msgstr "" #. type: Plain text #: _docs/Setup_an_F-Droid_App_Repo.md msgid "While some information about the applications (and versions thereof) is retrieved directly from the APK files, most comes from the corresponding file in the _metadata/_ directory. The [metadata file](../Build_Metadata_Reference) covering ALL versions of a particular application is named _package.id.yml_ where package.id is the unique identifier for that package. All build metadata fields are relevant for binary APKs, except for `Builds:` entries, which should be omitted." msgstr "" #. type: Title ## #: _docs/Setup_an_F-Droid_App_Repo.md #, no-wrap msgid "Local Demo Repo HOWTO" msgstr "" #. type: Plain text #: _docs/Setup_an_F-Droid_App_Repo.md msgid "This is a full HOWTO to setup your own repository wherever you want to host it. It is somewhat technical, you will use the terminal, but you don't need to be a terminal expert to follow along. First, this HOWTO will walk through setting up a test repo that is not very secure. Then it will walk through setting up a repo for real world use, with the signing key on a separate machine from the public webserver. Before you start, you need to get [the `fdroidserver` tools](../Installing_the_Server_and_Repo_Tools) and a webserver. For the webserver, this HOWTO will use _nginx_ since its lightweight, but any will do if you already have one running." msgstr "" #. type: Fenced code block (bash) #: _docs/Setup_an_F-Droid_App_Repo.md #, no-wrap msgid "sudo apt-get install nginx\n" msgstr "sudo apt-get install nginx\n" #. type: Plain text #: _docs/Setup_an_F-Droid_App_Repo.md msgid "In the case of this HOWTO, we're going to setup a \"simple binary repository\" to host a collection of APKs. The repo will be set up in the recommended _fdroid/_ subdirectory. This gives the `fdroid` tool its own directory to work in, and makes the repo URL clearly marked as an F-Droid repo. Also, the F-Droid client will automatically search for a repository at the _/fdroid/repo_ path if the user only enters the server (e.g. \"https://f-droid.org\"). Let's give our normal user control over this subdirectory in the web root so that we don't need to run the F-Droid tools as root (with _nginx_, the webroot is _/usr/share/nginx/www_, it is different for other webservers):" msgstr "" #. type: Fenced code block (bash) #: _docs/Setup_an_F-Droid_App_Repo.md #, no-wrap msgid "" "sudo mkdir /usr/share/nginx/www/fdroid\n" "sudo chown -R $USER /usr/share/nginx/www/fdroid\n" "cd /usr/share/nginx/www/fdroid\n" "fdroid init\n" msgstr "" #. type: Plain text #: _docs/Setup_an_F-Droid_App_Repo.md msgid "Now put your APK files into _/usr/share/nginx/www/fdroid/repo_ and you are ready to run the commands to build the repo (if `fdroid init` cannot find your Android SDK in _/opt/android-sdk_ or `$ANDROID_HOME`, it will prompt you for the path):" msgstr "" #. type: Fenced code block (bash) #: _docs/Setup_an_F-Droid_App_Repo.md #, no-wrap msgid "" "cd /usr/share/nginx/www/fdroid\n" "cp /path/to/\\*.apk /usr/share/nginx/www/fdroid/repo/\n" "fdroid update --create-metadata\n" msgstr "" #. type: Plain text #: _docs/Setup_an_F-Droid_App_Repo.md msgid "Voila! Now you have a working F-Droid Repo! Remember, this is __just a test__ setup, remember to move on to the [Real World Setup](#real-world-setup) after this! Add your new repo to an F-Droid client on your Android device to test it out. That is done in the __Manage Repos__ screen available from the menu. Your repo URL will be the hostname or IP address of your machine with `/fdroid/repo/` added to the end of it, i.e. `https://mysecureserver.com/fdroid/repo/` or `http://192.168.2.53/fdroid/repo/`. You can temporarily uncheck the official repos to easily see what F-Droid found in your new repo." msgstr "" #. type: Plain text #: _docs/Setup_an_F-Droid_App_Repo.md msgid "While you can serve the repository at an arbitrary URL, it is customary to make it available at an URL ending with `/fdroid/repo/`. A good reason to actually do this is that the F-Droid client sets up an intent filter and registers itself for such URLs. As a result, a user that has the F-Droid app installed and opens such a well-formed URL will have their device open F-Droid and guide them directly to adding the repository to it." msgstr "" #. type: Title ### #: _docs/Setup_an_F-Droid_App_Repo.md #, no-wrap msgid "Customization" msgstr "" #. type: Plain text #: _docs/Setup_an_F-Droid_App_Repo.md msgid "You can also customize your repo by editing the config file. Be sure to use a programming text editor, like `editor /usr/share/nginx/www/fdroid/config.yml`. In the config file, you can set the name of the repo, the description, the icon, paths to specific versions of the build tools, links to a related wiki, and whether to keep stats. Here's the basic repo description block:" msgstr "" #. type: Fenced code block (yaml) #: _docs/Setup_an_F-Droid_App_Repo.md #, no-wrap msgid "" "repo_url = \"http://guardianproject.info/fdroid/repo\"\n" "repo_name = \"My Local Repo\"\n" "repo_icon = \"GP_Logo_hires.png\"\n" "repo_description = \"\"\"\n" "A local test repository of Hans-Christoph Steiner .\n" "It is a repository of Guardian Project apps. \"\"\"\n" msgstr "" #. type: Plain text #: _docs/Setup_an_F-Droid_App_Repo.md msgid "To put your icon into your repo, choose a PNG image to put in your repo. The PNG goes in `/usr/share/nginx/www/fdroid/`, the file can be named whatever you want (by default its `fdroid-icon.png`). If you change the name from the default, be sure to update `repo_icon` and `archive_icon` in `/usr/share/nginx/www/fdroid/config.yml`." msgstr "" #. type: Plain text #: _docs/Setup_an_F-Droid_App_Repo.md msgid "A final note about security: this setup is not a good setup for a real public repo, instead it is a quick and easy way to test out F-Droid. At the very least, when generating the repo in place, make sure that _config.yml_ is not accessible via the web, since it contains passwords. If the file permissions are correct (e.g. `chmod 0600 config.yml`), then _config.yml_ will not be readable by the webserver." msgstr "" #. type: Title ### #: _docs/Setup_an_F-Droid_App_Repo.md #, no-wrap msgid "App Metadata" msgstr "" #. type: Plain text #: _docs/Setup_an_F-Droid_App_Repo.md msgid "You can control lots of aspects of how an app is represented in your repo by editing the app's metadata. Running `fdroid update --create-metadata` creates stub files for you, in order to have a working repo. Then you can edit those files to add a description, donation links, bug tracker, license, home page, etc. See the [Build Metadata Reference](../Build_Metadata_Reference) for more info on what all the options are." msgstr "" #. type: Plain text #: _docs/Setup_an_F-Droid_App_Repo.md msgid "_CurrentVersionCode_ provides a handy way to deploy beta releases in the same stream as your full releases. You can set _CurrentVersionCode_ to your current stable release, then add APKs to your repo. Users will only be updated automatically to the version code you specify. Any APKs for a given app in your repo that have a newer version code will not be automatically installed. Instead, the user can see them in the app detail view in the client, and can manually install them." msgstr "" #. type: Title ## #: _docs/Setup_an_F-Droid_App_Repo.md #, no-wrap msgid "Real World Setup" msgstr "" #. type: Plain text #: _docs/Setup_an_F-Droid_App_Repo.md msgid "Now that you have a working repo, it is straightforward to create a real world setup. Generating a repo in place like we did above is very easy, that is why this HOWTO started there, but it is not as secure as it should be if your repo is going to be your main distribution point. For example, the repo signing keys should not ever be on a public server." msgstr "" #. type: Plain text #: _docs/Setup_an_F-Droid_App_Repo.md msgid "To improve this situation, generate the repo on a non-public machine like your laptop, keeping _config.yml_ and the keystore only on that machine (remember to make backups!). Then use `fdroid deploy` to publish the changes to your repo on a separate server via ssh. So start a new repo from scratch on your non-public machine:" msgstr "" #. type: Fenced code block (bash) #: _docs/Setup_an_F-Droid_App_Repo.md #, no-wrap msgid "" "mkdir ~/fdroid\n" "cd ~/fdroid\n" "fdroid init\n" "cp /path/to/\\*.apk ~/fdroid/repo/\n" "fdroid update --create-metadata\n" "emacs config.yml # add the serverwebroot, etc.\n" "fdroid deploy -v\n" msgstr "" #. type: Plain text #: _docs/Setup_an_F-Droid_App_Repo.md msgid "Now edit _config.yml_ to set `serverwebroot`, it is in the form of a standard SCP file destination. Then `fdroid deploy` will do the publishing via rsync over ssh. So both computers will have to have ssh and rsync installed and setup. You can also use your own existing signing key rather than the one generated by `fdroid init`, just edit `repo_keyalias`, `keystore`, `keystorepass`, `keypass`, and `keydname` in _~/fdroid/config.yml_." msgstr "" #. type: YAML Front Matter: title #: _docs/Signing_Process.md #, no-wrap msgid "Signing Process" msgstr "" #. type: Plain text #: _docs/Signing_Process.md msgid "Cryptographic signatures using public/private key parts are central to [how F-Droid](../Security_Model) provides secure app distribution. Signing keys are required to make your own releases with the F-Droid tools. Consider the location, security and backup status of your key files carefully. The keys need to remain secure for the entire lifetime of an F-Droid repo, or an Android app. The signing key is central the identity of an Android app and an F-Droid repo, so those keys must be kept safe, secure and well backed up! Also, take note that Google's directions for [securing these private keys](https://developer.android.com/studio/publish/app-signing.html#secure-key) provides only the minimal steps to take to safeguard the keys." msgstr "" #. type: Plain text #: _docs/Signing_Process.md msgid "There are two kinds of signing involved in running a repository:" msgstr "" #. type: Bullet: '- ' #: _docs/Signing_Process.md msgid "the signing of the repo index itself" msgstr "" #. type: Bullet: '- ' #: _docs/Signing_Process.md msgid "the standard Android APK signing process" msgstr "" #. type: Title ### #: _docs/Signing_Process.md #, no-wrap msgid "Repo Index Signing" msgstr "" #. type: Plain text #: _docs/Signing_Process.md msgid "When setting up the repository, one of the first steps should be to generate a signing key for the repository index. This will also create a keystore, which is the file that holds the signing keys." msgstr "" #. type: Plain text #: _docs/Signing_Process.md msgid "`fdroid init` will automatically create a new signing key for an F-Droid repo. It is possible to manually create keys just like creating [Android signing keys](https://developer.android.com/studio/publish/app-signing.html#signing-manually), with a command like:" msgstr "" #. type: Fenced code block (bash) #: _docs/Signing_Process.md #, no-wrap msgid "" "keytool -genkey -v -keystore my.keystore -alias repokey \\\n" " -keyalg RSA -keysize 2048 -validity 10000\n" msgstr "" #. type: Plain text #: _docs/Signing_Process.md msgid "In the above, replace _my.keystore_ with the name of the keystore file to be created, and ’repokey’ with a name to identify the repo index key by. You’ll be asked for a password for the keystore, AND a password for the key. They shouldn’t be the same. In between, you’ll be asked for some identifying details which will go in the certificate." msgstr "" #. type: Plain text #: _docs/Signing_Process.md msgid "The two passwords entered go into _config.yml_, as `keystorepass` and `keypass` respectively. The path to the keystore file is set in `keystore`, and the alias you chose for the key also go into that file is called `repo_keyalias`." msgstr "" #. type: Title ### #: _docs/Signing_Process.md #, no-wrap msgid "APK Signing" msgstr "" #. type: Plain text #: _docs/Signing_Process.md msgid "The F-Droid tools can automatic generate and manage APK signing keys for each app that it maintains. With the repo index signing configured, all that remains to be done for package signing to work is to set the _keydname_ field in _config.yml_ to contain the same identifying details you entered before. A new key will be generated using these details, for each application that is built. If a specific key is required for a particular application, this system can be overridden using the _keyaliases_ config settings." msgstr "" #. type: Plain text #: _docs/Signing_Process.md msgid "To set up `fdroid publish`, do these steps on the same machine where you copy APKs to and run `fdroid update`. First, set _keydname_ in _config.yml_, it should be something like this:" msgstr "" #. type: Fenced code block (python) #: _docs/Signing_Process.md #, no-wrap msgid "keydname = \"CN=example.com, O=Example Ltd, C=UK\"\n" msgstr "" #. type: Plain text #: _docs/Signing_Process.md msgid "Create a dir called _unsigned/_ next to the _metadata/_ and _repo/_ dirs, and run these commands to move the APK into place with a new name based on _Application ID_ and _Version Code_:" msgstr "" #. type: Fenced code block (console) #: _docs/Signing_Process.md #, no-wrap msgid "" "$ cd /path/to/repobasedir\n" "$ touch metadata/com.example.app.yml\n" "$ mkdir unsigned\n" "$ cp /path/to/app-release-unsigned.apk unsigned/com.example.app_1234.apk\n" "$ fdroid publish --verbose\n" "$ fdroid update --verbose\n" "$ fdroid server update --verbose\n" msgstr "" #. type: Title ### #: _docs/Signing_Process.md #, no-wrap msgid "Package Signing" msgstr "" #. type: Plain text #: _docs/Signing_Process.md msgid "All packages built and/or distributed using F-Droid tools can also be signed by PGP using [GnuPG](https://gnupg.org), anything from APKs to media files will be signed. This process is run with `fdroid gpgsign`. Add `gpghome` and `gpgkey` to your _config.yml_ to configure it, there is more information in _examples/config.yml_." msgstr "" #. type: Title ### #: _docs/Signing_Process.md #, no-wrap msgid "Hardware Security Modules" msgstr "" #. type: Plain text #: _docs/Signing_Process.md msgid "Hardware Security Modules (HSMs) are specially designed pieces of hardware for securely storing and using cryptographic keys. They provide write-only storage, so that a private key can only be written to the HSM and never read off of it. _fdroidserver_ has support for using HSMs for repo signing keys." msgstr "" #. type: Plain text #: _docs/Signing_Process.md msgid "For information on how to configure an F-Droid repo to use an HSM, see the \"smartcard\" sections of _examples/config.yml_, specifically `keystore` and `smartcardoptions`. Most likely, [OpenSC](https://github.com/OpenSC/OpenSC) will need to be set up as a PKCS11 provider for Java." msgstr "" #. type: Plain text #: _docs/Signing_Process.md msgid "For more in-depth information, see: * _fdroidserver_ example config file: [examples/config.yml](https://gitlab.com/fdroid/fdroidserver/-/blob/2.1a0/examples/config.yml#L125) * [Publishing an F-Droid Repo using a Hardware Security Module]({{ site.baseurl }}/{% post_url 2020-10-05-ntrokey-signing %}) * [Security in a thumb drive: the promise and pain of hardware security modules, take one!](https://guardianproject.info/2014/03/28/security-in-a-thumb-drive-the-promise-and-pain-of-hardware-security-modules-take-one/)" msgstr "" #. type: YAML Front Matter: title #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md #, no-wrap msgid "Submitting to F-Droid Quick Start Guide" msgstr "" #. type: Plain text #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "Doing this is apparently the best way to get your own package into the repository, since you can provide a direct merge request for the metadata about your package, making it easy for the maintainers." msgstr "" #. type: Plain text #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "To understand the overview of the process, read the *Proposal by Metadata Merge Request* section of the [Inclusion How-To](../Inclusion_How-To/)." msgstr "" #. type: Title ## #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md #, no-wrap msgid "First steps" msgstr "" #. type: Plain text #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "In the source of the application you want to include, find all the _AndroidManifest.xml_ and _build.gradle_ files, and write down in which subdir the most detailed of them happen to be." msgstr "" #. type: Plain text #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "Register on [GitLab](https://gitlab.com/) and fork the [fdroiddata](https://gitlab.com/fdroid/fdroiddata) repository." msgstr "" #. type: Title ## #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md #, no-wrap msgid "Upstream metadata" msgstr "" #. type: Plain text #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "Each official release commit in the application's upstream Git repository should have a tag. For example, if its AndroidManifest contains `versionName: '1.0'`, the commit needs a `v1.0` tag. It is strongly encouraged to add metadata in the application's source repo, too:" msgstr "" #. type: Bullet: '* ' #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "_metadata/en-US/short_description.txt_ (30-50 chars, no trailing dot)" msgstr "" #. type: Bullet: '* ' #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "_metadata/en-US/full_description.txt_" msgstr "" #. type: Bullet: '* ' #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "_metadata/en-US/images/icon.png_" msgstr "" #. type: Bullet: '* ' #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "_metadata/en-US/images/phoneScreenshots/screenshot.png_" msgstr "" #. type: Plain text #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "If the AndroidManifest contains `versionCode: 123`, there should be a corresponding explanation of what's new in this version:" msgstr "" #. type: Bullet: '* ' #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "_metadata/en-US/changelogs/123.txt_ (max 500 characters)" msgstr "" #. type: Plain text #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "Browse the [F-Droid client metadata](https://gitlab.com/fdroid/fdroidclient/-/tree/master/metadata/en-US) directory to see a real-world example." msgstr "" #. type: Plain text #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "Other formats and locations of the [description, graphics, and screenshots](../All_About_Descriptions_Graphics_and_Screenshots/) are supported, too. For example, the _metadata/en-US_ directory can instead be _fastlane/metadata/android/en-US_." msgstr "" #. type: Plain text #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "Send the application's development team a merge request if the repository doesn't have those files, and open an issue if it has no version tags. Having this metadata in place lets it be under direct control of the developer, and their updates and future translations will be pulled automatically." msgstr "" #. type: Title ## #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md #, no-wrap msgid "Build environment" msgstr "" #. type: Plain text #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "On a laptop with Ubuntu 21.10 in February 2022, it took 2 GB of traffic and 5 GB of disk space to set up an F-Droid build environment." msgstr "" #. type: Plain text #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "Network requirements:" msgstr "" #. type: Bullet: '* ' #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "60 MB: shallow-clone _fdroiddata_ and _fdroidserver_" msgstr "" #. type: Bullet: '* ' #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "75 MB: install _docker.io_" msgstr "" #. type: Bullet: '* ' #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "1000 MB: load the container" msgstr "" #. type: Bullet: '* ' #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "800 MB: build" msgstr "" #. type: Plain text #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "Storage requirements:" msgstr "" #. type: Bullet: '* ' #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "1000 MB: clone the repos and install _docker.io_" msgstr "" #. type: Bullet: '* ' #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "4000 MB: load the container and build" msgstr "" #. type: Plain text #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "Download your fork, then create a new branch and a metadata file. For example, if the application's _build.gradle_ says `applicationId \"com.example\"`:" msgstr "" #. type: Fenced code block (sh) #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md #, no-wrap msgid "" "git clone --depth=1 https://gitlab.com/YOUR_ACCOUNT/fdroiddata ~/fdroiddata\n" "cd ~/fdroiddata\n" "git checkout -b com.example\n" "cp templates/app-full metadata/com.example.yml\n" msgstr "" #. type: Plain text #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "Fill _~/fdroiddata/metadata/com.example.yml_ according to the [build metadata reference](../Build_Metadata_Reference/). If you have convinced the application's development team to include the descriptions and use version tags in their repository as explained above, the file will be very concise:" msgstr "" #. type: Fenced code block (yaml) #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md #, no-wrap msgid "" "Categories:\n" " - Internet\n" " - Navigation\n" "License: GPL-3.0-or-later\n" "SourceCode: https://gitlab.com/APPLICATION_UPSTREAM/ExampleCom\n" "\n" "RepoType: git\n" "Repo: https://gitlab.com/APPLICATION_UPSTREAM/ExampleCom\n" "\n" "Builds:\n" " - versionName: '1.0'\n" " versionCode: 123\n" " commit: v1.0\n" " # Where build.gradle is:\n" " subdir: app\n" " sudo:\n" " - apt-get update || apt-get update\n" " - apt-get install -y librsvg2-bin openjdk-11-jdk-headless\n" " - update-alternatives --auto java\n" " gradle:\n" " - yes\n" "\n" "AutoUpdateMode: Version\n" "UpdateCheckMode: Tags\n" "CurrentVersion: '1.0'\n" "CurrentVersionCode: 123\n" msgstr "" #. type: Plain text #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "Adjust or remove the relevant _sudo_ lines if needed:" msgstr "" #. type: Bullet: '* ' #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "The example application's _build.gradle_ executes _rsvg-convert_ to rasterize its vector icons, so we install _librsvg2-bin_ from the official Debian repositories. All such dependencies should be specified in the app's _README_." msgstr "" #. type: Bullet: '* ' #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "_build.gradle_ mentions `com.android.tools.build:gradle:7.1.0`, and the Gradle Android plugin version 7 is known to depend on Java 11. So we install _openjdk-11-jdk-headless_ and select it as the _java_ alternative." msgstr "" #. type: Plain text #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "Download and launch the latest version of the server tools container:" msgstr "" #. type: Fenced code block (sh) #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md #, no-wrap msgid "" "git clone --depth=1 https://gitlab.com/fdroid/fdroidserver ~/fdroidserver\n" "sudo sh -c 'apt-get update &&apt-get install -y docker.io'\n" "sudo docker run --rm -itu vagrant --entrypoint /bin/bash \\\n" " -v ~/fdroiddata:/build:z \\\n" " -v ~/fdroidserver:/home/vagrant/fdroidserver:Z \\\n" " registry.gitlab.com/fdroid/fdroidserver:buildserver\n" msgstr "" #. type: Plain text #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "In the container:" msgstr "" #. type: Fenced code block (sh) #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md #, no-wrap msgid "" ". /etc/profile\n" "export PATH=\"$fdroidserver:$PATH\" PYTHONPATH=\"$fdroidserver\"\n" "cd /build\n" "fdroid readmeta\n" "fdroid rewritemeta com.example\n" "fdroid checkupdates --allow-dirty com.example\n" "fdroid lint com.example\n" "fdroid build com.example\n" msgstr "" ". /etc/profile\n" "export PATH=\"$fdroidserver:$PATH\" PYTHONPATH=\"$fdroidserver\"\n" "cd /build\n" "fdroid readmeta\n" "fdroid rewritemeta com.example\n" "fdroid checkupdates --allow-dirty com.example\n" "fdroid lint com.example\n" "fdroid build com.example\n" #. type: Plain text #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "If any command, such as `fdroid readmeta`, returns an error, edit _~/fdroiddata/metadata/com.example.yml_ accordingly and try running the command again. After a successful build, exit the container, commit your metadata file with a `New App` label, and push it to your fork:" msgstr "" #. type: Fenced code block (sh) #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md #, no-wrap msgid "" "exit\n" "cd ~/fdroiddata\n" "git add metadata/com.example.yml\n" "git commit -m \"New App: com.example\"\n" "git push origin com.example\n" msgstr "" #. type: Plain text #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "Create a [merge request](https://gitlab.com/fdroid/fdroiddata/-/merge_requests) at the fdroiddata repository, selecting your _com.example_ source branch. Wait for the packagers to pick up your merge request. Please keep track if they asked any questions and reply to them as soon as possible." msgstr "" #. type: Plain text #: _docs/Submitting_to_F-Droid_Quick_Start_Guide.md msgid "You can [get help with F-Droid](../../about/#contact) via IRC, Matrix, XMPP, e-mail and some other channels." msgstr "" #. type: YAML Front Matter: title #: _docs/Take-Down_Requests.md #, no-wrap msgid "Take-Down Requests" msgstr "Yayından Kaldırma İstekleri" #. type: Plain text #: _docs/Take-Down_Requests.md #, no-wrap msgid "" "\n" msgstr "" "\n" #. type: Title ## #: _docs/Take-Down_Requests.md #, no-wrap msgid "Introduction" msgstr "Giriş" #. type: Plain text #: _docs/Take-Down_Requests.md msgid "This document covers how you may send a request to remove content or apps from the official f-droid.org repository. Our team checks all app submissions we receive for compliance with our [inclusion policy](../Inclusion_Policy) to the best of their abilities. Please let us know if an app the official f-droid.org repository infringes on your rights by submitting a take-down request." msgstr "Bu belge, resmi f-droid.org deposundan içerik veya uygulama kaldırma talebini nasıl gönderebileceğinizi kapsar. Ekibimiz, aldığımız tüm uygulama gönderimlerinin [dahil etme politikamıza](../Inclusion_Policy) uygunluğunu ellerinden gelen en iyi şekilde kontrol eder. Resmi f-droid.org deposundaki bir uygulama haklarınızı ihlal ediyorsa lütfen bir kaldırma talebi göndererek bize bildirin." #. type: Plain text #: _docs/Take-Down_Requests.md msgid "The official f-droid.org repository is a distribution service for FOSS apps and will be called downstream in the remainder of this document. F-Droid does not hold any rights to the apps in official f-droid.org repository other than granted by their respective license. The authors of said apps will be called upstream in the remainder of this document." msgstr "Resmi f-droid.org deposu, FOSS uygulamalar için bir dağıtım hizmetidir ve bu belgenin geri kalanında aşağı akış olarak adlandırılacaktır. F-Droid, resmi f-droid.org deposundaki uygulamalar üzerinde ilgili lisansları tarafından verilenler dışında herhangi bir hakka sahip değildir. Söz konusu uygulamaların geliştiricileri, bu belgenin geri kalanında yukarı akış olarak adlandırılacaktır." #. type: Title ## #: _docs/Take-Down_Requests.md #, no-wrap msgid "Submitting Take-Down Requests" msgstr "Yayından Kaldırma İstekleri Gönderme" #. type: Plain text #: _docs/Take-Down_Requests.md msgid "Please take some time to familiarize yourself with our policies any take-down procedure before submitting any take-down requests. If you submit an incomplete request, we will have to ask you for clarifications maybe even re-submitting a revised request." msgstr "Lütfen herhangi bir kaldırma talebi göndermeden önce politikalarımızı ve kaldırma prosedürünü öğrenmek için biraz zaman ayırın. Eksik bir talep gönderirseniz, sizden açıklama istemek zorunda kalacağız, hatta belki de revize edilmiş bir talebi yeniden göndereceğiz." #. type: Plain text #: _docs/Take-Down_Requests.md msgid "You have to make sure that requests you're submitting to us, contain all information required by our team to verify the legitimacy of your claims. This can include a variety of informations like copyright and licensing information, trademark registrations, etc." msgstr "Bize gönderdiğiniz taleplerin, taleplerinizin meşruiyetini doğrulamak için ekibimizin ihtiyaç duyduğu tüm bilgileri içerdiğinden emin olmalısınız. Bu, telif hakkı ve lisans bilgileri, ticari marka tescilleri vb. gibi çeşitli bilgileri içerebilir." #. type: Plain text #: _docs/Take-Down_Requests.md msgid "Please note that downstream has and will never agree to 3rd party Terms of Service, Terms of Use or similar agreements for services not utilized by downstream. Therefore such agreements usually do not provide an enforceable basis for take-down requests." msgstr "Aşağı doğru akışın, aşağı akış tarafından kullanılmayan hizmetler için 3. taraf Hizmet Şartları, Kullanım Şartları veya benzer anlaşmaları asla kabul etmediğini ve etmeyeceğini lütfen unutmayın. Bu nedenle, bu tür anlaşmalar genellikle kaldırma talepleri için uygulanabilir bir temel sağlamaz." #. type: Plain text #: _docs/Take-Down_Requests.md msgid "Also please note that we are an volunteer driven organization. We prioritize take-down requests, but we can't guarantee instant responses." msgstr "Ayrıca, gönüllülük esasına dayalı bir kuruluş olduğumuzu lütfen unutmayın. Kaldırma taleplerine öncelik veriyoruz, ancak anında yanıt garantisi veremiyoruz." #. type: Plain text #: _docs/Take-Down_Requests.md msgid "You can submit take-down requests [by starting a new issue on our issue tracker](https://gitlab.com/fdroid/fdroiddata/-/issues/new). (This requires gitlab.com account.)" msgstr "[Sorun izleyicimizde yeni bir sorun oluşturarak](https://gitlab.com/fdroid/fdroiddata/-/issues/new) kaldırma istekleri gönderebilirsiniz. (Bunun için gitlab.com hesabı gereklidir.)" #. type: Plain text #: _docs/Take-Down_Requests.md msgid "Alternatively if you prefer you can send your request to our team E-Mail account. [team@f-droid.org](mailto:team@f-droid.org) (Our team will still open a public issue on our issue trackers and quote your entire request there.)" msgstr "Alternatif olarak, tercih ederseniz talebinizi ekibimizin E-Posta hesabına gönderebilirsiniz. [team@f-droid.org](mailto:team@f-droid.org) (Ekibimiz yine de sorun izleyicilerimizde herkese açık bir sorun açacak ve talebinizin tamamını orada alıntılayacaktır)." #. type: Plain text #: _docs/Take-Down_Requests.md msgid "Take-down requests can not be confidential. By submitting a take-down request you automatically grant us permission to publish your entire request on our web-sites and or issue trackers. We need this because all of our processes are worked on in public and for keeping accountable to our users." msgstr "Yayından kaldırma talepleri gizli tutulamaz. Bir kaldırma talebi göndererek, talebinizin tamamını web sitelerimizde ve / veya sorun izleyicilerimizde yayınlamamıza otomatik olarak izin vermiş olursunuz. Buna ihtiyacımız var çünkü tüm süreçlerimiz herkese açık olarak yürütülmekte ve kullanıcılarımıza karşı hesap verebilirliğimizi korumaktayız." #. type: Title ## #: _docs/Take-Down_Requests.md #, no-wrap msgid "Transparency reporting" msgstr "Şeffaflık raporlaması" #. type: Plain text #: _docs/Take-Down_Requests.md msgid "All take-down requests we receive regarding apps on the official f-droid.org repository are transparently disclosed in our [issue tracker](https://gitlab.com/fdroid/fdroiddata/-/issues?scope=all&state=all&label_name[]=Takedown%20Request) and [merge-request tracker](https://gitlab.com/fdroid/fdroiddata/-/merge_requests?scope=all&state=all&label_name[]=Takedown%20Request) under the `Takedown Request` label." msgstr "Resmi f-droid.org deposundaki uygulamalarla ilgili aldığımız tüm kaldırma talepleri, `Takedown Request` etiketi altında [issue tracker](https://gitlab.com/fdroid/fdroiddata/-/issues?scope=all&state=all&label_name[]=Takedown%20Request) ve [merge-request tracker](https://gitlab.com/fdroid/fdroiddata/-/merge_requests?scope=all&state=all&label_name[]=Takedown%20Request) adreslerimizde şeffaf bir şekilde açıklanmaktadır." #. type: Title ## #: _docs/Take-Down_Requests.md #, no-wrap msgid "3rd party repositories" msgstr "3. taraf depolar" #. type: Plain text #: _docs/Take-Down_Requests.md msgid "Third party repositories are not under our control what so ever. If you think a 3rd party repository is violating your rights you will have to get in contact with their respective operators. Procedures described here apply exclusively to f-droid.org." msgstr "Üçüncü taraf depolar hiçbir zaman kontrolümüz altında değildir. Bir 3. taraf deposunun haklarınızı ihlal ettiğini düşünüyorsanız, ilgili operatörleriyle iletişime geçmeniz gerekecektir. Burada açıklanan prosedürler yalnızca f-droid.org için geçerlidir." #. type: YAML Front Matter: title #: _docs/Translation_and_Localization.md #, no-wrap msgid "Translation and Localization" msgstr "Çeviri ve Yerelleştirme" #. type: Plain text #: _docs/Translation_and_Localization.md msgid "Every piece of F-Droid can be localized, including the Android app, the entire website, and the tools. That means that all of the texts can be translated into any language supported by Android. F-Droid will also use localized formats for numbers, currency, dates, etc. which happens automatically based on the language and country specified in the device's settings. All of the F-Droid resources are available for translation on [Weblate \"components\"](https://hosted.weblate.org/projects/f-droid/) that are each managed separately, based on technical requirements." msgstr "Android uygulaması, web sitesinin tamamı ve araçlar dahil olmak üzere F-Droid'in her parçası yerelleştirilebilir. Bu, tüm metinlerin Android tarafından desteklenen herhangi bir dile çevrilebileceği anlamına gelir. Ayrıca F-Droid, cihazın ayarlarında belirtilen dil ve ülkeye göre otomatik olarak gerçekleşen sayılar, para birimi, tarihler vb. için yerelleştirilmiş formatlar kullanacaktır. Tüm F-Droid kaynakları, teknik gereksinimlere göre her biri ayrı ayrı yönetilen [Weblate \"bileşenleri\"](https://hosted.weblate.org/projects/f-droid/) üzerinden çevrilebilir." #. type: Plain text #: _docs/Translation_and_Localization.md msgid "If an app's source code repo includes app descriptions, then those will be automatically included as long as they use the [supported layouts](../All_About_Descriptions_Graphics_and_Screenshots). If there are any issues with missing translations or broken localized formats, please [file an issue](https://gitlab.com/groups/fdroid/issues) so it can be fixed." msgstr "Bir uygulamanın kaynak kodu deposunda uygulama açıklamaları varsa, [desteklenen düzenleri](../All_About_Descriptions_Graphics_and_Screenshots) kullandıkları sürece bunlar otomatik olarak dahil edilecektir. Eksik çeviriler veya bozuk yerelleştirilmiş biçimlerle ilgili herhangi bir sorun varsa, düzeltilmesi için lütfen [bir konu açın](https://gitlab.com/groups/fdroid/issues)." #. type: Title ## #: _docs/Translation_and_Localization.md #, no-wrap msgid "Contributing" msgstr "Katkıda Bulunmak" #. type: Plain text #: _docs/Translation_and_Localization.md msgid "Is F-Droid not in your language, or the translation is incorrect or incomplete? Get involved in the translations on [our Weblate](https://hosted.weblate.org/projects/f-droid/)." msgstr "F-Droid sizin dilinizde mevcut değil mi veya çevirisi yanlış ya da eksik mi? [Weblate](https://hosted.weblate.org/projects/f-droid/) adresindeki çevirilerde yer alın." #. type: Plain text #: _docs/Translation_and_Localization.md msgid "All translation work is done in Weblate to keep the workflow easy. We recommend that translators use a [GitLab](https://gitlab.com) account for logging into Weblate since that same account can be used on all of the F-Droid projects on GitLab. you can find other translators on the [forum](https://forum.f-droid.org/c/translation)." msgstr "İş akışını kolaylaştırmak için tüm çeviri işleri Weblate'te yapılır. Çevirmenlerin Weblate'e giriş yapmak için bir [GitLab](https://gitlab.com) hesabı kullanmalarını öneririz, çünkü aynı hesap GitLab'daki tüm F-Droid projelerinde kullanılabilir. Diğer çevirmenleri [forum](https://forum.f-droid.org/c/translation) adresinde bulabilirsiniz." #. type: Title ### #: _docs/Translation_and_Localization.md #, no-wrap msgid "Adding a new language" msgstr "Yeni bir dil eklemek" #. type: Plain text #: _docs/Translation_and_Localization.md msgid "First and foremost, Android must [already support](https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/locale_config.xml) the specific language and locale you want to add. We cannot work with languages that Android and the SDK do not support, the tools simply break down. Next, if you are considering adding a country-specific variant of a language (e.g. _de-AT_), first make sure that the main language is well maintained (e.g. _de_). Your contribution might be useful to more people if you contribute to the existing version of your language rather than the country-specific variant." msgstr "İlk ve en önemlisi, Android'in eklemek istediğiniz belirli dili ve yerel ayarı [zaten desteklemesi](https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/locale_config.xml) gerekir. Android'in ve SDK'nın desteklemediği dillerle çalışamayız, araçlar basitçe bozulur. Daha sonra, bir dilin ülkeye özgü bir varyantını eklemeyi düşünüyorsanız (örneğin _de-AT_), önce ana dilin iyi korunduğundan emin olun (örneğin _de_). Ülkeye özgü varyant yerine dilinizin mevcut sürümüne katkıda bulunursanız, katkınız daha fazla insan için yararlı olabilir." #. type: Plain text #: _docs/Translation_and_Localization.md msgid "For [_fdroidclient_](https://hosted.weblate.org/projects/f-droid/f-droid/), [_fdroidserver_](https://hosted.weblate.org/projects/f-droid/fdroidserver/) and [_Repomaker_](https://hosted.weblate.org/projects/f-droid/repomaker), anyone can create a new language via Weblate. For the rest of the translation \"components\" on Weblate, please [file an admin issue](https://gitlab.com/fdroid/admin/issues) to request a new language." msgstr "[_fdroidclient_](https://hosted.weblate.org/projects/f-droid/f-droid/), [_fdroidserver_](https://hosted.weblate.org/projects/f-droid/fdroidserver/) ve [_Repomaker_](https://hosted.weblate.org/projects/f-droid/repomaker) için herkes Weblate aracılığıyla yeni bir dil oluşturabilir. Weblate'teki çeviri \"bileşenlerinin\" geri kalanı için, yeni bir dil talep etmek üzere lütfen [bir yönetici sorunu oluşturun](https://gitlab.com/fdroid/admin/issues)." #. type: Title ### #: _docs/Translation_and_Localization.md #, no-wrap msgid "When translations are included" msgstr "Çeviriler dahil edilirken" #. type: Plain text #: _docs/Translation_and_Localization.md msgid "The translation files are included from Weblate before each release. There are varying conditions for when the translations are included, based on the limitations of each platform." msgstr "Çeviri dosyaları her sürümden önce Weblate'ten eklenir. Her platformun sınırlamalarına bağlı olarak çevirilerin ne zaman dahil edileceğine ilişkin farklı koşullar vardır." #. type: Title #### #: _docs/Translation_and_Localization.md #, no-wrap msgid "Android app" msgstr "Android uygulaması" #. type: Plain text #: _docs/Translation_and_Localization.md msgid "As a general rule, a translation must be at least 70% complete for it to be included in a final release. For alpha releases, we try to include all translations, no matter how incomplete." msgstr "Genel bir kural olarak, bir çevirinin nihai bir sürüme dahil edilebilmesi için en az %70 oranında tamamlanmış olması gerekir. Alfa sürümleri için, ne kadar eksik olursa olsun tüm çevirileri dahil etmeye çalışıyoruz." #. type: Title #### #: _docs/Translation_and_Localization.md #, no-wrap msgid "App summaries" msgstr "Uygulama özetleri" #. type: Plain text #: _docs/Translation_and_Localization.md msgid "_f-droid.org_ makes the one line summaries for many apps [available for translation](https://hosted.weblate.org/projects/f-droid/fdroiddata/). The goal is to make it possible to have sections where only a single language is show, like the Latest Tab or the website sidebar. These are imported on a rolling basis, at least once a month." msgstr "_f-droid.org_ birçok uygulama için tek satırlık özetleri [çeviri için kullanılabilir](https://hosted.weblate.org/projects/f-droid/fdroiddata/) hale getirir. Amaç, son sekme veya web sitesi kenar çubuğu gibi yalnızca tek bir dilin gösterildiği bölümlere sahip olmayı mümkün kılmaktır. Bunlar ayda en az bir kez olmak üzere düzenli olarak içe aktarılmaktadır." #. type: Title #### #: _docs/Translation_and_Localization.md #, no-wrap msgid "f-droid.org website" msgstr "f-droid.org web sitesi" #. type: Plain text #: _docs/Translation_and_Localization.md msgid "For the f-droid.org website, it is a much more complicated system. Each time the website is updated, thousands of pages must be regenerated per-locale. Since this setup [cannot](https://gitlab.com/groups/fdroid/-/milestones/6) support lots of languages, we have to put stricter requirements on it. The core strings must be fully translated to be included. They also must be maintained in order to stay included. The documentation and tutorials are very useful to have translated. The blog posts are the least important. Each page must be fully translated before the translated version will be shown, otherwise, the site will show the original English." msgstr "f-droid.org web sitesi için bu çok daha karmaşık bir sistemdir. Web sitesi her güncellendiğinde, binlerce sayfanın her lokal için yeniden oluşturulması gerekiyor. Bu kurulum çok sayıda dili [destekleyemediğinden](https://gitlab.com/groups/fdroid/-/milestones/6), daha katı gereklilikler koymak zorundayız. Çekirdek dizgilerin dahil edilebilmesi için tamamen çevrilmiş olması gerekir. Ayrıca dahil edilmek için bakımları da yapılmalıdır. Belgelerin ve öğreticilerin çevrilmesi çok yararlıdır. Blog yazıları en az öneme sahiptir. Çevrilmiş sürüm gösterilmeden önce her sayfa tamamen çevrilmelidir, aksi takdirde site orijinal dili (İngilizce) gösterecektir." #. type: Plain text #: _docs/Translation_and_Localization.md msgid "In order for a new language to be added to f-droid.org, it must have:" msgstr "Yeni bir dilin f-droid.org'a eklenebilmesi için aşağıdakilere sahip olması gerekir:" #. type: Bullet: '* ' #: _docs/Translation_and_Localization.md msgid "[Website](https://hosted.weblate.org/projects/f-droid/website) component: 100% translated" msgstr "[Web sitesi](https://hosted.weblate.org/projects/f-droid/website) bileşen: %100 çevrildi" #. type: Bullet: '* ' #: _docs/Translation_and_Localization.md msgid "[Website Pages](https://hosted.weblate.org/projects/f-droid/website-pages/) component: 100% translated" msgstr "[Web Sitesi Sayfaları](https://hosted.weblate.org/projects/f-droid/website-pages/) bileşen: %100 çevrildi" #. type: Bullet: '* ' #: _docs/Translation_and_Localization.md msgid "[Data](https://hosted.weblate.org/projects/f-droid/fdroiddata) component: at least 10% translated" msgstr "[Veri](https://hosted.weblate.org/projects/f-droid/fdroiddata) bileşeni: en az %10 çevrildi" #. type: Plain text #: _docs/Translation_and_Localization.md msgid "There is a [nightly build of the website](https://staging.f-droid.org) that includes all translations on Weblate, no matter how complete they are. This lets everyone see the progress, and means we can get new languages working well before launching them." msgstr "Weblate'teki tüm çevirileri, ne kadar tamamlanmış olurlarsa olsunlar içeren bir [web sitesinin gece derlemesi](https://staging.f-droid.org) var. Bu derleme, herkesin ilerlemeyi görmesini sağlar ve yeni dilleri başlatmadan önce iyi çalışmasını sağlayabileceğimiz anlamına gelir." #. type: Title ## #: _docs/Translation_and_Localization.md #, no-wrap msgid "The old \"Languages\" preference" msgstr "Eski \"Diller\" tercihi" #. type: Plain text #: _docs/Translation_and_Localization.md msgid "There are cases where having English as the fallback language is not helpful. For example, much of the world would prefer to fall back to Chinese, Spanish, or Russian instead of English. On Android 6.0 and older, F-Droid provides a \"Languages\" setting inside the app so that users can switch F-Droid to a different language. Note that this might not handle localized format properly, just the language. Android 7.0 fixed this by allowing users to specify a list of language+country \"locales\", ordered by importance to the user." msgstr "İngilizce'nin yedek dil olarak kullanılmasının yararlı olmadığı durumlar vardır. Örneğin, dünyanın büyük bir kısmı İngilizce yerine Çince, İspanyolca veya Rusça'ya geri dönmeyi tercih eder. Android 6.0 ve daha eski sürümlerde F-Droid, kullanıcıların F-Droid'i farklı bir dile geçirebilmeleri için uygulama içinde bir \"Diller\" ayarı sağlar. Bunun yerelleştirilmiş formatı düzgün bir şekilde işlemeyebileceğini, sadece dili işleyebileceğini unutmayın. Android 7.0, kullanıcıların kullanıcı için önem sırasına göre dil+ülke \"yerel ayarlarının\" bir listesini belirlemelerine olanak tanıyarak bu sorunu çözmüştür." #. type: YAML Front Matter: title #: _docs/Update_Processing.md #, no-wrap msgid "Update Processing" msgstr "" #. type: Plain text #: _docs/Update_Processing.md msgid "The F-Droid tools can automatically detect and build updates to apps and packages." msgstr "" #. type: Title ### #: _docs/Update_Processing.md #, no-wrap msgid "Detecting" msgstr "" #. type: Plain text #: _docs/Update_Processing.md msgid "There are various mechanisms in place for automatically detecting that updates are available for applications, with the _UpdateCheckMode_ field in the metadata determining which method is used for a particular application." msgstr "" #. type: Plain text #: _docs/Update_Processing.md msgid "Running the `fdroid checkupdates` command will apply this method to each application in the repository and update the _CurrentVersion_ and _CurrentVersionCode_ fields in the metadata accordingly." msgstr "" #. type: Plain text #: _docs/Update_Processing.md msgid "As usual, the `-p` option can be used with this, to restrict processing to a particular application." msgstr "" #. type: Plain text #: _docs/Update_Processing.md msgid "Note that this only updates the metadata such that we know what the current published/recommended version is. It doesn’t make that version available in the repository - for that, see the next section." msgstr "" #. type: Title ### #: _docs/Update_Processing.md #, no-wrap msgid "Adding" msgstr "" #. type: Plain text #: _docs/Update_Processing.md msgid "Adding updates (i.e. new versions of applications already included in the repository) happens in two ways. The simple case is applications where the APK files are binaries, retrieved from a developer’s published build. In this case, all that’s required is to place the new binary in the _Repo_ directory, and the next run of `fdroid update` will pick it up." msgstr "" #. type: Plain text #: _docs/Update_Processing.md msgid "For applications built from source, it is necessary to add a new `Build Version` line to the metadata file. At the very least, the version name, version code and commit will be different. It is also possible that the additional build flags will change between versions." msgstr "" #. type: Plain text #: _docs/Update_Processing.md msgid "For processing multiple updates in the metadata at once, it can be useful to run `fdroid update --interactive`. This will check all the applications in the repository, and where updates are required you will be prompted to \\[E\\]dit the metadata, \\[I\\]gnore the update, or \\[Q\\]uit altogether." msgstr "" #. type: YAML Front Matter: title #: _docs/Verification_Server.md #, no-wrap msgid "Verification Server" msgstr "" #. type: Plain text #: _docs/Verification_Server.md msgid "The idea of a [verification server](https://verification.f-droid.org) is to automatically reproduce official releases published by f-droid.org (or any other server). This ensures that everything in the release APK came from the source code, and nothing was inserted or included during the build process. This is also useful for verifying that the build process is not including proprietary libraries." msgstr "" #. type: Plain text #: _docs/Verification_Server.md msgid "The ultimate goal is a simple installation that any third party can make, that will continuously check for new published packages, make its own builds, and confirm that the binaries match exactly. There are many issues to resolve to get to this final destination, but the basic concept is already tested and working. (see the 'fdroid verify' command)." msgstr "" #. type: Plain text #: _docs/Verification_Server.md msgid "The output of multiple verification servers would then be available to the F-Droid client. The idea would be to configure the client such that it does not trust a binary until multiple verification servers are in agreement that it correct." msgstr "" #. type: Title ## #: _docs/Verification_Server.md #, no-wrap msgid "Verification based on APK signature" msgstr "" #. type: Plain text #: _docs/Verification_Server.md msgid "The verification process currently works by building a new unsigned APK, then copying the APK signature from the existing APK into the newly built unsigned APK. If the APK signature verifies, then the APK has been reproduced, and is marked as verified. If not, a [diffoscope](https://diffoscope.org) log is generated to show what the differences are between the two builds. The verification server needs no signing capability, just building." msgstr "" #. type: Title ## #: _docs/Verification_Server.md #, no-wrap msgid "Setting one up" msgstr "" #. type: Plain text #: _docs/Verification_Server.md msgid "This is still pretty raw, so expect some tinkering. It also will likely only work on Debian, Ubuntu and other Debian-derivatives. The first step is getting the [_fdroidserver_ tools setup](../Installing_the_Server_and_Repo_Tools) and working. Run the _fdroidserver_ tools directly out of git (e.g. `~/code/fdroidserver/fdroid build org.adaway`), that's going to be the easiest for now since the verification server stuff is a moving target. The base server needs to be at minimum Debian/jessie, or there will need to be some heavy tweaking. If you run Ubuntu or derivative distro, you can get any packages missing from your version, like _vagrant-cachier_, from this PPA: " msgstr "" #. type: Plain text #: _docs/Verification_Server.md msgid "Then you can find more on the process by reading [Build Server Setup](../Build_Server_Setup). You can also see the Continuous Integration scripts for this process to see how the whole thing can work:" msgstr "" #. type: Plain text #: _docs/Verification_Server.md msgid "- - " msgstr "" #. type: YAML Front Matter: title #: _docs/Whitelabel_Builds.md #, no-wrap msgid "Whitelabel Builds" msgstr "" #. type: Plain text #: _docs/Whitelabel_Builds.md msgid "F-Droid can be rebranded and embedded in Android ROMs, building upon F-Droid as the \"white-label\" version. This is a basic introduction for how to do that. For this, [\"_gradle_ flavors\"](https://developer.android.com/studio/build/build-variants.html) are used for building rebranded, configured versions of F-Droid." msgstr "" #. type: Plain text #: _docs/Whitelabel_Builds.md msgid "Starting in *app/build.gradle*, set the package names and create a _flavorDimension_ and _productFlavors_:" msgstr "" #. type: Fenced code block (gradle) #: _docs/Whitelabel_Builds.md #, no-wrap msgid "" "def fullApplicationId = \"com.mycompany.full\"\n" "def basicApplicationId = \"com.mycompany.basic\"\n" "// yes, this actually needs both quotes https://stackoverflow.com/a/41391841\n" "def privilegedExtensionApplicationId = '\"com.mycompany.privileged\"'\n" "\n" "\n" "[snip]\n" "\n" "\n" "android {\n" " flavorDimensions \"base\", \"mycompany\"\n" " productFlavors {\n" " mycompany {\n" " dimension \"mycompany\"\n" " }\n" " }\n" "}\n" msgstr "" #. type: Plain text #: _docs/Whitelabel_Builds.md msgid "Then *gradle* will automatically look at whole set of folders for custom versions of files:" msgstr "" #. type: Bullet: '* ' #: _docs/Whitelabel_Builds.md msgid "Java sources: _app/src/mycompany/java_" msgstr "" #. type: Bullet: '* ' #: _docs/Whitelabel_Builds.md msgid "Manifest file: _app/src/mycompany/AndroidManifest.xml_" msgstr "" #. type: Bullet: '* ' #: _docs/Whitelabel_Builds.md msgid "Android resources: _app/src/mycompany/res_" msgstr "" #. type: Bullet: '* ' #: _docs/Whitelabel_Builds.md msgid "Assets: _app/src/mycompany/assets_" msgstr "" #. type: Plain text #: _docs/Whitelabel_Builds.md msgid "There cannot be duplicate Java classes, but any extensions can be managed there. For anything in _res/_, i.e. _strings.xml_ or drawable resources, the files in _app/src/mycompany/res_ will take precedence over the default F-Droid ones. For example, override the app icon by providing _app/src/mycompany/res/drawable/ic\\_launcher.xml_." msgstr "" #. type: Plain text #: _docs/Whitelabel_Builds.md msgid "To specify a custom set of app repositories, provide _app/src/mycompany/res/values/default\\_repos.xml_. The format of that file is a String array, with sets of 8 elements per repo. For example, here's the Guardian Project repo config enabled by default with push request always accepted by the client:" msgstr "" #. type: Fenced code block (xml) #: _docs/Whitelabel_Builds.md #, no-wrap msgid "" " \n" " Guardian Project\n" " \n" " https://guardianproject.info/fdroid/repo\n" " \n" " \n" " The official app repository of The Guardian\n" " Project. Applications in this repository are official\n" " binaries build by the original application developers and\n" " signed by the same key as the APKs that are released in the\n" " Google Play store.\n" " \n" " \n" " 13\n" " \n" " 1\n" " \n" " 10\n" " \n" " always\n" " \n" " \n" " 308205d8308203c0020900a397b4da7ecda034300d06092a864886f70d01010505003081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f301e170d3134303632363139333931385a170d3431313131303139333931385a3081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f30820222300d06092a864886f70d01010105000382020f003082020a0282020100b3cd79121b9b883843be3c4482e320809106b0a23755f1dd3c7f46f7d315d7bb2e943486d61fc7c811b9294dcc6b5baac4340f8db2b0d5e14749e7f35e1fc211fdbc1071b38b4753db201c314811bef885bd8921ad86facd6cc3b8f74d30a0b6e2e6e576f906e9581ef23d9c03e926e06d1f033f28bd1e21cfa6a0e3ff5c9d8246cf108d82b488b9fdd55d7de7ebb6a7f64b19e0d6b2ab1380a6f9d42361770d1956701a7f80e2de568acd0bb4527324b1e0973e89595d91c8cc102d9248525ae092e2c9b69f7414f724195b81427f28b1d3d09a51acfe354387915fd9521e8c890c125fc41a12bf34d2a1b304067ab7251e0e9ef41833ce109e76963b0b256395b16b886bca21b831f1408f836146019e7908829e716e72b81006610a2af08301de5d067c9e114a1e5759db8a6be6a3cc2806bcfe6fafd41b5bc9ddddb3dc33d6f605b1ca7d8a9e0ecdd6390d38906649e68a90a717bea80fa220170eea0c86fc78a7e10dac7b74b8e62045a3ecca54e035281fdc9fe5920a855fde3c0be522e3aef0c087524f13d973dff3768158b01a5800a060c06b451ec98d627dd052eda804d0556f60dbc490d94e6e9dea62ffcafb5beffbd9fc38fb2f0d7050004fe56b4dda0a27bc47554e1e0a7d764e17622e71f83a475db286bc7862deee1327e2028955d978272ea76bf0b88e70a18621aba59ff0c5993ef5f0e5d6b6b98e68b70203010001300d06092a864886f70d0101050500038202010079c79c8ef408a20d243d8bd8249fb9a48350dc19663b5e0fce67a8dbcb7de296c5ae7bbf72e98a2020fb78f2db29b54b0e24b181aa1c1d333cc0303685d6120b03216a913f96b96eb838f9bff125306ae3120af838c9fc07ebb5100125436bd24ec6d994d0bff5d065221871f8410daf536766757239bf594e61c5432c9817281b985263bada8381292e543a49814061ae11c92a316e7dc100327b59e3da90302c5ada68c6a50201bda1fcce800b53f381059665dbabeeb0b50eb22b2d7d2d9b0aa7488ca70e67ac6c518adb8e78454a466501e89d81a45bf1ebc350896f2c3ae4b6679ecfbf9d32960d4f5b493125c7876ef36158562371193f600bc511000a67bdb7c664d018f99d9e589868d103d7e0994f166b2ba18ff7e67d8c4da749e44dfae1d930ae5397083a51675c409049dfb626a96246c0015ca696e94ebb767a20147834bf78b07fece3f0872b057c1c519ff882501995237d8206b0b3832f78753ebd8dcbd1d3d9f5ba733538113af6b407d960ec4353c50eb38ab29888238da843cd404ed8f4952f59e4bbc0035fc77a54846a9d419179c46af1b4a3b7fc98e4d312aaa29b9b7d79e739703dc0fa41c7280d5587709277ffa11c3620f5fba985b82c238ba19b17ebd027af9424be0941719919f620dd3bb3c3f11638363708aa11f858e153cf3a69bce69978b90e4a273836100aa1e617ba455cd00426847f\n" " \n" msgstr "" #. type: Title ### #: _docs/Whitelabel_Builds.md #, no-wrap msgid "Basic vs Full Product Flavors" msgstr "" #. type: Plain text #: _docs/Whitelabel_Builds.md msgid "F-Droid itself already has two flavors built-in: _basic_ and _full_. _full_ is the app known as _F-Droid_, while _basic_ is the most minimal possible version of the app that still provides the core app store functionality. Since those are in a separate _flavorDimension_, the added customizations will apply to both. Choosing which one to build is done by specifying the \"Build Variant\" in Android Studio, and the _gradle_ target, .e.g `./gradlew assembleMycompanyFullDebug`." msgstr "" #. type: Title ### #: _docs/Whitelabel_Builds.md #, no-wrap msgid "Customizations" msgstr "" #. type: Plain text #: _docs/Whitelabel_Builds.md msgid "When using gradle build flavors, it is very easy to customize any of the XML files. So this is the recommended way to start with customizing your build of F-Droid. Any XML file in _app/src/main/res_ can be overridden by placing an XML with the same name in _app/src/mycompany/res_." msgstr "" #. type: Title #### #: _docs/Whitelabel_Builds.md #, no-wrap msgid "Removing ActionBar/Menu Items" msgstr "" #. type: Plain text #: _docs/Whitelabel_Builds.md msgid "To hide things like \"Swap Apps\" or \"Repositories\", override _app/src/main/res/menu/main.xml_ by copying it into _app/src/mycompany/res/menu/main.xml_, and removing and/or customizing the items there." msgstr "" #. type: Title #### #: _docs/Whitelabel_Builds.md #, no-wrap msgid "Preferences" msgstr "" #. type: Plain text #: _docs/Whitelabel_Builds.md msgid "For a custom build that enables Automatic Updates by default, override _app/src/main/res/xml/preferences.xml_. You can customize the preferences and their default values in _app/src/mycompany/res/xml/preferences.xml_. The fully automatic update requires [Privileged Extension](https://gitlab.com/fdroid/privileged-extension). With regular access, the updates will only automatically download. The user still needs to click install on each one." msgstr ""