added DEV version to repo
153
CHANGELOG.md
|
|
@ -1,17 +1,157 @@
|
|||
## 3.33.0 (September 10, 2025)
|
||||
|
||||
- Migrate to Glide 4
|
||||
- Performance improvements
|
||||
- Fix gallery image scaling
|
||||
- Bugfixes
|
||||
|
||||
Minimum: NC 18 Server, Android 8.1 Nougat
|
||||
|
||||
For a full list, please see https://github.com/nextcloud/android/milestone/112
|
||||
|
||||
## 3.32.3 (August 21, 2025)
|
||||
|
||||
- Bugfixes
|
||||
|
||||
Minimum: NC 18 Server, Android 8.0 Nougat
|
||||
|
||||
For a full list, please see https://github.com/nextcloud/android/milestone/114
|
||||
|
||||
## 3.32.2 (July 18, 2025)
|
||||
|
||||
- Resolved image blurriness issue.
|
||||
- Fixed crash occurring in the conflict resolution dialog.
|
||||
- Addressed crash in the upload finish receiver event handler.
|
||||
|
||||
Minimum: NC 18 Server, Android 8.0 Nougat
|
||||
|
||||
For a full list, please see https://github.com/nextcloud/android/milestone/115
|
||||
|
||||
## 3.32.1 (July 14, 2025)
|
||||
|
||||
- Bug fixes.
|
||||
|
||||
Minimum: NC 18 Server, Android 8.0 Nougat
|
||||
|
||||
For a full list, please see https://github.com/nextcloud/android/milestone/113
|
||||
|
||||
## 3.32.0 (July 2, 2025)
|
||||
|
||||
- Minimum supported Android version is 8.0.
|
||||
- Scrolling performance has been increased in the media tab.
|
||||
- Multi-select feature added to the media tab.
|
||||
- Custom share permissions have been added.
|
||||
- Bug fixes.
|
||||
|
||||
Minimum: NC 18 Server, Android 8.0 Nougat
|
||||
|
||||
For a full list, please see https://github.com/nextcloud/android/milestone/107
|
||||
|
||||
## 3.31.4 (June 3, 2025)
|
||||
|
||||
- Add missing auto migration
|
||||
|
||||
Minimum: NC 18 Server, Android 7.1 Nougat
|
||||
|
||||
For a full list, please see https://github.com/nextcloud/android/milestone/110
|
||||
|
||||
## 3.31.3 (May 28, 2025)
|
||||
|
||||
- fix simple sign up
|
||||
- bugfixes
|
||||
- update translations
|
||||
|
||||
Minimum: NC 18 Server, Android 7.1 Nougat
|
||||
|
||||
For a full list, please see https://github.com/nextcloud/android/milestone/110
|
||||
|
||||
## 3.31.2 (May 20, 2025)
|
||||
|
||||
- bring back MANAGE_EXTERNAL_STORAGE permission
|
||||
|
||||
Minimum: NC 18 Server, Android 7.1 Nougat
|
||||
|
||||
For a full list, please see https://github.com/nextcloud/android/milestone/108
|
||||
|
||||
## 3.31.1 (April 3, 2025)
|
||||
|
||||
- Various bug fixes and performance enhancements
|
||||
|
||||
Minimum: NC 18 Server, Android 7.1 Nougat
|
||||
|
||||
For a full list, please see https://github.com/nextcloud/android/milestone/108
|
||||
|
||||
## 3.31.0 (February 25, 2025)
|
||||
|
||||
- New share layout
|
||||
- Various bug fixes and performance enhancements
|
||||
|
||||
Minimum: NC 18 Server, Android 7.1 Nougat
|
||||
|
||||
For a full list, please see https://github.com/nextcloud/android/milestone/100
|
||||
|
||||
## 3.30.7 (January 6, 2025)
|
||||
|
||||
- Fix crash of auto upload settings
|
||||
|
||||
Minimum: NC 16 Server, Android 7.0 Nougat
|
||||
|
||||
For a full list, please see https://github.com/nextcloud/android/milestone/104
|
||||
|
||||
## 3.30.3 (October 22, 2024)
|
||||
|
||||
- Bugfix for two way sync: sync only on wifi
|
||||
|
||||
## 3.30.2 (October 21, 2024)
|
||||
|
||||
- Bugfix for two way sync. Please check listed folders in settings -> internal two way sync
|
||||
|
||||
Minimum: NC 16 Server, Android 7.0 Nougat
|
||||
|
||||
For a full list, please see https://github.com/nextcloud/android/milestone/99
|
||||
|
||||
## 3.30.1 (October 11, 2024)
|
||||
|
||||
- Bugfixes
|
||||
|
||||
Minimum: NC 16 Server, Android 7.0 Nougat
|
||||
|
||||
For a full list, please see https://github.com/nextcloud/android/milestone/99
|
||||
|
||||
## 3.29.1 (June 27, 2024)
|
||||
|
||||
- Bugfixes
|
||||
|
||||
Minimum: NC 16 Server, Android 7.0 Nougat
|
||||
|
||||
For a full list, please see https://github.com/nextcloud/android/milestone/93
|
||||
|
||||
<!--
|
||||
~ SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
|
||||
~ SPDX-FileCopyrightText: 2016-2024 Tobias Kaminsky <tobias@kaminsky.me>
|
||||
~ SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
-->
|
||||
|
||||
## 3.29.0 (April 24, 2024)
|
||||
|
||||
- NC Assistant
|
||||
- Client certificates
|
||||
- Personal files view
|
||||
- REUSE compliance
|
||||
- Bugfixes
|
||||
|
||||
Minimum: NC 16 Server, Android 7.0 Nougat
|
||||
|
||||
For a full list, please see https://github.com/nextcloud/android/milestone/89
|
||||
|
||||
## 3.28.2 (April 4th, 2024)
|
||||
|
||||
- Bugfixes
|
||||
|
||||
|
||||
Minimum: NC 16 Server, Android 7.0 Nougat
|
||||
|
||||
For a full list, please see https://github.com/nextcloud/android/milestone/90
|
||||
|
||||
<!--
|
||||
~ SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
|
||||
~ SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
-->
|
||||
|
||||
## 3.28.1 (March 25th, 2024)
|
||||
|
||||
- Bugfixes
|
||||
|
|
@ -25,7 +165,6 @@ For a full list, please see https://github.com/nextcloud/android/milestone/90
|
|||
- E2E sharing
|
||||
- Bugfixes
|
||||
|
||||
|
||||
Minimum: NC 16 Server, Android 7.0 Nougat
|
||||
|
||||
For a full list, please see https://github.com/nextcloud/android/milestone/88
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<!--
|
||||
~ SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
|
||||
~ SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
~ SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
-->
|
||||
In the Nextcloud community, participants from all over the world come together to create Free Software for a free internet. This is made possible by the support, hard work and enthusiasm of thousands of people, including those who create and use Nextcloud software.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<!--
|
||||
~ SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
|
||||
~ SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
~ SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
-->
|
||||
# [Nextcloud](https://nextcloud.com) Android app
|
||||
|
||||
|
|
@ -191,17 +191,17 @@ Source code of app:
|
|||
* Nextcloud - Android Client
|
||||
*
|
||||
* SPDX-FileCopyrightText: 2024 Your Name <your@email.com>
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
*/
|
||||
```
|
||||
|
||||
XML (layout) file:
|
||||
```xml
|
||||
<!--
|
||||
~ Nextcloud Talk - Android Client
|
||||
~ Nextcloud - Android Client
|
||||
~
|
||||
~ SPDX-FileCopyrightText: 2024 Your name <your@email.com>
|
||||
~ SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
~ SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
-->
|
||||
```
|
||||
|
||||
|
|
|
|||
113
Gemfile.lock
|
|
@ -5,42 +5,44 @@ GEM
|
|||
base64
|
||||
nkf
|
||||
rexml
|
||||
addressable (2.8.6)
|
||||
public_suffix (>= 2.0.2, < 6.0)
|
||||
addressable (2.8.7)
|
||||
public_suffix (>= 2.0.2, < 7.0)
|
||||
artifactory (3.0.17)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.3.0)
|
||||
aws-partitions (1.913.0)
|
||||
aws-sdk-core (3.191.6)
|
||||
aws-eventstream (1.4.0)
|
||||
aws-partitions (1.1121.0)
|
||||
aws-sdk-core (3.226.1)
|
||||
aws-eventstream (~> 1, >= 1.3.0)
|
||||
aws-partitions (~> 1, >= 1.651.0)
|
||||
aws-sigv4 (~> 1.8)
|
||||
aws-partitions (~> 1, >= 1.992.0)
|
||||
aws-sigv4 (~> 1.9)
|
||||
base64
|
||||
jmespath (~> 1, >= 1.6.1)
|
||||
aws-sdk-kms (1.78.0)
|
||||
aws-sdk-core (~> 3, >= 3.191.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-s3 (1.146.1)
|
||||
aws-sdk-core (~> 3, >= 3.191.0)
|
||||
logger
|
||||
aws-sdk-kms (1.106.0)
|
||||
aws-sdk-core (~> 3, >= 3.225.0)
|
||||
aws-sigv4 (~> 1.5)
|
||||
aws-sdk-s3 (1.191.0)
|
||||
aws-sdk-core (~> 3, >= 3.225.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.8)
|
||||
aws-sigv4 (1.8.0)
|
||||
aws-sigv4 (~> 1.5)
|
||||
aws-sigv4 (1.12.1)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
babosa (1.0.4)
|
||||
base64 (0.2.0)
|
||||
cgi (0.4.1)
|
||||
base64 (0.3.0)
|
||||
cgi (0.4.2)
|
||||
claide (1.1.0)
|
||||
colored (1.2)
|
||||
colored2 (3.1.2)
|
||||
commander (4.6.0)
|
||||
highline (~> 2.0.0)
|
||||
declarative (0.0.20)
|
||||
digest-crc (0.6.5)
|
||||
digest-crc (0.7.0)
|
||||
rake (>= 12.0.0, < 14.0.0)
|
||||
domain_name (0.6.20240107)
|
||||
dotenv (2.8.1)
|
||||
emoji_regex (3.2.3)
|
||||
excon (0.110.0)
|
||||
faraday (1.10.3)
|
||||
excon (0.112.0)
|
||||
faraday (1.10.4)
|
||||
faraday-em_http (~> 1.0)
|
||||
faraday-em_synchrony (~> 1.0)
|
||||
faraday-excon (~> 1.1)
|
||||
|
|
@ -56,20 +58,20 @@ GEM
|
|||
faraday (>= 0.8.0)
|
||||
http-cookie (~> 1.0.0)
|
||||
faraday-em_http (1.0.0)
|
||||
faraday-em_synchrony (1.0.0)
|
||||
faraday-em_synchrony (1.0.1)
|
||||
faraday-excon (1.1.0)
|
||||
faraday-httpclient (1.0.1)
|
||||
faraday-multipart (1.0.4)
|
||||
multipart-post (~> 2)
|
||||
faraday-net_http (1.0.1)
|
||||
faraday-multipart (1.1.1)
|
||||
multipart-post (~> 2.0)
|
||||
faraday-net_http (1.0.2)
|
||||
faraday-net_http_persistent (1.2.0)
|
||||
faraday-patron (1.0.0)
|
||||
faraday-rack (1.0.0)
|
||||
faraday-retry (1.0.3)
|
||||
faraday_middleware (1.2.0)
|
||||
faraday_middleware (1.2.1)
|
||||
faraday (~> 1.0)
|
||||
fastimage (2.3.1)
|
||||
fastlane (2.220.0)
|
||||
fastimage (2.4.0)
|
||||
fastlane (2.228.0)
|
||||
CFPropertyList (>= 2.3, < 4.0.0)
|
||||
addressable (>= 2.8, < 3.0.0)
|
||||
artifactory (~> 3.0)
|
||||
|
|
@ -85,6 +87,7 @@ GEM
|
|||
faraday-cookie_jar (~> 0.0.6)
|
||||
faraday_middleware (~> 1.0)
|
||||
fastimage (>= 2.1.0, < 3.0.0)
|
||||
fastlane-sirp (>= 1.0.0)
|
||||
gh_inspector (>= 1.1.2, < 2.0.0)
|
||||
google-apis-androidpublisher_v3 (~> 0.3)
|
||||
google-apis-playcustomapp_v1 (~> 0.1)
|
||||
|
|
@ -108,10 +111,12 @@ GEM
|
|||
tty-spinner (>= 0.8.0, < 1.0.0)
|
||||
word_wrap (~> 1.0.0)
|
||||
xcodeproj (>= 1.13.0, < 2.0.0)
|
||||
xcpretty (~> 0.3.0)
|
||||
xcpretty (~> 0.4.1)
|
||||
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
|
||||
fastlane-plugin-huawei_appgallery_connect (1.0.28)
|
||||
fastlane-plugin-huawei_appgallery_connect (1.0.31)
|
||||
cgi
|
||||
fastlane-sirp (1.0.0)
|
||||
sysrandom (~> 1.0)
|
||||
gh_inspector (1.1.3)
|
||||
google-apis-androidpublisher_v3 (0.54.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
|
|
@ -129,12 +134,12 @@ GEM
|
|||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-apis-storage_v1 (0.31.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-cloud-core (1.7.0)
|
||||
google-cloud-core (1.8.0)
|
||||
google-cloud-env (>= 1.0, < 3.a)
|
||||
google-cloud-errors (~> 1.0)
|
||||
google-cloud-env (1.6.0)
|
||||
faraday (>= 0.17.3, < 3.0)
|
||||
google-cloud-errors (1.4.0)
|
||||
google-cloud-errors (1.5.0)
|
||||
google-cloud-storage (1.47.0)
|
||||
addressable (~> 2.8)
|
||||
digest-crc (~> 0.4)
|
||||
|
|
@ -150,36 +155,39 @@ GEM
|
|||
os (>= 0.9, < 2.0)
|
||||
signet (>= 0.16, < 2.a)
|
||||
highline (2.0.3)
|
||||
http-cookie (1.0.5)
|
||||
http-cookie (1.0.8)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.8.3)
|
||||
httpclient (2.9.0)
|
||||
mutex_m
|
||||
jmespath (1.6.2)
|
||||
json (2.7.2)
|
||||
jwt (2.8.1)
|
||||
json (2.12.2)
|
||||
jwt (2.10.1)
|
||||
base64
|
||||
mini_magick (4.12.0)
|
||||
logger (1.7.0)
|
||||
mini_magick (4.13.2)
|
||||
mini_mime (1.1.5)
|
||||
multi_json (1.15.0)
|
||||
multipart-post (2.4.0)
|
||||
nanaimo (0.3.0)
|
||||
naturally (2.2.1)
|
||||
multipart-post (2.4.1)
|
||||
mutex_m (0.3.0)
|
||||
nanaimo (0.4.0)
|
||||
naturally (2.3.0)
|
||||
nkf (0.2.0)
|
||||
optparse (0.4.0)
|
||||
optparse (0.6.0)
|
||||
os (1.1.4)
|
||||
plist (3.7.1)
|
||||
public_suffix (5.0.5)
|
||||
rake (13.2.1)
|
||||
plist (3.7.2)
|
||||
public_suffix (6.0.2)
|
||||
rake (13.3.0)
|
||||
representable (3.2.0)
|
||||
declarative (< 0.1.0)
|
||||
trailblazer-option (>= 0.1.1, < 0.2.0)
|
||||
uber (< 0.2.0)
|
||||
retriable (3.1.2)
|
||||
rexml (3.2.6)
|
||||
rouge (2.0.7)
|
||||
rexml (3.4.1)
|
||||
rouge (3.28.0)
|
||||
ruby2_keywords (0.0.5)
|
||||
rubyzip (2.3.2)
|
||||
rubyzip (2.4.1)
|
||||
security (0.1.5)
|
||||
signet (0.19.0)
|
||||
signet (0.20.0)
|
||||
addressable (~> 2.8)
|
||||
faraday (>= 0.17.5, < 3.a)
|
||||
jwt (>= 1.5, < 3.0)
|
||||
|
|
@ -187,6 +195,7 @@ GEM
|
|||
simctl (1.6.10)
|
||||
CFPropertyList
|
||||
naturally
|
||||
sysrandom (1.0.5)
|
||||
terminal-notifier (2.0.0)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
|
|
@ -196,17 +205,17 @@ GEM
|
|||
tty-spinner (0.9.3)
|
||||
tty-cursor (~> 0.7)
|
||||
uber (0.1.0)
|
||||
unicode-display_width (2.5.0)
|
||||
unicode-display_width (2.6.0)
|
||||
word_wrap (1.0.0)
|
||||
xcodeproj (1.24.0)
|
||||
xcodeproj (1.27.0)
|
||||
CFPropertyList (>= 2.3.3, < 4.0)
|
||||
atomos (~> 0.1.3)
|
||||
claide (>= 1.0.2, < 2.0)
|
||||
colored2 (~> 3.1)
|
||||
nanaimo (~> 0.3.0)
|
||||
rexml (~> 3.2.4)
|
||||
xcpretty (0.3.0)
|
||||
rouge (~> 2.0.7)
|
||||
nanaimo (~> 0.4.0)
|
||||
rexml (>= 3.3.6, < 4.0)
|
||||
xcpretty (0.4.1)
|
||||
rouge (~> 3.28.0)
|
||||
xcpretty-travis-formatter (1.0.1)
|
||||
xcpretty (~> 0.2, >= 0.0.7)
|
||||
|
||||
|
|
|
|||
49
LICENSES/LicenseRef-XTrademarks.txt
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
Trademark policy
|
||||
April 2023
|
||||
|
||||
|
||||
You may not violate others’ intellectual property rights, including copyright and trademark.
|
||||
|
||||
A trademark is a word, logo, phrase, or device that distinguishes a trademark holder’s good or service in the marketplace. Trademark law may prevent others from using a trademark in an unauthorized or confusing manner.
|
||||
|
||||
|
||||
What is in violation of this policy?
|
||||
|
||||
Using another’s trademark in a way that may mislead or confuse people about your affiliation may be a violation of our trademark policy.
|
||||
|
||||
|
||||
What is not a violation of this policy?
|
||||
|
||||
Referencing another’s trademark is not automatically a violation of X's trademark policy. Examples of non-violations include:
|
||||
|
||||
* using a trademark in a way that is outside the scope of the trademark registration e.g., in a different territory, or a different class of goods or services than that identified in the registration; and
|
||||
* using a trademark in a nominative or other fair use manner. For more information, see our Misleading and deceptive identities policy (https://help.twitter.com/en/rules-and-policies/twitter-impersonation-and-deceptive-identities-policy.html).
|
||||
|
||||
|
||||
Who can report violations of this policy?
|
||||
|
||||
X only investigates requests that are submitted by the trademark holder or their authorized representative e.g., a legal representative or other representative for a brand.
|
||||
|
||||
|
||||
How can I report violations of this policy?
|
||||
|
||||
You can submit a trademark report through our trademark report form (https://help.twitter.com/forms/trademark). Please provide all the information requested in the form. If you submit an incomplete report, we’ll need to follow up about the missing information. Please note that this will result in a delay in processing your report.
|
||||
|
||||
Note: We may provide the account holder with your name and other information included in the copy of the report.
|
||||
|
||||
|
||||
What happens if you violate this policy?
|
||||
|
||||
If we determine that you violated our trademark policy, we may suspend your account. Depending on the type of violation, we may give you an opportunity to comply with our policies. In other instances, an account may be permanently suspended upon first review. If you believe that your account was suspended in error, you can submit an appeal (https://help.twitter.com/forms/general?subtopic=suspended).
|
||||
|
||||
|
||||
Additional resources
|
||||
|
||||
Learn more about our range of enforcement options (https://help.twitter.com/rules-and-policies/enforcement-options) and our approach to policy development and enforcement (https://help.twitter.com/rules-and-policies/enforcement-philosophy).
|
||||
|
||||
|
||||
Legal disclaimer
|
||||
|
||||
By using the X trademarks and resources on this site, you agree to follow the X Trademark Guidelines in our Brand Guidelines — as well as our Terms of Service and all other X rules and policies. If you have any questions, contact us at trademarks@x.com.
|
||||
|
||||
A copy can be found at https://about.x.com/en/who-we-are/brand-toolkit and https://help.twitter.com/en/rules-and-policies/x-trademark-policy
|
||||
13
README.md
|
|
@ -1,10 +1,10 @@
|
|||
<!--
|
||||
~ SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
|
||||
~ SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
~ SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
-->
|
||||
# [Nextcloud](https://nextcloud.com) Android app :iphone:
|
||||
|
||||
[](https://api.reuse.software/info/github.com/nextcloud/android) [](https://drone.nextcloud.com/nextcloud/android) [](https://www.codacy.com/app/Nextcloud/android?utm_source=github.com\&utm_medium=referral\&utm_content=nextcloud/android\&utm_campaign=Badge_Grade) [](https://github.com/nextcloud/android/releases/latest)
|
||||
[](https://api.reuse.software/info/github.com/nextcloud/android) [](https://drone.nextcloud.com/nextcloud/android) [](https://app.codacy.com/gh/nextcloud/android/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) [](https://github.com/nextcloud/android/releases/latest)
|
||||
|
||||
[<img src="https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png"
|
||||
alt="Download from Google Play"
|
||||
|
|
@ -13,6 +13,15 @@ height="80">](https://play.google.com/store/apps/details?id=com.nextcloud.client
|
|||
alt="Get it on F-Droid"
|
||||
height="80">](https://f-droid.org/packages/com.nextcloud.client/)
|
||||
|
||||
Signing certificate fingerprint to [verify](https://developer.android.com/studio/command-line/apksigner#usage-verify) the APK:
|
||||
- APK with "gplay" name, found [here](https://github.com/nextcloud/android/releases) or distributed via Google Play Store
|
||||
- APK with "nextcloud", found [here](https://github.com/nextcloud/android/releases)
|
||||
- not suitable for Fdroid downloads, as Fdroid is signing it on their own
|
||||
```
|
||||
SHA-256: fb009522f65e25802261b67b10a45fd70e610031976f40b28a649e152ded0373
|
||||
SHA-1: 74aa1702e714941be481e1f7ce4a8f779c19dcea
|
||||
```
|
||||
|
||||
**The Android client for [Nextcloud](https://nextcloud.com). Easily work with your data on your Nextcloud.**
|
||||
|
||||

|
||||
|
|
|
|||
42
REUSE.toml
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
version = 1
|
||||
SPDX-PackageName = "Nextcloud Android"
|
||||
SPDX-PackageSupplier = "Nextcloud Android team <android@nextcloud.com>"
|
||||
SPDX-PackageDownloadLocation = "https://github.com/nextcloud/android"
|
||||
|
||||
[[annotations]]
|
||||
path = "gradle/wrapper/gradle-wrapper.jar"
|
||||
precedence = "aggregate"
|
||||
SPDX-FileCopyrightText = "2015-2021 the original authors"
|
||||
SPDX-License-Identifier = "Apache-2.0"
|
||||
|
||||
[[annotations]]
|
||||
path = ["user_manual/images/android-1.png", "user_manual/images/android-2.png", "user_manual/images/android-3.png", "user_manual/images/android-4.png", "user_manual/images/android-10.png", "user_manual/images/davdroid-1-button-in-nextcloud-app.png", "user_manual/images/davdroid-2-install-davdroid.png", "user_manual/images/davdroid-3-enter-password.png", "user_manual/images/davdroid-4-specify-owner-email.png"]
|
||||
precedence = "aggregate"
|
||||
SPDX-FileCopyrightText = "2016-2024 Nextcloud GmbH and Nextcloud contributors"
|
||||
SPDX-License-Identifier = "AGPL-3.0-or-later"
|
||||
|
||||
[[annotations]]
|
||||
path = ["user_manual/conf.py", "user_manual/android_app.rst", "user_manual/index.rst", "user_manual/conf.py", "user_manual/Makefile"]
|
||||
precedence = "aggregate"
|
||||
SPDX-FileCopyrightText = "2015-2016 ownCloud Inc., 2016-2024 Nextcloud GmbH"
|
||||
SPDX-License-Identifier = "GPL-2.0-only"
|
||||
|
||||
[[annotations]]
|
||||
path = ["user_manual/images/android-11.png", "user_manual/images/android-12.png", "user_manual/images/android-13.png", "user_manual/images/android-14.png", "user_manual/images/android-15.png", "user_manual/images/android-5.png", "user_manual/images/android-6.png", "user_manual/images/android-8.png", "user_manual/images/android-9.png"]
|
||||
precedence = "aggregate"
|
||||
SPDX-FileCopyrightText = "2015-2016 ownCloud Inc."
|
||||
SPDX-License-Identifier = "GPL-2.0-only"
|
||||
|
||||
[[annotations]]
|
||||
path = ["app/src/**/res/mipmap-**dpi/ic_launcher.png", "app/src/**/ic_launcher-web.png", "src/generic/fastlane/metadata/android/en-US/images/icon.png", "src/versionDev/fastlane/metadata/android/en-US/images/icon.png", "app/src/main/ic_launcher-web-round.png"]
|
||||
precedence = "aggregate"
|
||||
SPDX-FileCopyrightText = "2017-2024 Nextcloud GmbH <https://nextcloud.com/trademarks/>"
|
||||
SPDX-License-Identifier = "LicenseRef-NextcloudTrademarks"
|
||||
|
||||
[[annotations]]
|
||||
path = [".idea/**", "app/schemas/com.nextcloud.client.database.NextcloudDatabase/**.json", "app/screenshots/generic/debug/**.png", "app/src/main/res/values-**/strings.xml", "src/**/fastlane/metadata/android/**/**.txt", "src/versionDev/fastlane/metadata/android/**/changelogs/**.txt", "app/src/androidTest/assets/**", "app/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker", "app/src/**/google-services.json", "app/src/main/res/drawable-**dpi/checker_16_16.png", "app/src/main/res/raw/encryption_key_words.txt", "app/src/main/resources/ical4j.properties", "app/src/main/res/drawable-**dpi/apk.png", "app/src/main/res/drawable-**dpi/fdroid.png", "app/src/main/res/drawable-**dpi/playstore.png", "app/src/main/res/drawable-**dpi/background.png", "app/src/main/res/drawable-**dpi/background_nc18.png"]
|
||||
precedence = "aggregate"
|
||||
SPDX-FileCopyrightText = "2016-2024 Nextcloud GmbH and Nextcloud contributors"
|
||||
SPDX-License-Identifier = "AGPL-3.0-or-later"
|
||||
63
SECURITY.md
|
|
@ -1,28 +1,71 @@
|
|||
<!--
|
||||
~ SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
|
||||
~ SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
~ SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
-->
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
# 💡 TLDR: Report issues at [hackerone.com/nextcloud](https://hackerone.com/nextcloud)
|
||||
|
||||
# Security Policy
|
||||
|
||||
[Security](https://nextcloud.com/security/) is very important to us.
|
||||
|
||||
If you believe you have found a security vulnerability that meets our definition of a security
|
||||
vulnerability, please report is as described below.
|
||||
|
||||
## Context
|
||||
|
||||
Please review our [threat model and accepted risks](https://nextcloud.com/security/threat-model) to learn what
|
||||
is currently considered a security vulnerability versus expected behavior. And review what is considered
|
||||
[in scope or bounty eligible](https://hackerone.com/nextcloud/policy_scopes).
|
||||
|
||||
Only the latest version is supported. We release every second month a feature release (currently 3.x) and inbetween a bug fix release (3.x.y).
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Security is very important to us. If you have discovered a security issue with Nextcloud,
|
||||
please read our responsible disclosure guidelines and contact us at [hackerone.com/nextcloud](https://hackerone.com/nextcloud).
|
||||
**⚠️ Please do _not_ report security vulnerabilities through public GitHub issues.**
|
||||
|
||||
If you have discovered a security matter with Nextcloud, please read our
|
||||
[responsible disclosure guidelines](https://nextcloud.com/security/) and contact us at
|
||||
[hackerone.com/nextcloud](https://hackerone.com/nextcloud).
|
||||
|
||||
Your report should include:
|
||||
|
||||
- Product version
|
||||
- A vulnerability description
|
||||
- Reproduction steps
|
||||
- Any other details you think are likely to be important
|
||||
|
||||
A member of the security team will confirm the vulnerability, determine its impact, and develop a fix.
|
||||
The fix will be applied to the master branch, tested, and packaged in the next bug fix release.
|
||||
### What to Expect
|
||||
|
||||
You should receive an initial acknowledgement within 24 hours in most cases.
|
||||
|
||||
A member of the security team will confirm the vulnerability, determine its impact, follow-up with any questions,
|
||||
and coordinate the fix and publication.
|
||||
|
||||
The fix will be applied to all applicable and still supported stable branches, tested, and packaged in the next security release.
|
||||
The vulnerability will be publicly announced after the release. Finally, your name will be added
|
||||
to the [hall of fame](https://hackerone.com/nextcloud/thanks) as a thank you from the entire Nextcloud community. Note our
|
||||
[threat model](https://nextcloud.com/security/threat-model) to know what is expected behavior.
|
||||
to the [hall of fame](https://hackerone.com/nextcloud/thanks) as a thank you from the entire Nextcloud
|
||||
community.
|
||||
|
||||
If the vulnerability involves an app that is not maintained by Nextcloud (i.e. hosted by the
|
||||
Nextcloud project but community maintained, or hosted elsewhere), the security team will try to coordinate with the
|
||||
current maintainer and help to get the issue fixed in similar fashion.
|
||||
|
||||
Please visit https://nextcloud.com/security/ for further information about security.
|
||||
### Bug Bounties
|
||||
|
||||
If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Details
|
||||
on past bounty ranges can be found at [hackerone.com/nextcloud](https://hackerone.com/nextcloud).
|
||||
|
||||
## Existing Security Advisories
|
||||
|
||||
Published security advisories for the Nextcloud Server, Clients and Apps can be viewed at
|
||||
[https://github.com/nextcloud/security-advisories/security/advisories](https://github.com/nextcloud/security-advisories/security/advisories).
|
||||
|
||||
## Supported Versions
|
||||
|
||||
Only the latest version is supported. We release every second month a feature release (currently 3.x) and inbetween a bug fix release (3.x.y).
|
||||
|
||||
## Additional Information
|
||||
|
||||
Please visit [https://nextcloud.com/security/](https://nextcloud.com/security/) for further information about Nextcloud security.
|
||||
Please visit [https://nextcloud.com/security/threat-model](https://nextcloud.com/security/threat-model) for our threat model and accepted risks.
|
||||
|
|
|
|||
2
SETUP.md
|
|
@ -1,6 +1,6 @@
|
|||
<!--
|
||||
~ SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
|
||||
~ SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
~ SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
-->
|
||||
These instructions will help you to set up your development environment, get the source code of the Nextcloud for Android app and build it by yourself. If you want to help developing the app take a look to the [contribution guidelines][0].
|
||||
|
||||
|
|
|
|||
2
app/.gitignore
vendored
|
|
@ -1,3 +1,3 @@
|
|||
# SPDX-FileCopyrightText: 2022-2024 Nextcloud GmbH and Nextcloud contributors
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
/build
|
||||
490
app/build.gradle
|
|
@ -2,11 +2,11 @@
|
|||
* Nextcloud - Android Client
|
||||
*
|
||||
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-FileCopyrightText: 2024 Alper Ozturk <alper_ozturk@proton.me>
|
||||
* SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
|
||||
* SPDX-FileCopyrightText: 2024 Tobias Kaminsky <tobias@kaminsky.me>
|
||||
* SPDX-FileCopyrightText: 2024 Andy Scherzinger <info@andy-scherzinger.de>
|
||||
* SPDX-FileCopyrightText: 2022 Álvaro Brey Vilas <alvaro@alvarobrey.com>
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
*/
|
||||
import com.github.spotbugs.snom.Confidence
|
||||
import com.github.spotbugs.snom.Effort
|
||||
|
|
@ -16,11 +16,11 @@ import org.gradle.internal.jvm.Jvm
|
|||
buildscript {
|
||||
dependencies {
|
||||
classpath "com.android.tools.build:gradle:$androidPluginVersion"
|
||||
classpath 'com.github.spotbugs.snom:spotbugs-gradle-plugin:6.0.12'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.6"
|
||||
classpath "commons-httpclient:commons-httpclient:3.1@jar" // remove after entire switch to lib v2
|
||||
classpath 'com.karumi:shot:6.1.0'
|
||||
classpath libs.spotbugs.gradle.plugin
|
||||
classpath libs.kotlin.gradle.plugin
|
||||
classpath libs.detekt.gradle.plugin
|
||||
classpath libs.commons.httpclient.commons.httpclient // remove after entire switch to lib v2
|
||||
classpath libs.shot
|
||||
classpath "org.jacoco:org.jacoco.core:$jacoco_version"
|
||||
classpath "org.jacoco:org.jacoco.report:$jacoco_version"
|
||||
classpath "org.jacoco:org.jacoco.agent:$jacoco_version"
|
||||
|
|
@ -28,40 +28,35 @@ buildscript {
|
|||
}
|
||||
|
||||
plugins {
|
||||
id "com.diffplug.spotless" version "6.20.0"
|
||||
id 'com.google.devtools.ksp' version '1.9.23-1.0.20' apply false
|
||||
alias(libs.plugins.kotlin.compose)
|
||||
alias(libs.plugins.spotless)
|
||||
alias(libs.plugins.kapt)
|
||||
alias(libs.plugins.ksp) apply false
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: "com.android.application"
|
||||
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlin-kapt'
|
||||
apply plugin: 'kotlin-parcelize'
|
||||
apply plugin: 'checkstyle'
|
||||
apply plugin: 'pmd'
|
||||
apply plugin: "kotlin-android"
|
||||
apply plugin: "kotlin-parcelize"
|
||||
apply plugin: "checkstyle"
|
||||
apply plugin: "pmd"
|
||||
apply from: "$rootProject.projectDir/jacoco.gradle"
|
||||
apply plugin: 'com.github.spotbugs'
|
||||
apply plugin: 'io.gitlab.arturbosch.detekt'
|
||||
apply plugin: "com.github.spotbugs"
|
||||
apply plugin: "io.gitlab.arturbosch.detekt"
|
||||
|
||||
// needed to make renovate run without shot, as shot requires Android SDK
|
||||
// https://github.com/pedrovgs/Shot/issues/300
|
||||
if (shotTest) {
|
||||
apply plugin: 'shot'
|
||||
apply plugin: "shot"
|
||||
}
|
||||
apply plugin: 'com.google.devtools.ksp'
|
||||
apply plugin: "com.google.devtools.ksp"
|
||||
|
||||
|
||||
println "Gradle uses Java ${Jvm.current()}"
|
||||
|
||||
configurations {
|
||||
configureEach {
|
||||
exclude group: 'org.jetbrains', module: 'annotations-java5' // via prism4j, already using annotations explicitly
|
||||
|
||||
// check for updates every build
|
||||
resolutionStrategy {
|
||||
cacheChangingModulesFor 0, 'seconds'
|
||||
exclude group: "org.jetbrains.kotlinx", module: "kotlinx-coroutines-debug"
|
||||
}
|
||||
exclude group: "org.jetbrains", module: "annotations-java5" // via prism4j, already using annotations explicitly
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -72,39 +67,59 @@ configurations.configureEach {
|
|||
useVersion(checkerVersion)
|
||||
because("https://github.com/google/ExoPlayer/issues/10007")
|
||||
}
|
||||
|
||||
if (requested.group == "commons-logging" && requested.name == "commons-logging") {
|
||||
useTarget("org.slf4j:jcl-over-slf4j:1.7.4")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// semantic versioning for version code
|
||||
def versionMajor = 3
|
||||
def versionMinor = 29
|
||||
def versionPatch = 3
|
||||
def versionBuild = 90 // 0-50=Alpha / 51-98=RC / 90-99=stable
|
||||
def versionMinor = 35
|
||||
def versionPatch = 0
|
||||
def versionBuild = 0 // 0-50=Alpha / 51-98=RC / 90-99=stable
|
||||
|
||||
|
||||
def ndkEnv = new HashMap<String, String>()
|
||||
file("$project.rootDir/ndk.env").readLines().each() {
|
||||
def (key, value) = it.tokenize('=')
|
||||
def (key, value) = it.tokenize("=")
|
||||
ndkEnv.put(key, value)
|
||||
}
|
||||
|
||||
def perfAnalysis = project.hasProperty('perfAnalysis')
|
||||
def perfAnalysis = project.hasProperty("perfAnalysis")
|
||||
|
||||
def getConfigProperties() {
|
||||
def props = new Properties()
|
||||
def file = rootProject.file(".gradle/config.properties")
|
||||
if (file.exists()) {
|
||||
props.load(new FileInputStream(file))
|
||||
}
|
||||
return props
|
||||
}
|
||||
|
||||
def configProps = getConfigProperties()
|
||||
|
||||
android {
|
||||
// install this NDK version and Cmake to produce smaller APKs. Build will still work if not installed
|
||||
ndkVersion "${ndkEnv.get("NDK_VERSION")}"
|
||||
ndkVersion = "${ndkEnv.get("NDK_VERSION")}"
|
||||
|
||||
|
||||
namespace 'com.owncloud.android'
|
||||
testNamespace "${namespace}.test"
|
||||
namespace = "com.owncloud.android"
|
||||
testNamespace = "${namespace}.test"
|
||||
|
||||
androidResources {
|
||||
generateLocaleConfig = true
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 24
|
||||
targetSdkVersion 34
|
||||
compileSdk 34
|
||||
applicationId = "com.nextcloud.client"
|
||||
minSdk = 27
|
||||
targetSdk = 35
|
||||
compileSdk = 35
|
||||
|
||||
buildConfigField 'boolean', 'CI', ciBuild.toString()
|
||||
buildConfigField 'boolean', 'RUNTIME_PERF_ANALYSIS', perfAnalysis.toString()
|
||||
buildConfigField "boolean", "CI", ciBuild.toString()
|
||||
buildConfigField "boolean", "RUNTIME_PERF_ANALYSIS", perfAnalysis.toString()
|
||||
|
||||
javaCompileOptions {
|
||||
annotationProcessorOptions {
|
||||
|
|
@ -121,7 +136,7 @@ android {
|
|||
testInstrumentationRunnerArgument "TEST_SERVER_URL", "${NC_TEST_SERVER_BASEURL}"
|
||||
testInstrumentationRunnerArgument "TEST_SERVER_USERNAME", "${NC_TEST_SERVER_USERNAME}"
|
||||
testInstrumentationRunnerArgument "TEST_SERVER_PASSWORD", "${NC_TEST_SERVER_PASSWORD}"
|
||||
testInstrumentationRunnerArguments disableAnalytics: 'true'
|
||||
testInstrumentationRunnerArguments disableAnalytics: "true"
|
||||
|
||||
versionCode versionMajor * 10000000 + versionMinor * 10000 + versionPatch * 100 + versionBuild
|
||||
|
||||
|
|
@ -139,8 +154,15 @@ android {
|
|||
flavorDimensions += "default"
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
buildConfigField "String", "NC_TEST_SERVER_DATA_STRING", "\"\""
|
||||
}
|
||||
|
||||
debug {
|
||||
testCoverageEnabled(project.hasProperty('coverage'))
|
||||
testCoverageEnabled = project.hasProperty("coverage")
|
||||
resConfigs "xxxhdpi"
|
||||
|
||||
buildConfigField "String", "NC_TEST_SERVER_DATA_STRING", "\"nc://login/user:${configProps['NC_TEST_SERVER_USERNAME']}&password:${configProps['NC_TEST_SERVER_PASSWORD']}&server:${configProps['NC_TEST_SERVER_BASEURL']}\""
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -151,17 +173,17 @@ android {
|
|||
productFlavors {
|
||||
// used for f-droid
|
||||
generic {
|
||||
applicationId 'com.nextcloud.client'
|
||||
applicationId "com.nextcloud.client"
|
||||
dimension "default"
|
||||
}
|
||||
|
||||
gplay {
|
||||
applicationId 'com.nextcloud.client'
|
||||
applicationId "com.nextcloud.client"
|
||||
dimension "default"
|
||||
}
|
||||
|
||||
huawei {
|
||||
applicationId 'com.nextcloud.client'
|
||||
applicationId "com.nextcloud.client"
|
||||
dimension "default"
|
||||
}
|
||||
|
||||
|
|
@ -180,10 +202,9 @@ android {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
testOptions {
|
||||
unitTests.returnDefaultValues = true
|
||||
animationsDisabled true
|
||||
animationsDisabled = true
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -191,17 +212,18 @@ android {
|
|||
// see http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Configuring-the-Structure
|
||||
packagingOptions {
|
||||
resources {
|
||||
excludes += 'META-INF/LICENSE*'
|
||||
pickFirst 'MANIFEST.MF' // workaround for duplicated manifest on some dependencies
|
||||
excludes += "META-INF/LICENSE*"
|
||||
excludes += "META-INF/versions/9/OSGI-INF/MANIFEST*"
|
||||
pickFirst "MANIFEST.MF" // workaround for duplicated manifest on some dependencies
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register("checkstyle", Checkstyle) {
|
||||
configFile = file("${rootProject.projectDir}/checkstyle.xml")
|
||||
configProperties.checkstyleSuppressionsPath = file("${project.rootDir}/config/quality/checkstyle/suppressions.xml").absolutePath
|
||||
source 'src'
|
||||
include '**/*.java'
|
||||
exclude '**/gen/**'
|
||||
source "src"
|
||||
include "**/*.java"
|
||||
exclude "**/gen/**"
|
||||
classpath = files()
|
||||
}
|
||||
|
||||
|
|
@ -210,26 +232,26 @@ android {
|
|||
ignoreFailures = true // should continue checking
|
||||
ruleSets = []
|
||||
|
||||
source 'src'
|
||||
include '**/*.java'
|
||||
exclude '**/gen/**'
|
||||
source "src"
|
||||
include "**/*.java"
|
||||
exclude "**/gen/**"
|
||||
|
||||
reports {
|
||||
xml {
|
||||
destination = file("$project.buildDir/reports/pmd/pmd.xml")
|
||||
destination = layout.buildDirectory.file("reports/pmd/pmd.xml").get().asFile
|
||||
}
|
||||
html {
|
||||
destination = file("$project.buildDir/reports/pmd/pmd.html")
|
||||
destination = layout.buildDirectory.file("reports/pmd/pmd.html").get().asFile
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
check.dependsOn 'checkstyle', 'spotbugsGplayDebug', 'pmd', 'lint', 'spotlessKotlinCheck', 'detekt'
|
||||
check.dependsOn "checkstyle", "spotbugsGplayDebug", "pmd", "lint", "spotlessKotlinCheck", "detekt"
|
||||
|
||||
buildFeatures {
|
||||
dataBinding true
|
||||
viewBinding true
|
||||
aidl true
|
||||
dataBinding = true
|
||||
viewBinding = true
|
||||
aidl = true
|
||||
compose = true
|
||||
}
|
||||
|
||||
|
|
@ -243,11 +265,11 @@ android {
|
|||
}
|
||||
|
||||
lint {
|
||||
abortOnError false
|
||||
checkGeneratedSources true
|
||||
disable 'MissingTranslation', 'GradleDependency', 'VectorPath', 'IconMissingDensityFolder', 'IconDensities', 'GoogleAppIndexingWarning', 'MissingDefaultResource', 'InvalidPeriodicWorkRequestInterval', 'StringFormatInvalid', 'MissingQuantity'
|
||||
htmlOutput file("$project.buildDir/reports/lint/lint.html")
|
||||
htmlReport true
|
||||
abortOnError = false
|
||||
checkGeneratedSources = true
|
||||
disable "MissingTranslation", "GradleDependency", "VectorPath", "IconMissingDensityFolder", "IconDensities", "GoogleAppIndexingWarning", "MissingDefaultResource", "InvalidPeriodicWorkRequestInterval", "StringFormatInvalid", "MissingQuantity"
|
||||
htmlOutput = layout.buildDirectory.file("reports/lint/lint.html").get().asFile
|
||||
htmlReport = true
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
|
|
@ -255,189 +277,251 @@ android {
|
|||
androidTest.assets.srcDirs += files("$projectDir/schemas".toString())
|
||||
}
|
||||
|
||||
composeOptions {
|
||||
kotlinCompilerExtensionVersion = "1.5.11"
|
||||
kapt {
|
||||
useBuildCache = true
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// region Nextcloud library
|
||||
implementation("com.github.nextcloud:android-library:$androidLibraryVersion") {
|
||||
exclude group: 'org.ogce', module: 'xpp3' // unused in Android and brings wrong Junit version
|
||||
exclude group: "org.ogce", module: "xpp3" // unused in Android and brings wrong Junit version
|
||||
}
|
||||
// endregion
|
||||
|
||||
// Jetpack Compose
|
||||
implementation(platform("androidx.compose:compose-bom:2024.04.00"))
|
||||
implementation("androidx.compose.ui:ui")
|
||||
implementation("androidx.compose.ui:ui-graphics")
|
||||
implementation("androidx.compose.material3:material3")
|
||||
implementation("androidx.compose.ui:ui-tooling-preview:1.6.5")
|
||||
debugImplementation 'androidx.compose.ui:ui-tooling:1.6.5'
|
||||
// region Splash Screen
|
||||
implementation libs.splashscreen
|
||||
// endregion
|
||||
|
||||
compileOnly 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
|
||||
// remove after entire switch to lib v2
|
||||
implementation "commons-httpclient:commons-httpclient:3.1@jar" // remove after entire switch to lib v2
|
||||
implementation 'org.apache.jackrabbit:jackrabbit-webdav:2.13.5' // remove after entire switch to lib v2
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
||||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||
implementation 'com.google.android.material:material:1.11.0'
|
||||
implementation 'com.jakewharton:disklrucache:2.0.2'
|
||||
implementation "androidx.appcompat:appcompat:$appCompatVersion"
|
||||
implementation 'androidx.webkit:webkit:1.10.0'
|
||||
implementation 'androidx.cardview:cardview:1.0.0'
|
||||
implementation 'androidx.exifinterface:exifinterface:1.3.7'
|
||||
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.1"
|
||||
implementation "androidx.lifecycle:lifecycle-service:2.8.1"
|
||||
implementation "androidx.work:work-runtime:$workRuntime"
|
||||
implementation "androidx.work:work-runtime-ktx:$workRuntime"
|
||||
implementation "androidx.fragment:fragment-ktx:1.6.2"
|
||||
implementation 'com.github.albfernandez:juniversalchardet:2.0.3' // need this version for Android <7
|
||||
compileOnly 'com.google.code.findbugs:annotations:3.0.1u2'
|
||||
implementation 'commons-io:commons-io:2.16.1'
|
||||
implementation 'org.greenrobot:eventbus:3.3.1'
|
||||
implementation 'com.googlecode.ez-vcard:ez-vcard:0.12.1'
|
||||
implementation 'org.lukhnos:nnio:0.3'
|
||||
implementation 'org.bouncycastle:bcpkix-jdk18on:1.77'
|
||||
implementation 'com.google.code.gson:gson:2.10.1'
|
||||
implementation 'com.github.nextcloud-deps:sectioned-recyclerview:0.6.1'
|
||||
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
|
||||
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.28'
|
||||
implementation 'com.github.nextcloud-deps:qrcodescanner:0.1.2.4' // 'com.github.blikoon:QRCodeScanner:0.1.2'
|
||||
implementation 'com.google.android.flexbox:flexbox:3.0.0'
|
||||
implementation('com.github.bumptech.glide:glide:3.8.0') {
|
||||
exclude group: "com.android.support"
|
||||
}
|
||||
implementation 'com.caverock:androidsvg:1.4'
|
||||
implementation 'androidx.annotation:annotation:1.7.1'
|
||||
implementation 'com.vanniktech:emoji-google:0.18.0'
|
||||
// region Jetpack Compose
|
||||
implementation(platform(libs.compose.bom))
|
||||
implementation(libs.compose.ui)
|
||||
implementation(libs.compose.ui.graphics)
|
||||
implementation(libs.compose.material3)
|
||||
debugImplementation(libs.compose.ui.tooling)
|
||||
implementation(libs.compose.ui.tooling.preview)
|
||||
// endregion
|
||||
|
||||
implementation "com.github.nextcloud-deps.hwsecurity:hwsecurity-fido:$fidoVersion"
|
||||
implementation "com.github.nextcloud-deps.hwsecurity:hwsecurity-fido2:$fidoVersion"
|
||||
// region Media3
|
||||
implementation libs.media3.ui
|
||||
implementation libs.media3.session
|
||||
implementation libs.media3.exoplayer
|
||||
implementation libs.media3.datasource
|
||||
// endregion
|
||||
|
||||
// document scanner not available on FDroid (generic) due to OpenCV binaries
|
||||
gplayImplementation project(':appscan')
|
||||
huaweiImplementation project(':appscan')
|
||||
qaImplementation project(':appscan')
|
||||
// region Room
|
||||
implementation libs.room.runtime
|
||||
ksp "androidx.room:room-compiler:$roomVersion"
|
||||
androidTestImplementation libs.room.testing
|
||||
// endregion
|
||||
|
||||
spotbugsPlugins 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.13.0'
|
||||
spotbugsPlugins 'com.mebigfatguy.fb-contrib:fb-contrib:7.6.4'
|
||||
// region Espresso
|
||||
androidTestImplementation libs.espresso.core
|
||||
androidTestImplementation libs.espresso.contrib
|
||||
androidTestImplementation libs.espresso.web
|
||||
androidTestImplementation libs.espresso.accessibility
|
||||
androidTestImplementation libs.espresso.intents
|
||||
androidTestImplementation libs.espresso.idling.resource
|
||||
// endregion
|
||||
|
||||
implementation "com.google.dagger:dagger:$daggerVersion"
|
||||
implementation "com.google.dagger:dagger-android:$daggerVersion"
|
||||
implementation "com.google.dagger:dagger-android-support:$daggerVersion"
|
||||
// region Glide
|
||||
implementation libs.glide
|
||||
ksp libs.ksp
|
||||
// endregion
|
||||
|
||||
// region UI
|
||||
implementation libs.appcompat
|
||||
implementation libs.webkit
|
||||
implementation libs.cardview
|
||||
implementation libs.exifinterface
|
||||
implementation libs.fragment.ktx
|
||||
// endregion
|
||||
|
||||
// region Worker
|
||||
implementation libs.work.runtime
|
||||
implementation libs.work.runtime.ktx
|
||||
// endregion
|
||||
|
||||
// region Lifecycle
|
||||
implementation libs.lifecycle.viewmodel.ktx
|
||||
implementation libs.lifecycle.service
|
||||
implementation(libs.lifecycle.runtime.ktx)
|
||||
// endregion
|
||||
|
||||
// region JUnit
|
||||
androidTestImplementation libs.junit
|
||||
androidTestImplementation libs.rules
|
||||
androidTestImplementation libs.runner
|
||||
androidTestUtil libs.orchestrator
|
||||
androidTestImplementation libs.core.ktx
|
||||
androidTestImplementation libs.core.testing
|
||||
// endregion
|
||||
|
||||
// region other libraries
|
||||
compileOnly libs.org.jbundle.util.osgi.wrapped.org.apache.http.client
|
||||
implementation libs.commons.httpclient.commons.httpclient // remove after entire switch to lib v2
|
||||
implementation libs.jackrabbit.webdav // remove after entire switch to lib v2
|
||||
implementation libs.constraintlayout
|
||||
implementation libs.legacy.support.v4
|
||||
implementation libs.material
|
||||
implementation libs.disklrucache
|
||||
implementation libs.juniversalchardet // need this version for Android <7
|
||||
compileOnly libs.annotations
|
||||
implementation libs.commons.io
|
||||
implementation libs.eventbus
|
||||
implementation libs.ez.vcard
|
||||
implementation libs.nnio
|
||||
implementation libs.bcpkix.jdk18on
|
||||
implementation libs.gson
|
||||
implementation libs.sectioned.recyclerview
|
||||
implementation libs.photoview
|
||||
implementation libs.android.gif.drawable
|
||||
implementation libs.qrcodescanner // "com.github.blikoon:QRCodeScanner:0.1.2"
|
||||
implementation libs.flexbox
|
||||
implementation libs.androidsvg
|
||||
implementation libs.annotation
|
||||
implementation libs.emoji.google
|
||||
// endregion
|
||||
|
||||
// region AppScan, document scanner not available on FDroid (generic) due to OpenCV binaries
|
||||
gplayImplementation project(":appscan")
|
||||
huaweiImplementation project(":appscan")
|
||||
qaImplementation project(":appscan")
|
||||
// endregion
|
||||
|
||||
// region SpotBugs
|
||||
spotbugsPlugins libs.findsecbugs.plugin
|
||||
spotbugsPlugins libs.fb.contrib
|
||||
// endregion
|
||||
|
||||
// region Dagger
|
||||
implementation libs.dagger
|
||||
implementation libs.dagger.android
|
||||
implementation libs.dagger.android.support
|
||||
kapt "com.google.dagger:dagger-compiler:$daggerVersion"
|
||||
kapt "com.google.dagger:dagger-android-processor:$daggerVersion"
|
||||
// endregion
|
||||
|
||||
implementation 'org.conscrypt:conscrypt-android:2.5.2'
|
||||
// region Crypto
|
||||
implementation libs.conscrypt.android
|
||||
// endregion
|
||||
|
||||
implementation "androidx.media3:media3-ui:$androidxMediaVersion"
|
||||
implementation "androidx.media3:media3-exoplayer:$androidxMediaVersion"
|
||||
implementation "androidx.media3:media3-datasource-okhttp:$androidxMediaVersion"
|
||||
// region Library
|
||||
implementation libs.library
|
||||
// endregion
|
||||
|
||||
implementation 'me.zhanghai.android.fastscroll:library:1.3.0'
|
||||
// region Shimmer
|
||||
implementation libs.loaderviewlibrary
|
||||
// endregion
|
||||
|
||||
// Shimmer animation
|
||||
implementation 'io.github.elye:loaderviewlibrary:3.0.0'
|
||||
|
||||
// dependencies for markdown rendering
|
||||
implementation "io.noties.markwon:core:$markwonVersion"
|
||||
implementation "io.noties.markwon:ext-strikethrough:$markwonVersion"
|
||||
implementation "io.noties.markwon:ext-tables:$markwonVersion"
|
||||
implementation "io.noties.markwon:ext-tasklist:$markwonVersion"
|
||||
implementation "io.noties.markwon:html:$markwonVersion"
|
||||
|
||||
implementation "io.noties.markwon:syntax-highlight:$markwonVersion"
|
||||
implementation "io.noties:prism4j:$prismVersion"
|
||||
// region Markdown rendering
|
||||
implementation libs.core
|
||||
implementation libs.ext.strikethrough
|
||||
implementation libs.ext.tables
|
||||
implementation libs.ext.tasklist
|
||||
implementation libs.html
|
||||
implementation libs.syntax.highlight
|
||||
implementation libs.prism4j
|
||||
kapt "io.noties:prism4j-bundler:$prismVersion"
|
||||
// endregion
|
||||
|
||||
// dependencies for image cropping and rotation
|
||||
implementation 'com.vanniktech:android-image-cropper:4.5.0'
|
||||
// region Image cropping / rotation
|
||||
implementation libs.android.image.cropper
|
||||
// endregion
|
||||
|
||||
implementation 'org.osmdroid:osmdroid-android:6.1.18'
|
||||
// region Maps
|
||||
implementation libs.osmdroid.android
|
||||
// endregion
|
||||
|
||||
implementation('org.mnode.ical4j:ical4j:3.0.0') {
|
||||
['org.apache.commons', 'commons-logging'].each {
|
||||
// region iCal4j
|
||||
implementation(libs.ical4j) {
|
||||
["org.apache.commons", "commons-logging"].each {
|
||||
exclude group: "$it"
|
||||
}
|
||||
}
|
||||
// endregion
|
||||
|
||||
// region LeakCanary
|
||||
if (perfAnalysis) {
|
||||
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.13'
|
||||
debugImplementation "com.squareup.leakcanary:leakcanary-android:2.14"
|
||||
}
|
||||
// endregion
|
||||
|
||||
// dependencies for local unit tests
|
||||
testImplementation 'junit:junit:4.13.2'
|
||||
testImplementation "org.mockito:mockito-core:$mockitoVersion"
|
||||
testImplementation "androidx.test:core:$androidxTestVersion"
|
||||
testImplementation 'org.json:json:20240303'
|
||||
testImplementation "org.mockito.kotlin:mockito-kotlin:$mockitoKotlinVersion"
|
||||
testImplementation 'androidx.arch.core:core-testing:2.2.0'
|
||||
// region Local Unit Test
|
||||
testImplementation libs.junit.junit
|
||||
testImplementation libs.mockito.core
|
||||
testImplementation libs.test.core
|
||||
testImplementation libs.json
|
||||
testImplementation libs.mockito.kotlin
|
||||
testImplementation libs.core.testing
|
||||
testImplementation "io.mockk:mockk:$mockkVersion"
|
||||
testImplementation "io.mockk:mockk-android:$mockkVersion"
|
||||
testImplementation libs.mockk.android
|
||||
// endregion
|
||||
|
||||
// dependencies for instrumented tests
|
||||
// JUnit4 Rules
|
||||
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
|
||||
androidTestImplementation "androidx.test:rules:$androidxTestVersion"
|
||||
// Android JUnit Runner
|
||||
androidTestImplementation "androidx.test:runner:1.5.2"
|
||||
androidTestUtil "androidx.test:orchestrator:1.4.2"
|
||||
androidTestImplementation "androidx.test:core-ktx:$androidxTestVersion"
|
||||
|
||||
// Espresso
|
||||
androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion"
|
||||
androidTestImplementation "androidx.test.espresso:espresso-contrib:$espressoVersion"
|
||||
androidTestImplementation "androidx.test.espresso:espresso-web:$espressoVersion"
|
||||
androidTestImplementation "androidx.test.espresso:espresso-accessibility:$espressoVersion"
|
||||
androidTestImplementation "androidx.test.espresso:espresso-intents:$espressoVersion"
|
||||
androidTestImplementation "androidx.test.espresso:espresso-idling-resource:$espressoVersion"
|
||||
|
||||
// Mocking support
|
||||
androidTestImplementation 'com.github.tmurakami:dexopener:2.0.5' // required to allow mocking on API 27 and older
|
||||
androidTestImplementation "org.mockito.kotlin:mockito-kotlin:$mockitoKotlinVersion"
|
||||
androidTestImplementation "org.mockito:mockito-core:$mockitoVersion"
|
||||
androidTestImplementation("org.mockito:mockito-android:$mockitoVersion")
|
||||
androidTestImplementation "io.mockk:mockk-android:$mockkVersion"
|
||||
androidTestImplementation 'androidx.arch.core:core-testing:2.2.0'
|
||||
androidTestImplementation "com.facebook.testing.screenshot:core:0.15.0"
|
||||
// region Mocking support
|
||||
androidTestImplementation libs.dexopener // required to allow mocking on API 27 and older
|
||||
androidTestImplementation libs.mockito.kotlin
|
||||
androidTestImplementation libs.mockito.core
|
||||
androidTestImplementation(libs.mockito.android)
|
||||
androidTestImplementation libs.mockk.android
|
||||
androidTestImplementation libs.screenshot.core
|
||||
// endregion
|
||||
|
||||
// region UIAutomator
|
||||
// UIAutomator - for cross-app UI tests, and to grant screen is turned on in Espresso tests
|
||||
// androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
|
||||
// androidTestImplementation "androidx.test.uiautomator:uiautomator:2.2.0"
|
||||
// fix conflict in dependencies; see http://g.co/androidstudio/app-test-app-conflict for details
|
||||
//androidTestImplementation "com.android.support:support-annotations:${supportLibraryVersion}"
|
||||
androidTestImplementation 'tools.fastlane:screengrab:2.1.1'
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||
// androidTestImplementation "com.android.support:support-annotations:${supportLibraryVersion}"
|
||||
androidTestImplementation libs.screengrab
|
||||
// endregion
|
||||
|
||||
implementation "com.github.stateless4j:stateless4j:2.6.0"
|
||||
// region Kotlin
|
||||
implementation libs.kotlin.stdlib
|
||||
// endregion
|
||||
|
||||
// upon each update first test: new registration, receive push
|
||||
gplayImplementation "com.google.firebase:firebase-messaging:23.4.1"
|
||||
gplayImplementation 'com.google.android.play:review-ktx:2.0.1'
|
||||
// region Stateless
|
||||
implementation libs.stateless4j
|
||||
// endregion
|
||||
|
||||
implementation 'com.github.nextcloud.android-common:ui:0.17.0'
|
||||
// region Google Play dependencies, upon each update first test: new registration, receive push
|
||||
gplayImplementation libs.firebase.messaging
|
||||
gplayImplementation libs.play.services.base
|
||||
gplayImplementation libs.review.ktx
|
||||
// endregion
|
||||
|
||||
implementation "androidx.room:room-runtime:$roomVersion"
|
||||
ksp "androidx.room:room-compiler:$roomVersion"
|
||||
androidTestImplementation "androidx.room:room-testing:$roomVersion"
|
||||
// region UI
|
||||
implementation libs.ui
|
||||
// endregion
|
||||
|
||||
implementation "io.coil-kt:coil:2.6.0"
|
||||
|
||||
// splash screen dependency ref: https://developer.android.com/develop/ui/views/launch/splash-screen/migrate
|
||||
implementation 'androidx.core:core-splashscreen:1.0.1'
|
||||
// region Image loading
|
||||
implementation libs.coil
|
||||
// endregion
|
||||
}
|
||||
|
||||
|
||||
configurations.configureEach {
|
||||
resolutionStrategy {
|
||||
cacheChangingModulesFor 0, 'seconds'
|
||||
force 'org.objenesis:objenesis:3.3'
|
||||
force "org.objenesis:objenesis:3.4"
|
||||
eachDependency { details ->
|
||||
if ('org.jacoco' == details.requested.group) {
|
||||
if ("org.jacoco" == details.requested.group) {
|
||||
details.useVersion "$jacoco_version"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Run the compiler as a separate process
|
||||
tasks.withType(JavaCompile).configureEach {
|
||||
options.fork = true
|
||||
|
||||
// Enable Incremental Compilation
|
||||
options.incremental = true
|
||||
}
|
||||
|
||||
tasks.withType(Test).configureEach {
|
||||
// Run tests in parallel
|
||||
maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1
|
||||
|
||||
// increased logging for tests
|
||||
testLogging {
|
||||
events "passed", "skipped", "failed"
|
||||
|
|
@ -465,7 +549,7 @@ if (shotTest) {
|
|||
showOnlyFailingTestsInReports = ciBuild
|
||||
// CI environment renders some shadows slightly different from local VMs
|
||||
// Add a 0.5% tolerance to account for that
|
||||
tolerance = ciBuild ? 0.5 : 0
|
||||
tolerance = ciBuild ? 0.1 : 0
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -476,7 +560,7 @@ jacoco {
|
|||
spotbugs {
|
||||
ignoreFailures = true // should continue checking
|
||||
effort = Effort.MAX
|
||||
reportLevel = Confidence.valueOf('MEDIUM')
|
||||
reportLevel = Confidence.valueOf("MEDIUM")
|
||||
}
|
||||
|
||||
tasks.withType(SpotBugsTask){task ->
|
||||
|
|
@ -484,7 +568,7 @@ tasks.withType(SpotBugsTask){task ->
|
|||
String variantName = variantNameCap.substring(0, 1).toLowerCase() + variantNameCap.substring(1)
|
||||
dependsOn "compile${variantNameCap}Sources"
|
||||
|
||||
classes = fileTree("$project.buildDir/intermediates/javac/${variantName}/compile${variantNameCap}JavaWithJavac/classes/")
|
||||
classes = fileTree(layout.buildDirectory.get().asFile.toString()+"/intermediates/javac/${variantName}/compile${variantNameCap}JavaWithJavac/classes/")
|
||||
excludeFilter = file("${project.rootDir}/scripts/analysis/spotbugs-filter.xml")
|
||||
reports {
|
||||
xml {
|
||||
|
|
@ -492,12 +576,12 @@ tasks.withType(SpotBugsTask){task ->
|
|||
}
|
||||
html {
|
||||
required = true
|
||||
outputLocation = file("$project.buildDir/reports/spotbugs/spotbugs.html")
|
||||
stylesheet = 'fancy.xsl'
|
||||
outputLocation = layout.buildDirectory.file("reports/spotbugs/spotbugs.html").get().asFile
|
||||
stylesheet = "fancy.xsl"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ksp {
|
||||
arg('room.schemaLocation', "$projectDir/schemas")
|
||||
arg("room.schemaLocation", "$projectDir/schemas")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
# SPDX-FileCopyrightText: 2022-2024 Nextcloud GmbH and Nextcloud contributors
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
build:
|
||||
maxIssues: 2
|
||||
weights:
|
||||
|
|
|
|||
22
app/lint.xml
|
|
@ -1,12 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Nextcloud Talk - Android Client
|
||||
~ Nextcloud - Android Client
|
||||
~
|
||||
~ SPDX-FileCopyrightText: 2022-2024 Nextcloud GmbH and Nextcloud contributors
|
||||
~ SPDX-FileCopyrightText: 2022 Andy Scherzinger <info@andy-scherzinger.de>
|
||||
~ SPDX-FileCopyrightText: 2022 Álvaro Brey <alvaro@alvarobrey.com>
|
||||
~ SPDX-FileCopyrightText: 2022 Tobias Kaminsky <tobias@kaminsky.me>
|
||||
~ SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
~ SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
-->
|
||||
<lint>
|
||||
<issue id="UnusedAttribute">
|
||||
|
|
@ -22,13 +22,17 @@
|
|||
<issue id="UnusedResources">
|
||||
<ignore regexp="store_short_desc|store_full_desc|store_short_dev_desc|store_full_dev_desc" />
|
||||
<ignore
|
||||
regexp="screenshot_01_gridView|screenshot_02_listView|screenshot_03_drawer|screenshot_04_accounts|screenshot_05_autoUpload|screenshot_06_davdroid"/>
|
||||
<ignore path="**/raw/encryption_key_words.txt" />
|
||||
regexp="screenshot_01_gridView|screenshot_02_listView|screenshot_03_drawer|screenshot_04_accounts|screenshot_05_autoUpload|screenshot_06_davdroid" />
|
||||
<ignore path="**/drawable/zdc_*.xml" />
|
||||
<ignore path="**/drawable/iconclose.xml" />
|
||||
</issue>
|
||||
|
||||
<issue id="ImpliedQuantity">
|
||||
<ignore path="**/values-**/strings.xml" />
|
||||
</issue>
|
||||
|
||||
<issue id="MissingQuantity">
|
||||
<ignore path="**/values-ka-rGE/strings.xml"/>
|
||||
<ignore path="**/values-ar/strings.xml" />
|
||||
<ignore path="**/values-**/strings.xml" />
|
||||
</issue>
|
||||
|
||||
<issue id="UnusedQuantity">
|
||||
|
|
@ -56,7 +60,7 @@
|
|||
|
||||
<issue id="TrustAllX509TrustManager">
|
||||
<ignore path="**/bouncycastle/est/jcajce/*.class" />
|
||||
<ignore path="**/bcpkix-jdk15to18-1.72.jar" />
|
||||
<ignore path="**/bcpkix-jdk15to18-1.**.jar" />
|
||||
<ignore path="**/bcpkix-jdk18on-1.**.jar" />
|
||||
</issue>
|
||||
|
||||
|
|
@ -77,4 +81,8 @@
|
|||
<ignore path="**/jetified-firebase-installations**/**/lint.jar" />
|
||||
<ignore path="**/appcompat-1.**/**/lint.jar" />
|
||||
</issue>
|
||||
|
||||
<issue id="Aligned16KB">
|
||||
<ignore path="**/arm64-v8a/libmockkjvmtiagent.so" />
|
||||
</issue>
|
||||
</lint>
|
||||
|
|
|
|||
|
|
@ -1206,4 +1206,4 @@
|
|||
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '082a63031678a67879428f688f02d3b5')"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
1233
app/schemas/com.nextcloud.client.database.NextcloudDatabase/82.json
Normal file
1245
app/schemas/com.nextcloud.client.database.NextcloudDatabase/83.json
Normal file
1301
app/schemas/com.nextcloud.client.database.NextcloudDatabase/84.json
Normal file
1301
app/schemas/com.nextcloud.client.database.NextcloudDatabase/85.json
Normal file
1331
app/schemas/com.nextcloud.client.database.NextcloudDatabase/86.json
Normal file
1337
app/schemas/com.nextcloud.client.database.NextcloudDatabase/87.json
Normal file
1343
app/schemas/com.nextcloud.client.database.NextcloudDatabase/88.json
Normal file
1349
app/schemas/com.nextcloud.client.database.NextcloudDatabase/89.json
Normal file
1355
app/schemas/com.nextcloud.client.database.NextcloudDatabase/90.json
Normal file
1195
app/schemas/com.nextcloud.client.database.NextcloudDatabase/91.json
Normal file
1200
app/schemas/com.nextcloud.client.database.NextcloudDatabase/92.json
Normal file
1205
app/schemas/com.nextcloud.client.database.NextcloudDatabase/93.json
Normal file
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 9 KiB |
|
After Width: | Height: | Size: 8.1 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 72 KiB |
|
After Width: | Height: | Size: 75 KiB |
|
After Width: | Height: | Size: 72 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 9.5 KiB |
|
After Width: | Height: | Size: 9.5 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 5.9 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 9.8 KiB |
|
After Width: | Height: | Size: 9.8 KiB |
|
After Width: | Height: | Size: 9.8 KiB |
|
After Width: | Height: | Size: 9.6 KiB |
|
After Width: | Height: | Size: 9.6 KiB |
|
After Width: | Height: | Size: 9.2 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 31 KiB |