_docs.zh_Hant.po 395 KB
Newer Older
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1 2 3 4 5 6 7 8 9
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR Free Software Foundation, Inc.
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: team@f-droid.org\n"
10
"POT-Creation-Date: 2018-05-18 12:44+0200\n"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
11
"PO-Revision-Date: 2018-03-01 16:35+0000\n"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
12
"Last-Translator: ezjerry liao <ezjerry@gmail.com>\n"
13
"Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/f-droid/website-docs/zh_Hant/>\n"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
14 15 16 17 18
"Language: zh_Hant\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
19
"X-Generator: Weblate 2.20-dev\n"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
20 21

#. type: Title #
22
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
23 24
#, no-wrap
msgid "All About Descriptions, Graphics, and Screenshots"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
25
msgstr "所有關於說明、圖片和螢幕快照"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
26 27

#. type: Plain text
28
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
29
msgid "Each app can have complete app store content, including localized descriptions, feature graphics, and screenshots (as of v0.103 of the F-Droid client app and v0.8 of _fdroidserver_).  This is possible both when apps are added via [build metadata](../Build_Metadata_Reference) as well as when including pre-built files in a simple repository.  There are three paths to including app store content for apps (in order of preference):"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
30
msgstr "每個應用程式都可以有完整的應用程式商店內容,包括當地語系的說明,程式功能的圖片和螢幕快照 (如 F-Droid 的用戶端應用程式的 0.103 和 _fdroidserver_ 的 v0.8)。這可以透過[構建中介資料](../Build_Metadata_Reference)新增在應用程式,以及將預先構建的檔案包含在一個簡單的軟體庫。有這三種途徑可以把應用程式的內容,納入 app 商店(按優先順序):"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
31 32

#. type: Plain text
33
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
34 35
#: build/_docs/md/Build_Server_Setup.md build/_docs/md/FAQ_-_App_Developers.md
#: build/_docs/md/FAQ_-_Client.md build/_docs/md/FAQ_-_General.md
36 37
#: build/_docs/md/Installing_the_Server_and_Repo_Tools.md
#: build/_docs/md/Setup_an_F-Droid_App_Repo.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
38 39 40 41 42 43 44 45 46
#, no-wrap
msgid ""
"* Do not remove this line (it will not be displayed)\n"
"{:toc}\n"
msgstr ""
"* 不要移除這一行 (它不會顯示)\n"
"{:toc}\n"

#. type: Plain text
47
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
48 49 50 51
msgid "There are two data formats:"
msgstr "有兩種資料格式:"

#. type: Bullet: '* '
52
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
53 54 55 56
msgid "descriptive materials in plain text or HTML"
msgstr "純文字或 HTML 的說明素材"

#. type: Bullet: '* '
57
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
58
msgid "graphics and screenshots as PNG or JPEG files"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
59
msgstr "圖片和螢幕快照為 PNG 或 JPEG 圖檔"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
60

61 62
#. type: Plain text
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
63
msgid "One important detail: 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 can also mean that the images are recompressed."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
64
msgstr "一個重要細節:危險和不必要的中介資料會先從影像檔中剝除,然後再被納入在軟體庫中。例如,JPEG EXIF 資料有[安全問題](https://threatpost.com/google-shuts-down-potentially-massive-android-bug/120393/),並且無需顯示圖像。這也可能意味著圖像是被重新壓縮過。"
65

Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
66
#. type: Title ##
67
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
68 69
#, no-wrap
msgid "In the app's source repository"
70
msgstr "在應用程式的來源軟體庫中"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
71 72

#. type: Plain text
73
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
74
msgid "There are two options for including the app store materials in an app's source repository: [fastlane supply](https://github.com/fastlane/fastlane/blob/2.28.7/supply/README.md#images-and-screenshots)  and [Triple-T Gradle Play Publisher](https://github.com/Triple-T/gradle-play-publisher#play-store-metadata).  Both of these are free software tools that integrate into an Android developer's workflow.  Once the files are included in the app's source repo, and those files are included in a tagged release of the app, F-Droid will include all those files."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
75 76 77
msgstr ""

#. type: Plain text
78
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
79
msgid "In the end, it is not actually necessary to actually install or use either _fastlane supply_ nor _Gradle Play Publisher_.  F-Droid includes these files purely based on the standard file layout that those tools use."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
80 81
msgstr ""

82 83
#. type: Plain text
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
84
msgid "All the localized descriptions and graphics will automatically show up in the F-Droid repo once they are available in the source repo of a release that the repo builds.  For example, if these files are included in a _git_ repo's _master_ branch but not yet in a tagged release, they will not be included."
85 86 87 88
msgstr ""

#. type: Plain text
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
89
msgid "The last important detail is that the texts in the app's metadata file will override all other descriptive texts from _Fastlane_/_Triple-T_. That is specifically [Name](../Build_Metadata_Reference/#Name)/[AutoName](../Build_Metadata_Reference/#AutoName), [Summary](../Build_Metadata_Reference/#Summary), and [Description](../Build_Metadata_Reference/#Description).  Once an app's descriptive texts have been moved into the source repo, then 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."
90 91
msgstr ""

Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
92
#. type: Title ##
93
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
94 95 96 97 98
#, no-wrap
msgid "In the app's build metadata in an _fdroiddata_ collection"
msgstr ""

#. type: Plain text
99
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
100
msgid "All the app store materials can also be added to any _fdroiddata_ repository of build metadata.  This follows a file layout modeled after [fastlane supply](https://github.com/fastlane/fastlane/blob/2.28.7/supply/README.md#images-and-screenshots), modified to fit into the _fdroiddata_ workflow.  Any files in this layout will be copied into the repo and added to the repo's index file by `fdroid update`."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
101 102 103
msgstr ""

#. type: Plain text
104
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
#, no-wrap
msgid ""
"```\n"
"- <fdroiddata>/\n"
"  └── metadata/\n"
"      └── <package-id>/\n"
"          └── <locale>/\n"
"              ├── full_description.txt\n"
"              ├── short_description.txt\n"
"              ├── title.txt\n"
"              ├── video.txt\n"
"              ├── images/\n"
"              │   ├── featureGraphic.png\n"
"              │   ├── icon.png\n"
"              │   ├── promoGraphic.png\n"
"              │   └── tvBanner.png\n"
"              ├── changelogs/\n"
"              │   ├── <version-code>.txt\n"
"              │   └── <version-code>.txt\n"
"              ├── phoneScreenshots/\n"
"              │   └── *.png\n"
"              ├── sevenInchScreenshots/\n"
"              │   └── *.png\n"
"              ├── tenInchScreenshots/\n"
"              │   └── *.png\n"
"              ├── tvScreenshots/\n"
"              │   └── *.png\n"
"              └── wearScreenshots/\n"
"                  └── *.png\n"
"```\n"
msgstr ""
"```\n"
"- <fdroiddata>/\n"
"  └── metadata/\n"
"      └── <package-id>/\n"
"          └── <locale>/\n"
"              ├── full_description.txt\n"
"              ├── short_description.txt\n"
"              ├── title.txt\n"
"              ├── video.txt\n"
"              ├── images/\n"
"              │   ├── featureGraphic.png\n"
"              │   ├── icon.png\n"
"              │   ├── promoGraphic.png\n"
"              │   └── tvBanner.png\n"
"              ├── changelogs/\n"
"              │   ├── <version-code>.txt\n"
"              │   └── <version-code>.txt\n"
"              ├── phoneScreenshots/\n"
"              │   └── *.png\n"
"              ├── sevenInchScreenshots/\n"
"              │   └── *.png\n"
"              ├── tenInchScreenshots/\n"
"              │   └── *.png\n"
"              ├── tvScreenshots/\n"
"              │   └── *.png\n"
"              └── wearScreenshots/\n"
"                  └── *.png\n"
"```\n"

165 166 167
#. type: Plain text
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
msgid "Example:"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
168
msgstr "例如:"
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188

#. type: Plain text
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
#, no-wrap
msgid ""
"* .../ToGoZip/app/...\n"
"  * the sourcecode for the android app ToGoZip\n"
"* [.../ToGoZip/fastlane/metadata/android/en-US/full_description.txt](https://github.com/k3b/ToGoZip/blob/master/fastlane/metadata/android/en-US/full_description.txt)\n"
"  * contains the (us-) english description of the app ToGoZip.\n"
"* [.../ToGoZip/fastlane/metadata/android/de-DE/full_description.txt](https://github.com/k3b/ToGoZip/blob/master/fastlane/metadata/android/de-DE/full_description.txt)\n"
"  * contains the german description of the app ToGoZip.\n"
"* [.../ToGoZip/fastlane/metadata/android/en-US/changelogs/9.txt](https://github.com/k3b/ToGoZip/blob/master/fastlane/metadata/android/en-US/changelogs/9.txt)\n"
"  * contains description of the changes made in versionCode **9**\n"
"  * in fdroid app this will be shown above the app description\n"
"* .../ToGoZip/fastlane/metadata/android/en-US/images/featureGraphic.png \n"
"  * this image will be shown on top of the fdroid-s app description\n"
"* .../ToGoZip/fastlane/metadata/android/en-US/images/phoneScreenshots/....\n"
"  * images in this folder will be shown below the fdroid-s app description\n"
msgstr ""

Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
189
#. type: Title ##
190
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
191 192 193 194 195
#, no-wrap
msgid "Directly in the F-Droid repo"
msgstr ""

#. type: Plain text
196
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
197
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.  If graphics files are also in the app's source or _fdroiddata_, then the files directly in the repo will be overwritten.  The text files from the _fastlane_ layout are ignored if they are in the repo."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
198 199 200
msgstr ""

#. type: Plain text
201
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224
#, no-wrap
msgid ""
"```\n"
"- fdroid/\n"
"  └── repo/\n"
"      └── <package-id>/\n"
"          └── <locale>/\n"
"              ├── featureGraphic.png\n"
"              ├── icon.png\n"
"              ├── promoGraphic.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"
"```\n"
msgstr ""
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244
"```\n"
"- fdroid/\n"
"  └── repo/\n"
"      └── <package-id>/\n"
"          └── <locale>/\n"
"              ├── featureGraphic.png\n"
"              ├── icon.png\n"
"              ├── promoGraphic.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"
"```\n"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
245 246

#. type: Plain text
247
#: build/_docs/md/All_About_Descriptions_Graphics_and_Screenshots.md
248
msgid "`fdroid update` adds all the graphics files it finds in the repo to the index.  `fdroid server update` will sync all of the files in the repo to the various locations where the repo is actually hosted."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
249 250 251
msgstr ""

#. type: Title #
252
#: build/_docs/md/Building_Applications.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
253 254
#, no-wrap
msgid "Building Applications"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
255
msgstr "構建應用程式"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
256 257

#. type: Plain text
258
#: build/_docs/md/Building_Applications.md
259
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
260 261 262
msgstr ""

#. type: Plain text
263
#: build/_docs/md/Building_Applications.md
264
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:"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
265 266 267
msgstr ""

#. type: Bullet: '1.  '
268
#: build/_docs/md/Building_Applications.md
269
msgid "The source code (either for a particular version, or even all versions!) is unavailable or incomplete."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
270 271 272
msgstr ""

#. type: Bullet: '2.  '
273
#: build/_docs/md/Building_Applications.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
274 275 276 277
msgid "The source code is not capable of producing the actual binary supplied."
msgstr ""

#. type: Bullet: '3.  '
278
#: build/_docs/md/Building_Applications.md
279
msgid "The ’source code’ contains binary files of unknown origin, or with proprietary licenses."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
280 281 282
msgstr ""

#. type: Plain text
283
#: build/_docs/md/Building_Applications.md
284
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
285 286 287
msgstr ""

#. type: Plain text
288
#: build/_docs/md/Building_Applications.md
289
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
290 291 292
msgstr ""

#. type: Plain text
293
#: build/_docs/md/Building_Applications.md
294
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:"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
295 296 297
msgstr ""

#. type: Bullet: '1.  '
298
#: build/_docs/md/Building_Applications.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
299 300 301 302
msgid "Include Build entries in the metadata files."
msgstr ""

#. type: Bullet: '2.  '
303
#: build/_docs/md/Building_Applications.md
304
msgid "Run `fdroid build` to build any applications that are not already built."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
305 306 307
msgstr ""

#. type: Bullet: '3.  '
308
#: build/_docs/md/Building_Applications.md
309
msgid "Run `fdroid publish` to finalise packaging and sign any APKs that have been built."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
310 311 312
msgstr ""

#. type: Title ###
313
#: build/_docs/md/Building_Applications.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
314 315 316 317 318
#, no-wrap
msgid "App data directory aka _fdroiddata_"
msgstr ""

#. type: Plain text
319
#: build/_docs/md/Building_Applications.md
320
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:"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
321 322 323
msgstr ""

#. type: Plain text
324
#: build/_docs/md/Building_Applications.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
325 326 327 328
msgid "```bash git clone https://gitlab.com/fdroid/fdroiddata.git ```"
msgstr ""

#. type: Plain text
329
#: build/_docs/md/Building_Applications.md
330
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.py` in the data directory. You should do this by copying the example file (`./examples/config.py`) from the fdroidserver project to your data directory and then editing according to the instructions within."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
331 332 333
msgstr ""

#. type: Plain text
334
#: build/_docs/md/Building_Applications.md
335
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
336 337 338
msgstr ""

#. type: Plain text
339
#: build/_docs/md/Building_Applications.md
340
msgid "You can follow any command with `--help` to get a list of additional options available for that command."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
341 342 343
msgstr ""

#. type: Plain text
344
#: build/_docs/md/Building_Applications.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
345 346 347 348
msgid "```bash fdroid update --help ```"
msgstr ""

#. type: Title ###
349
#: build/_docs/md/Building_Applications.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
350 351 352 353 354
#, no-wrap
msgid "More about `fdroid build`"
msgstr ""

#. type: Plain text
355
#: build/_docs/md/Building_Applications.md
356
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:"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
357 358 359
msgstr ""

#. type: Plain text
360
#: build/_docs/md/Building_Applications.md
361
msgid "To build a single version of a single application, you could run the following:"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
362 363 364
msgstr ""

#. type: Plain text
365
#: build/_docs/md/Building_Applications.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
366 367 368 369
msgid "```bash fdroid build org.fdroid.fdroid:16 ```"
msgstr ""

#. type: Plain text
370
#: build/_docs/md/Building_Applications.md
371
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
372 373 374
msgstr ""

#. type: Plain text
375
#: build/_docs/md/Building_Applications.md
376
msgid "If the build above was successful, two files will have been placed in the `unsigned` directory:"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
377 378 379
msgstr ""

#. type: Plain text
380
#: build/_docs/md/Building_Applications.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
381 382 383 384
msgid "``` org.fdroid.fdroid_16.apk org.fdroid.fdroid_16_src.tar.gz ```"
msgstr ""

#. type: Plain text
385
#: build/_docs/md/Building_Applications.md
386
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
387 388 389
msgstr ""

#. type: Plain text
390
#: build/_docs/md/Building_Applications.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
391 392 393 394
msgid "If you were intending to publish these files, you could then run:"
msgstr ""

#. type: Plain text
395
#: build/_docs/md/Building_Applications.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
396 397 398 399
msgid "```bash fdroid publish ```"
msgstr ""

#. type: Plain text
400
#: build/_docs/md/Building_Applications.md
401
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
402 403 404
msgstr ""

#. type: Plain text
405
#: build/_docs/md/Building_Applications.md
406
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 by achieved by simply deleting the output files from `unsigned` after the build, but with the risk of forgetting to do so!"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
407 408 409
msgstr ""

#. type: Plain text
410
#: build/_docs/md/Building_Applications.md
411
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 `Build:` section."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
412 413 414
msgstr ""

#. type: Plain text
415
#: build/_docs/md/Building_Applications.md
416
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
417 418 419
msgstr ""

#. type: Plain text
420
#: build/_docs/md/Building_Applications.md
421
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
422 423 424
msgstr ""

#. type: Title ###
425
#: build/_docs/md/Building_Applications.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
426 427 428 429 430
#, no-wrap
msgid "Running `fdroid build` in your app’s source"
msgstr ""

#. type: Plain text
431
#: build/_docs/md/Building_Applications.md
432
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. This metadata file should be in the root of your source repo, and be called `.fdroid.json`, `.fdroid.xml`, `.fdroid.yaml`, or `.fdroid.txt`, depending on your preferred data format: JSON, XML, YAML, or F-Droid’s `.txt` format."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
433 434 435
msgstr ""

#. type: Plain text
436
#: build/_docs/md/Building_Applications.md
437
msgid "Once you have that setup, you can build the most recent version of the app using the whole F-Droid stack by running:"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
438 439 440
msgstr ""

#. type: Plain text
441
#: build/_docs/md/Building_Applications.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
442 443 444 445
msgid "```bash fdroid build ```"
msgstr ""

#. type: Plain text
446
#: build/_docs/md/Building_Applications.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
447 448 449 450
msgid "If you want to build every single version, then specify `--all`."
msgstr ""

#. type: Title ###
451
#: build/_docs/md/Building_Applications.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
452 453 454 455 456
#, no-wrap
msgid "Direct Installation"
msgstr ""

#. type: Plain text
457
#: build/_docs/md/Building_Applications.md
458
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
459 460 461
msgstr ""

#. type: Title #
462
#: build/_docs/md/Building_a_Signing_Server.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
463
#, no-wrap
464
msgid "Building a Signing Server"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
465 466 467
msgstr ""

#. type: Plain text
468
#: build/_docs/md/Building_a_Signing_Server.md
469
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 lifetype 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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
470 471
msgstr ""

472 473
#. type: Plain text
#: build/_docs/md/Building_a_Signing_Server.md
474
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
475 476
msgstr ""

477 478
#. type: Plain text
#: build/_docs/md/Building_a_Signing_Server.md
479
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
480 481
msgstr ""

482 483 484 485
#. type: Title ###
#: build/_docs/md/Building_a_Signing_Server.md
#, no-wrap
msgid "Automated Signing Server with with HSM"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
486 487
msgstr ""

488 489
#. type: Plain text
#: build/_docs/md/Building_a_Signing_Server.md
490
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
491 492 493
msgstr ""

#. type: Plain text
494
#: build/_docs/md/Building_a_Signing_Server.md
495
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
496 497 498
msgstr ""

#. type: Plain text
499
#: build/_docs/md/Building_a_Signing_Server.md
500
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
501 502
msgstr ""

503 504
#. type: Plain text
#: build/_docs/md/Building_a_Signing_Server.md
505
msgid "Other possibility it 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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
506 507
msgstr ""

508 509 510 511
#. type: Title ###
#: build/_docs/md/Building_a_Signing_Server.md
#, no-wrap
msgid "Basic laptop dedicated to signing"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
512 513
msgstr ""

514 515
#. type: Plain text
#: build/_docs/md/Building_a_Signing_Server.md
516
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
517 518 519
msgstr ""

#. type: Plain text
520
#: build/_docs/md/Building_a_Signing_Server.md
521
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
522 523
msgstr ""

524 525 526 527 528 529 530 531
#. type: Title ###
#: build/_docs/md/Building_a_Signing_Server.md
#, no-wrap
msgid "Fully offline signing laptop with USB thumb drives"
msgstr ""

#. type: Plain text
#: build/_docs/md/Building_a_Signing_Server.md
532
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, blacklisting 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."
533 534 535 536
msgstr ""

#. type: Plain text
#: build/_docs/md/Building_a_Signing_Server.md
537
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.  One essential utility is _apt-offline_, which automates the process of downloading Debian packages, verifying their signatures, and copying them over to an offline machine."
538 539 540 541
msgstr ""

#. type: Plain text
#: build/_docs/md/Building_a_Signing_Server.md
542
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."
543 544 545 546
msgstr ""

#. type: Bullet: '* '
#: build/_docs/md/Building_a_Signing_Server.md
547
msgid "Buy a computer off the shelf with cash, avoid having it shipped, especially across borders"
548 549 550 551
msgstr ""

#. type: Bullet: '* '
#: build/_docs/md/Building_a_Signing_Server.md
552
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"
553 554 555 556 557 558 559 560 561
msgstr ""

#. type: Bullet: '* '
#: build/_docs/md/Building_a_Signing_Server.md
msgid "Install a reproducibly built coreboot binary"
msgstr ""

#. type: Bullet: '* '
#: build/_docs/md/Building_a_Signing_Server.md
562
msgid "Install from a reproducibly built Debian image, wiping out Chrome OS entirely"
563 564 565 566 567 568 569 570 571 572
msgstr ""

#. type: Title ##
#: build/_docs/md/Building_a_Signing_Server.md
#, no-wrap
msgid "The Physical Environment"
msgstr ""

#. type: Plain text
#: build/_docs/md/Building_a_Signing_Server.md
573
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."
574 575 576 577
msgstr ""

#. type: Plain text
#: build/_docs/md/Building_a_Signing_Server.md
578
msgid "For high risk signing keys, using multiple layers of defense is important:"
579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607
msgstr ""

#. type: Bullet: '* '
#: build/_docs/md/Building_a_Signing_Server.md
msgid "Restricted physical access to HSMs or smart cards"
msgstr ""

#. type: Bullet: '* '
#: build/_docs/md/Building_a_Signing_Server.md
msgid "Security cameras"
msgstr ""

#. type: Bullet: '* '
#: build/_docs/md/Building_a_Signing_Server.md
msgid "Onsite security guards"
msgstr ""

#. type: Bullet: '* '
#: build/_docs/md/Building_a_Signing_Server.md
msgid "Visitor logging"
msgstr ""

#. type: Bullet: '* '
#: build/_docs/md/Building_a_Signing_Server.md
msgid "A tools-resistant server safe for online code-signing servers"
msgstr ""

#. type: Plain text
#: build/_docs/md/Building_a_Signing_Server.md
608
msgid "The signing server should be physically separate from the rest of the infrastructure.  And the logs, machine, and network should be periodically audited."
609 610 611 612 613 614 615 616 617 618
msgstr ""

#. type: Title ##
#: build/_docs/md/Building_a_Signing_Server.md
#, no-wrap
msgid "Difficult decisions"
msgstr ""

#. type: Plain text
#: build/_docs/md/Building_a_Signing_Server.md
619
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."
620 621 622 623 624 625 626 627 628 629
msgstr ""

#. type: Title #
#: build/_docs/md/Build_Metadata_Reference.md
#, no-wrap
msgid "Build Metadata Reference"
msgstr ""

#. type: Plain text
#: build/_docs/md/Build_Metadata_Reference.md
630
msgid "Information used by `fdroid update` to compile the public index comes from several sources:"
631 632 633 634 635 636 637 638 639 640 641 642 643 644
msgstr ""

#. type: Bullet: '* '
#: build/_docs/md/Build_Metadata_Reference.md
msgid "APK, media, etc files in the _repo_ sub-directory"
msgstr ""

#. type: Bullet: '* '
#: build/_docs/md/Build_Metadata_Reference.md
msgid "per-package \"metadata\" files in the _metadata_ sub-directory"
msgstr ""

#. type: Bullet: '* '
#: build/_docs/md/Build_Metadata_Reference.md
645 646
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 "[在地語系文字化和圖片](../All_About_Descriptions_Graphics_and_Screenshots#in-the-apps-build-metadata-in-an-fdroiddata-collection) 在 _metadata_ 子目錄中"
647 648 649

#. type: Bullet: '* '
#: build/_docs/md/Build_Metadata_Reference.md
650 651
msgid "localizable texts and graphics [embedded in an app's source code](../All_About_Descriptions_Graphics_and_Screenshots#in-the-apps-source-repository)"
msgstr "在地語系文字化和圖片[內嵌在應用程式的原始碼](../All_About_Descriptions_Graphics_and_Screenshots#in-the-apps-source-repository)"
652 653 654

#. type: Plain text
#: build/_docs/md/Build_Metadata_Reference.md
655
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."
656 657 658 659 660 661 662 663 664
msgstr ""

#. type: Plain text
#: build/_docs/md/Build_Metadata_Reference.md
msgid "There are three supported file types for metadata files:"
msgstr ""

#. type: Bullet: '* '
#: build/_docs/md/Build_Metadata_Reference.md
665
msgid "_.yml_ files in [YAML](http://www.yaml.org/start.html) format, used by f-droid.org"
666 667 668 669 670 671 672 673 674 675 676 677 678 679
msgstr ""

#. type: Bullet: '* '
#: build/_docs/md/Build_Metadata_Reference.md
msgid "_.txt_ files in the old, custom, F-Droid text-based format"
msgstr ""

#. type: Bullet: '* '
#: build/_docs/md/Build_Metadata_Reference.md
msgid "_.json_ files in [JSON](http://json.org/) format"
msgstr ""

#. type: Plain text
#: build/_docs/md/Build_Metadata_Reference.md
680
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:"
681 682 683
msgstr ""

#. type: Plain text
684
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
685 686 687 688
msgid "``` fdroid rewritemeta ```"
msgstr ""

#. type: Plain text
689
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
690 691 692 693
msgid "Or just run it on a specific app:"
msgstr ""

#. type: Plain text
694
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
695 696 697 698
msgid "``` fdroid rewritemeta org.adaway ```"
msgstr ""

#. type: Plain text
699
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
700 701 702 703
msgid "The following sections describe the fields recognised within the file."
msgstr ""

#. type: Plain text
704
#: build/_docs/md/Build_Metadata_Reference.md
705 706
msgid "- [Categories](#Categories)  - [Author Name](#Author-Name)  - [Author Email](#Author-Email)  - [License](#License)  - [Auto Name](#Auto-Name)  - [Name](#Name)  - [Provides](#Provides)  - [Web Site](#Web-Site)  - [Source Code](#Source-Code)  - [Issue Tracker](#Issue-Tracker)  - [Changelog](#Changelog)  - [Donate](#Donate)  - [FlattrID](#FlattrID)  - [LiberapayID](#LiberapayID)  - [Bitcoin](#Bitcoin)  - [Litecoin](#Litecoin)  - [Summary](#Summary)  - [Description](#Description)  - [Maintainer Notes](#Maintainer-Notes)  - [Repo Type](#Repo-Type)  - [Repo](#Repo)  - [Binaries](#Binaries)  - [Build](#Build)  - [AntiFeatures](#AntiFeatures)  - [Disabled](#Disabled)  - [Requires Root](#Requires-Root)  - [Archive Policy](#Archive-Policy)  - [Update Check Mode](#Update-Check-Mode)  - [Update Check Ignore](#Update-Check-Ignore)  - [Vercode Operation](#Vercode-Operation)  - [Update Check Name](#Update-Check-Name)  - [Update Check Data](#Update-Check-Data)  - [Auto Update Mode](#Auto-Update-Mode)  - [Current Version](#Current-Version)  - [Current Version Code](#Current-Version-Code)  - [No Source Since](#No-Source-Since)"
msgstr "- [分類](#Categories)  - [作者名稱](#Author-Name)  - [作者 Email](#Author-Email)  - [授權](#License)  - [自動名稱](#Auto-Name)  - [名稱](#Name)  - [提供](#Provides)  - [網站](#Web-Site)  - [原始碼](#Source-Code)  - [問題追蹤](#Issue-Tracker)  - [更新日誌](#Changelog)  - [捐助](#Donate)  - [FlattrID](#FlattrID)  - [LiberapayID](#LiberapayID)  - [Bitcoin](#Bitcoin)  - [Litecoin](#Litecoin)  - [Summary](#Summary)  - [說明](#Description)  - [維護者注解](#Maintainer-Notes)  - [軟體庫類型](#Repo-Type)  - [軟體庫](#Repo)  - [二進制](#Binaries)  - [構建](#Build)  - [反特徵](#AntiFeatures)  - [停用](#Disabled)  - [要求 Root](#Requires-Root)  - [檔案策略](#Archive-Policy)  - [更新檢查方式](#Update-Check-Mode)  - [忽略更新檢查](#Update-Check-Ignore)  - [驗證碼運算](#Vercode-Operation)  - [名稱更新檢查](#Update-Check-Name)  - [資料更新檢查](#Update-Check-Data)  - [自動更新模式](#Auto-Update-Mode)  - [目前版本](#Current-Version)  - [目前版本碼](#Current-Version-Code)  - [之前沒有來源](#No-Source-Since)"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
707 708

#. type: Title ###
709
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
710 711 712 713 714
#, no-wrap
msgid "7.1 Categories<a name=\"Categories\"></a>"
msgstr ""

#. type: Plain text
715
#: build/_docs/md/Build_Metadata_Reference.md
716
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 (look at the site/client), or discuss the proposal to add a new one."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
717 718 719
msgstr ""

#. type: Plain text
720
#: build/_docs/md/Build_Metadata_Reference.md
721
msgid "Categories must be separated by a single comma character, ’,’. For backwards compatibility, F-Droid will use the first category given as &lt;category&gt; element for older clients to at least see one category."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
722 723 724
msgstr ""

#. type: Plain text
725
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
726 727 728 729 730
#, no-wrap
msgid "This is converted to (`<categories>`) in the XML file (_index.xml_).\n"
msgstr ""

#. type: Title ###
731
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
732 733 734 735 736
#, no-wrap
msgid "7.2 Author Name<a name=\"Author-Name\"></a>"
msgstr ""

#. type: Plain text
737
#: build/_docs/md/Build_Metadata_Reference.md
738
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)."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
739 740
msgstr ""

741 742
#. type: Plain text
#: build/_docs/md/Build_Metadata_Reference.md
743 744
msgid "__Warning__: this overrides all Author Name entries [set in the app's source code](../All_About_Descriptions_Graphics_and_Screenshots)."
msgstr "__警告__:此動作將覆蓋所有作者姓名記載 [在應用程式原始碼中設定](../All_About_Descriptions_Graphics_and_Screenshots)。"
745

Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
746
#. type: Plain text
747
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
748 749 750 751 752
#, no-wrap
msgid "This is converted to (`<author>`) in the XML file (_index.xml_).\n"
msgstr ""

#. type: Title ###
753
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
754 755 756 757 758
#, no-wrap
msgid "7.3 Author Email<a name=\"Author-Email\"></a>"
msgstr ""

#. type: Plain text
759
#: build/_docs/md/Build_Metadata_Reference.md
760
msgid "The e-mail address of the author(s). This can be omitted (or left blank)."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
761 762
msgstr ""

763 764
#. type: Plain text
#: build/_docs/md/Build_Metadata_Reference.md
765 766
msgid "__Warning__: this overrides all Author Email entries [set in the app's source code](../All_About_Descriptions_Graphics_and_Screenshots)."
msgstr "__警告__:此動作將覆蓋所有作者電子郵件記載 [在應用程式原始碼中設定](../All_About_Descriptions_Graphics_and_Screenshots)。"
767

Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
768
#. type: Plain text
769
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
770 771 772 773 774
#, no-wrap
msgid "This is converted to (`<email>`) in the XML file (_index.xml_).\n"
msgstr ""

#. type: Title ###
775
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
776 777
#, no-wrap
msgid "7.4 License<a name=\"License\"></a>"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
778
msgstr "7.4 授權<a name=\"License\"></a>"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
779 780

#. type: Plain text
781
#: build/_docs/md/Build_Metadata_Reference.md
782
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
783 784 785
msgstr ""

#. type: Plain text
786
#: build/_docs/md/Build_Metadata_Reference.md
787
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
788 789 790
msgstr ""

#. type: Plain text
791
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
792 793 794 795 796
#, no-wrap
msgid "This is converted to (`<license>`) in the XML file (_index.xml_).\n"
msgstr ""

#. type: Title ###
797
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
798 799 800 801 802
#, no-wrap
msgid "7.5 Auto Name<a name=\"Auto-Name\"></a>"
msgstr ""

#. type: Plain text
803
#: build/_docs/md/Build_Metadata_Reference.md
804
msgid "The name of the application as can best be retrieved from the source code. This is done so that the commitupdates script can put a familiar name in the description of commits created when a new update of the application is found. The Auto Name entry is generated automatically when `fdroid checkupdates` is run."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
805 806 807
msgstr ""

#. type: Plain text
808
#: build/_docs/md/Build_Metadata_Reference.md
809 810
msgid "__Warning__: this overrides all Name entries [set in the app's source code](../All_About_Descriptions_Graphics_and_Screenshots)."
msgstr "__警告__:此動作將覆蓋所有名稱記載 [在應用程式原始碼中設定](../All_About_Descriptions_Graphics_and_Screenshots)。"
811 812

#. type: Plain text
813
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
814 815 816 817 818
#, no-wrap
msgid "This is converted to (`<name>`) in the XML file (_index.xml_).\n"
msgstr ""

#. type: Title ###
819
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
820 821 822 823 824
#, no-wrap
msgid "7.6 Name<a name=\"Name\"></a>"
msgstr ""

#. type: Plain text
825
#: build/_docs/md/Build_Metadata_Reference.md
826
msgid "The name of the application. Normally, this field should not be present 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 changed the name or application label in the source code."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
827 828 829
msgstr ""

#. type: Title ###
830
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
831 832 833 834 835
#, no-wrap
msgid "7.7 Provides<a name=\"Provides\"></a>"
msgstr ""

#. type: Plain text
836
#: build/_docs/md/Build_Metadata_Reference.md
837
msgid "Comma-separated list of application IDs that this app provides. In other words, if the user has any of these apps installed, F-Droid will show this app as installed instead. It will also appear if the user clicks on urls linking to the other app IDs. Useful when an app switches package name, or when you want an app to act as multiple apps."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
838 839 840
msgstr ""

#. type: Plain text
841
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
842 843 844 845
msgid "Currently this functionality is a stub."
msgstr ""

#. type: Plain text
846
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
847 848 849 850 851
#, no-wrap
msgid "This is converted to (`<provides>`) in the XML file (_index.xml_).\n"
msgstr ""

#. type: Title ###
852
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
853 854 855 856 857
#, no-wrap
msgid "7.8 Web Site<a name=\"Web-Site\"></a>"
msgstr ""

#. type: Plain text
858
#: build/_docs/md/Build_Metadata_Reference.md
859
msgid "The URL for the application’s web site. If there is no relevant web site, this can be omitted (or left blank)."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
860 861 862
msgstr ""

#. type: Plain text
863
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
864 865 866 867 868
#, no-wrap
msgid "This is converted to (`<web>`) in the XML file (_index.xml_).\n"
msgstr ""

#. type: Title ###
869
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
870 871 872 873 874
#, no-wrap
msgid "7.9 Source Code<a name=\"Source-Code\"></a>"
msgstr ""

#. type: Plain text
875
#: build/_docs/md/Build_Metadata_Reference.md
876
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
877 878 879
msgstr ""

#. type: Plain text
880
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
881 882 883 884 885
#, no-wrap
msgid "This is converted to (`<source>`) in the XML file (_index.xml_).\n"
msgstr ""

#. type: Title ###
886
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
887 888 889 890 891
#, no-wrap
msgid "7.10 Issue Tracker<a name=\"Issue-Tracker\"></a>"
msgstr ""

#. type: Plain text
892
#: build/_docs/md/Build_Metadata_Reference.md
893
msgid "The URL for the application’s issue tracker. Optional, since not all applications have one."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
894 895 896
msgstr ""

#. type: Plain text
897
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
898 899 900 901 902
#, no-wrap
msgid "This is converted to (`<tracker>`) in the XML file (_index.xml_).\n"
msgstr ""

#. type: Title ###
903
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
904 905 906 907 908
#, no-wrap
msgid "7.11 Changelog<a name=\"Changelog\"></a>"
msgstr ""

#. type: Plain text
909
#: build/_docs/md/Build_Metadata_Reference.md
910
msgid "The URL for the application’s changelog. Optional, since not all applications have one."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
911 912 913
msgstr ""

#. type: Plain text
914
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
915 916 917 918 919
#, no-wrap
msgid "This is converted to (`<changelog>`) in the XML file (_index.xml_).\n"
msgstr ""

#. type: Title ###
920
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
921 922 923 924 925
#, no-wrap
msgid "7.12 Donate<a name=\"Donate\"></a>"
msgstr ""

#. type: Plain text
926
#: build/_docs/md/Build_Metadata_Reference.md
927
msgid "The URL to donate to the project. This should be the project’s donate page if it has one."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
928 929 930
msgstr ""

#. type: Plain text
931
#: build/_docs/md/Build_Metadata_Reference.md
932
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’."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
933 934 935
msgstr ""

#. type: Plain text
936
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
937 938 939 940 941
#, no-wrap
msgid "This is converted to (`<donate>`) in the XML file (_index.xml_).\n"
msgstr ""

#. type: Title ###
942
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
943 944 945 946 947
#, no-wrap
msgid "7.13 FlattrID<a name=\"FlattrID\"></a>"
msgstr ""

#. type: Plain text
948
#: build/_docs/md/Build_Metadata_Reference.md
949
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
950 951 952
msgstr ""

#. type: Plain text
953
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
954 955 956 957 958
#, no-wrap
msgid "This is converted to (`<flattr>`) in the XML file (_index.xml_).\n"
msgstr ""

#. type: Title ###
959
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
960
#, no-wrap
961
msgid "7.14 LiberapayID<a name=\"LiberapayID\"></a>"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
962
msgstr "7.14 LiberapayID<a name=\"LiberapayID\"></a>"
963 964 965

#. type: Plain text
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
966
msgid "The project’s Liberapay (https://liberapay.com) ID, if it has one. This should be a numeric ID, such that (for example) https://liberapay.com/~xxxxx which redirects to your account page. Currently the numeric ID is not displayed on Liberapay’s site, but you can add /public.json behind your team page and get the value of id field in the JSON response."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
967 968
msgstr ""

969 970
#. type: Plain text
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
971
#, no-wrap
972
msgid "This is converted to (`<liberapay>`) in the XML file (_index.xml_).\n"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
973
msgstr "這是在 XML 檔案 (_index.xml_) 中轉換為 (`<liberapay>`)。\n"
974 975 976

#. type: Title ###
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
977
#, no-wrap
978
msgid "7.15 Bitcoin<a name=\"Bitcoin\"></a>"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
979
msgstr "7.15 Bitcoin<a name=\"Bitcoin\"></a>"
980

Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
981
#. type: Plain text
982
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
983 984 985 986
msgid "A bitcoin address for donating to the project."
msgstr ""

#. type: Plain text
987
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
988 989 990 991 992
#, no-wrap
msgid "This is converted to (`<bitcoin>`) in the XML file (_index.xml_).\n"
msgstr ""

#. type: Title ###
993
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
994
#, no-wrap
995
msgid "7.16 Litecoin<a name=\"Litecoin\"></a>"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
996
msgstr "7.16 Litecoin<a name=\"Litecoin\"></a>"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
997 998

#. type: Plain text
999
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1000 1001 1002 1003
msgid "A litecoin address for donating to the project."
msgstr ""

#. type: Plain text
1004
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1005 1006 1007 1008 1009
#, no-wrap
msgid "This is converted to (`<litecoin>`) in the XML file (_index.xml_).\n"
msgstr ""

#. type: Title ###
1010
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1011
#, no-wrap
1012
msgid "7.17 Summary<a name=\"Summary\"></a>"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1013 1014 1015
msgstr ""

#. type: Plain text
1016
#: build/_docs/md/Build_Metadata_Reference.md
1017
msgid "A brief summary of what the application is. Since the summary is only allowed one line on the list of the F-Droid client, keeping it to within 80 characters will ensure it fits most screens."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1018 1019
msgstr ""

1020 1021
#. type: Plain text
#: build/_docs/md/Build_Metadata_Reference.md
1022 1023
msgid "__Warning__: this overrides all Summary entries [set in the app's source code](../All_About_Descriptions_Graphics_and_Screenshots)."
msgstr "__警告__:此動作將覆蓋所有摘要記載 [在應用程式原始碼中設定](../All_About_Descriptions_Graphics_and_Screenshots)。"
1024

Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1025
#. type: Plain text
1026
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1027 1028 1029 1030 1031
#, no-wrap
msgid "This is converted to (`<summary>`) in the XML file (_index.xml_).\n"
msgstr ""

#. type: Title ###
1032
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1033
#, no-wrap
1034
msgid "7.18 Description<a name=\"Description\"></a>"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1035 1036 1037
msgstr ""

#. type: Plain text
1038
#: build/_docs/md/Build_Metadata_Reference.md
1039
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 ’.’."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1040 1041 1042
msgstr ""

#. type: Plain text
1043
#: build/_docs/md/Build_Metadata_Reference.md
1044
msgid "Basic MediaWiki-style formatting can be used. Leaving a blank line starts a new paragraph. Surrounding text with `''` make it italic, and with `'''` makes it bold."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1045 1046 1047
msgstr ""

#. type: Plain text
1048
#: build/_docs/md/Build_Metadata_Reference.md
1049
msgid "You can link to another app in the repo by using `[[app.id]]`. The link will be made appropriately whether in the Android client, the web repo browser or the wiki. The link text will be the apps name."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1050 1051 1052
msgstr ""

#. type: Plain text
1053
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1054 1055 1056 1057
msgid "Links to web addresses can be done using `[http://example.com Text]`."
msgstr ""

#. type: Plain text
1058
#: build/_docs/md/Build_Metadata_Reference.md
1059
msgid "Bulletted lists are done by simply starting each item with a `*` on a new line, and numbered lists are the same but using `#`. There is currently no support for nesting lists - you can have one level only."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1060 1061 1062
msgstr ""

#. type: Plain text
1063
#: build/_docs/md/Build_Metadata_Reference.md
1064
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)."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1065 1066
msgstr ""

1067 1068 1069 1070 1071 1072 1073
#. type: Plain text
#: build/_docs/md/Build_Metadata_Reference.md
msgid "4000 char limit"
msgstr ""

#. type: Plain text
#: build/_docs/md/Build_Metadata_Reference.md
1074 1075
msgid "__Warning__: this overrides all Description entries [set in the app's source code](../All_About_Descriptions_Graphics_and_Screenshots)."
msgstr "__警告__:此動作將覆蓋所有說明記載 [在應用程式原始碼中設定](../All_About_Descriptions_Graphics_and_Screenshots)。"
1076

Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1077
#. type: Plain text
1078
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1079 1080 1081 1082 1083
#, no-wrap
msgid "This is converted to (`<desc>`) in the XML file (_index.xml_).\n"
msgstr ""

#. type: Title ###
1084
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1085
#, no-wrap
1086
msgid "7.19 Maintainer Notes<a name=\"Maintainer-Notes\"></a>"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1087
msgstr "7.19 維護注意事項<a name=\"Maintainer-Notes\"></a>"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1088 1089

#. type: Plain text
1090
#: build/_docs/md/Build_Metadata_Reference.md
1091
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."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1092 1093 1094
msgstr ""

#. type: Plain text
1095
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1096 1097 1098 1099
msgid "This information is also published to the wiki."
msgstr ""

#. type: Title ###
1100
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1101
#, no-wrap
1102
msgid "7.20 Repo Type<a name=\"Repo-Type\"></a>"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1103
msgstr "7.20 軟體庫類型<a name=\"Repo-Type\"></a>"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1104 1105

#. type: Plain text
1106
#: build/_docs/md/Build_Metadata_Reference.md
1107
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:"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1108 1109 1110
msgstr ""

#. type: Bullet: '-   '
1111
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1112 1113 1114 1115
msgid "‘git’"
msgstr ""

#. type: Bullet: '-   '
1116
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1117 1118 1119 1120
msgid "‘svn’"
msgstr ""

#. type: Bullet: '-   '
1121
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1122 1123 1124 1125
msgid "‘git-svn’"
msgstr ""

#. type: Bullet: '-   '
1126
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1127 1128 1129 1130
msgid "‘hg’"
msgstr ""

#. type: Bullet: '-   '
1131
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1132 1133 1134 1135
msgid "‘bzr’"
msgstr ""

#. type: Bullet: '-   '
1136
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1137 1138 1139 1140
msgid "‘srclib’"
msgstr ""

#. type: Title ###
1141
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1142
#, no-wrap
1143
msgid "7.21 Repo<a name=\"Repo\"></a>"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1144
msgstr "7.21 軟體庫<a name=\"Repo\"></a>"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1145 1146

#. type: Plain text
1147
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1148 1149 1150 1151
msgid "The repository location. Usually a git: or svn: URL, for example."
msgstr ""

#. type: Plain text
1152
#: build/_docs/md/Build_Metadata_Reference.md
1153
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 update check mode 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"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1154 1155 1156
msgstr ""

#. type: Plain text
1157
#: build/_docs/md/Build_Metadata_Reference.md
1158
msgid "If the Repo Type 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`."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1159 1160 1161
msgstr ""

#. type: Title ###
1162
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1163
#, no-wrap
1164
msgid "7.22 Binaries<a name=\"Binaries\"></a>"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1165
msgstr "7.22 二進制<a name=\"Binaries\"></a>"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1166 1167

#. type: Plain text
1168
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1169 1170 1171 1172
msgid "The location of binaries used in verification process."
msgstr ""

#. type: Plain text
1173
#: build/_docs/md/Build_Metadata_Reference.md
1174
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`"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1175 1176 1177
msgstr ""

#. type: Plain text
1178
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1179 1180 1181 1182
msgid "F-Droid will use upstream binaries if the verification succeeded."
msgstr ""

#. type: Title ###
1183
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1184
#, no-wrap
1185
msgid "7.23 Build<a name=\"Build\"></a>"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1186
msgstr "7.23 構建<a name=\"Build\"></a>"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1187 1188

#. type: Plain text
1189
#: build/_docs/md/Build_Metadata_Reference.md
1190
msgid "Any number of these fields can be present, each specifying a version to automatically build from source. The value is a comma-separated list.  For example:"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1191 1192 1193
msgstr ""

#. type: Plain text
1194
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1195 1196 1197 1198
msgid "‘Build:1.2,12’"
msgstr ""

#. type: Plain text
1199
#: build/_docs/md/Build_Metadata_Reference.md
1200
msgid "The above specifies to build version 1.2, which has a version code of 12.  The `commit=` parameter specifies the tag, commit or revision number from which to build it in the source repository. It is the only mandatory flag, which in this case could for example be `commit=v1.2`."
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1201 1202 1203
msgstr ""

#. type: Plain text
1204
#: build/_docs/md/Build_Metadata_Reference.md
1205
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):"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1206 1207 1208
msgstr ""

#. type: Plain text
1209
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1210 1211 1212 1213 1214
#, no-wrap
msgid "`disable=<message>`\n"
msgstr ""

#. type: Plain text
1215
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1216 1217 1218 1219 1220 1221 1222 1223
#, 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
1224
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235
#, 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
1236
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1237 1238 1239 1240 1241
#, no-wrap
msgid "`subdir=<path>`\n"
msgstr ""

#. type: Plain text
1242
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1243 1244 1245 1246 1247 1248 1249
#, no-wrap
msgid ""
":   Specifies to build from a subdirectory of the checked out source\n"
"    code. Normally this directory is changed to before building,\n"
msgstr ""

#. type: Plain text
1250
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1251 1252 1253 1254
msgid "`submodules=yes`"
msgstr ""

#. type: Plain text
1255
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1256 1257 1258 1259 1260 1261 1262 1263
#, 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 ""

1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281
#. type: Plain text
#: build/_docs/md/Build_Metadata_Reference.md
msgid "`sudo=xxxx`"
msgstr ""

#. type: Plain text
#: build/_docs/md/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 ""

1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304
#. type: Plain text
#: build/_docs/md/Build_Metadata_Reference.md
#, no-wrap
msgid "`timeout=<seconds>`\n"
msgstr ""

#. type: Plain text
#: build/_docs/md/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
#: build/_docs/md/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 ""

Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1305
#. type: Plain text
1306
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1307 1308 1309 1310
msgid "`init=xxxx`"
msgstr ""

#. type: Plain text
1311
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1312 1313
#, no-wrap
msgid ""
1314
":   Like ’prebuild’, but runs on the source code BEFORE any other\n"
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1315 1316 1317 1318
"    processing takes place.\n"
msgstr ""

#. type: Plain text
1319
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1320 1321 1322 1323 1324 1325 1326 1327 1328 1329
#, no-wrap
msgid ""
"    You can use \\$\\$SDK\\$\\$, \\$\\$NDK\\$\\$, \\$\\$MVN3\\$\\$ and \\$\\$QT\\$\\$ to\n"
"    substitute the paths to the android SDK and NDK directories, maven 3\n"
"    executable, and Qt SDK directory respectively. The following\n"
"    per-build variables are available likewise: \\$\\$VERSION\\$\\$,\n"
"    \\$\\$VERCODE\\$\\$ and \\$\\$COMMIT\\$\\$.\n"
msgstr ""

#. type: Plain text
1330
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1331 1332 1333 1334
msgid "`oldsdkloc=yes`"
msgstr ""

#. type: Plain text
1335
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1336 1337 1338 1339 1340 1341 1342 1343 1344 1345
#, 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
1346
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1347 1348 1349 1350 1351
#, no-wrap
msgid "`target=<target>`\n"
msgstr ""

#. type: Plain text
1352
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363
#, 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
1364
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1365 1366 1367 1368 1369 1370 1371 1372 1373 1374
#, 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
1375
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1376 1377 1378 1379 1380
#, no-wrap
msgid "`update=<auto/dirs>`\n"
msgstr ""

#. type: Plain text
1381
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1382 1383 1384 1385 1386 1387 1388 1389 1390
#, 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
1391
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1392 1393 1394 1395 1396 1397 1398
#, 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
1399
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1400 1401 1402 1403 1404 1405 1406
#, 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
1407
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1408 1409 1410 1411
msgid "`encoding=xxxx`"
msgstr ""

#. type: Plain text
1412
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1413 1414 1415 1416 1417 1418 1419 1420 1421 1422
#, 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
1423
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1424 1425 1426 1427
msgid "`forceversion=yes`"
msgstr ""

#. type: Plain text
1428
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1429 1430 1431 1432 1433 1434 1435
#, 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
1436
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1437 1438 1439 1440 1441 1442 1443 1444 1445 1446
#, 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
1447
#: build/_docs/md/Build_Metadata_Reference.md
Hans-Christoph Steiner's avatar
Hans-Christoph Steiner committed
1448 1449 1450 1451
msgid "`forcevercode=yes`"
msgstr ""

#. type: Plain text