Compare commits
	
		
			26 Commits
		
	
	
		
			v1.12
			...
			v1.12-r9-b
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					42c66670b8 | ||
| 
						 | 
					288539b902 | ||
| 
						 | 
					61fd32f121 | ||
| 
						 | 
					43108ec4a6 | ||
| 
						 | 
					51089c6b98 | ||
| 
						 | 
					cf18fcf91c | ||
| 
						 | 
					da0513c768 | ||
| 
						 | 
					37f520cdbe | ||
| 
						 | 
					c98572bee0 | ||
| 
						 | 
					b1774ffc4b | ||
| 
						 | 
					57aaa0c4cd | ||
| 
						 | 
					b961ae1b33 | ||
| 
						 | 
					5e418e2b1b | ||
| 
						 | 
					6d22a213f3 | ||
| 
						 | 
					a76addc43f | ||
| 
						 | 
					1d96217713 | ||
| 
						 | 
					d2b8fdcfff | ||
| 
						 | 
					507b671448 | ||
| 
						 | 
					3118ffaeb5 | ||
| 
						 | 
					0abe29bd77 | ||
| 
						 | 
					f3a7831390 | ||
| 
						 | 
					37cd58f7ba | ||
| 
						 | 
					7dd80a8ef7 | ||
| 
						 | 
					4cf46ef062 | ||
| 
						 | 
					0aa78ffd66 | ||
| 
						 | 
					c1dbf171f5 | 
							
								
								
									
										18
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							@@ -309,6 +309,14 @@ jobs:
 | 
			
		||||
      run: |
 | 
			
		||||
        make java
 | 
			
		||||
 | 
			
		||||
    - name: Update dotnet workloads
 | 
			
		||||
      run: |
 | 
			
		||||
        dotnet workload update        
 | 
			
		||||
 | 
			
		||||
    - name: Select the manifest
 | 
			
		||||
      run: |
 | 
			
		||||
        make manifestlink Flavor=Net
 | 
			
		||||
 | 
			
		||||
    - name: Install NuGet dependencies (net)
 | 
			
		||||
      run: make nuget Flavor=Net
 | 
			
		||||
 | 
			
		||||
@@ -327,15 +335,17 @@ jobs:
 | 
			
		||||
        path: |
 | 
			
		||||
          src/keepass2android/bin/*/*-Signed.apk
 | 
			
		||||
 | 
			
		||||
    - name: Select the manifest
 | 
			
		||||
      run: |
 | 
			
		||||
        make manifestlink Flavor=NoNet
 | 
			
		||||
 | 
			
		||||
    - name: Install NuGet dependencies (nonet)
 | 
			
		||||
      run: make nuget Flavor=NoNet
 | 
			
		||||
 | 
			
		||||
    - name: Build keepass2android (nonet)
 | 
			
		||||
      run: |
 | 
			
		||||
        make msbuild Flavor=NoNet
 | 
			
		||||
    - name: Update dotnet workloads
 | 
			
		||||
      run: |
 | 
			
		||||
        dotnet workload update
 | 
			
		||||
 | 
			
		||||
    - name: Test Autofill
 | 
			
		||||
      working-directory: ./src/Kp2aAutofillParser.Tests
 | 
			
		||||
      run: dotnet test
 | 
			
		||||
@@ -351,5 +361,3 @@ jobs:
 | 
			
		||||
        path: |
 | 
			
		||||
          src/keepass2android/bin/*/*-Signed.apk
 | 
			
		||||
 | 
			
		||||
    - name: Perform "make distclean"
 | 
			
		||||
      run: make distclean
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										127
									
								
								.github/workflows/release-net.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										127
									
								
								.github/workflows/release-net.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,127 +0,0 @@
 | 
			
		||||
name: Create keepass2android release
 | 
			
		||||
env:
 | 
			
		||||
  NAME: 'ReleaseNet'
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  release:
 | 
			
		||||
    types: [published]  # Trigger when a new GitHub release is published
 | 
			
		||||
  workflow_dispatch: # For manual testing
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
 | 
			
		||||
  build-release:
 | 
			
		||||
 | 
			
		||||
    runs-on: windows-2022
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
    
 | 
			
		||||
    - uses: actions/checkout@v4
 | 
			
		||||
      with:
 | 
			
		||||
        submodules: true
 | 
			
		||||
 | 
			
		||||
    - name: Extract key store
 | 
			
		||||
      env: 
 | 
			
		||||
        KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }}
 | 
			
		||||
        KeyStore: "${{ github.workspace }}/kp2a.keystore"
 | 
			
		||||
        
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        echo $KeyStore
 | 
			
		||||
        echo $KEYSTORE_BASE64 | base64 --decode > $KeyStore
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
    - name: Setup Gradle
 | 
			
		||||
      uses: gradle/actions/setup-gradle@v3
 | 
			
		||||
 | 
			
		||||
    - name: Cache NuGet packages
 | 
			
		||||
      uses: actions/cache@v4
 | 
			
		||||
      with:
 | 
			
		||||
        path: ~/.nuget/packages
 | 
			
		||||
        key: ${{ runner.os }}-nuget-${{ hashFiles('src/**/*.csproj', 'src/**/packages.config') }}
 | 
			
		||||
        restore-keys: |
 | 
			
		||||
          ${{ runner.os }}-nuget-
 | 
			
		||||
 | 
			
		||||
    # Workaround an issue when building on windows-2022. Error was
 | 
			
		||||
    #       D8 : OpenJDK 64-Bit Server VM warning : INFO: os::commit_memory(0x00000000ae400000, 330301440, 0) failed; error='The paging file is too small for this operation to complete' (DOS error/errno=1455) [D:\a\keepass2android\keepass2android\src\keepass2android\keepass2android-app.csproj]
 | 
			
		||||
    #       C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Xamarin\Android\Xamarin.Android.D8.targets(81,5): error MSB6006: "java.exe" exited with code 1. [D:\a\keepass2android\keepass2android\src\keepass2android\keepass2android-app.csproj]
 | 
			
		||||
    - name: Configure Pagefile
 | 
			
		||||
      uses: al-cheb/configure-pagefile-action@a3b6ebd6b634da88790d9c58d4b37a7f4a7b8708 # v1.4
 | 
			
		||||
      with:
 | 
			
		||||
        minimum-size: 8GB
 | 
			
		||||
 | 
			
		||||
    - name: Add msbuild to PATH
 | 
			
		||||
      uses: microsoft/setup-msbuild@v2
 | 
			
		||||
      # If we want to also have nmake, use this instead
 | 
			
		||||
      #uses: ilammy/msvc-dev-cmd@v1
 | 
			
		||||
 | 
			
		||||
    - name: Switch to JDK-17
 | 
			
		||||
      uses: actions/setup-java@v4
 | 
			
		||||
      with:
 | 
			
		||||
        java-version: '17'
 | 
			
		||||
        distribution: 'temurin'
 | 
			
		||||
 | 
			
		||||
    - name: Display java version
 | 
			
		||||
      run: java -version
 | 
			
		||||
 | 
			
		||||
    - name: Build native dependencies
 | 
			
		||||
      shell: cmd
 | 
			
		||||
      run: |
 | 
			
		||||
        make native
 | 
			
		||||
 | 
			
		||||
    - name: Build java dependencies
 | 
			
		||||
      shell: cmd
 | 
			
		||||
      run: |
 | 
			
		||||
        make java
 | 
			
		||||
 | 
			
		||||
    - name: Install NuGet dependencies (net)
 | 
			
		||||
      run: make nuget Flavor=Net
 | 
			
		||||
 | 
			
		||||
    - name: Use the _net manifest
 | 
			
		||||
      run: |
 | 
			
		||||
        make manifestlink Flavor=Net
 | 
			
		||||
 | 
			
		||||
    - name: Build APK (net)
 | 
			
		||||
      env:
 | 
			
		||||
        KeyStore: "${{ github.workspace }}/kp2a.keystore"
 | 
			
		||||
        MyAndroidSigningStorePass: ${{ secrets.KEY_STORE_PASSWORD }}
 | 
			
		||||
        MyAndroidSigningKeyPass: ${{ secrets.KEY_PASSWORD }}
 | 
			
		||||
      run: |
 | 
			
		||||
        make Configuration=Release Flavor=Net
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    - name: Install NuGet dependencies (nonet)
 | 
			
		||||
      run: make nuget Flavor=NoNet
 | 
			
		||||
 | 
			
		||||
    - name: Use the _nonet manifest
 | 
			
		||||
      run: |
 | 
			
		||||
        make manifestlink Flavor=NoNet
 | 
			
		||||
 | 
			
		||||
    - name: Build APK (NoNet)
 | 
			
		||||
      env:
 | 
			
		||||
        KeyStore: "${{ github.workspace }}/kp2a.keystore"
 | 
			
		||||
        MyAndroidSigningStorePass: ${{ secrets.KEY_STORE_PASSWORD }}
 | 
			
		||||
        MyAndroidSigningKeyPass: ${{ secrets.KEY_PASSWORD }}
 | 
			
		||||
      run: |
 | 
			
		||||
        make Configuration=Release Flavor=NoNet        
 | 
			
		||||
 | 
			
		||||
    - name: List files
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        ls src/keepass2android-app/bin/**/*.*
 | 
			
		||||
 | 
			
		||||
    - name: Archive production artifacts (net)
 | 
			
		||||
      uses: actions/upload-artifact@v4
 | 
			
		||||
      with:
 | 
			
		||||
        name: signed APKs (built on ${{ github.job }})
 | 
			
		||||
        path: |
 | 
			
		||||
          src/keepass2android-app/bin/Release/net8.0-android/*-Signed.apk
 | 
			
		||||
    
 | 
			
		||||
    - name: Upload APKs to GitHub Release
 | 
			
		||||
      uses: softprops/action-gh-release@v2
 | 
			
		||||
      if: github.ref_type == 'tag'
 | 
			
		||||
      with:
 | 
			
		||||
        files: |
 | 
			
		||||
            src/keepass2android-app/bin/Release/net8.0-android/*-Signed.apk
 | 
			
		||||
							
								
								
									
										83
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										83
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,19 +1,21 @@
 | 
			
		||||
name: Create keepass2android release
 | 
			
		||||
env:
 | 
			
		||||
  NAME: 'ReleaseNet'
 | 
			
		||||
  NAME: 'Release'
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  release:
 | 
			
		||||
    types: [published]  # Trigger when a new GitHub release is published
 | 
			
		||||
  workflow_dispatch: # For manual testing
 | 
			
		||||
 | 
			
		||||
  push:
 | 
			
		||||
    tags:
 | 
			
		||||
      - "v1.*"
 | 
			
		||||
jobs:
 | 
			
		||||
 | 
			
		||||
  build-release:
 | 
			
		||||
 | 
			
		||||
    runs-on: windows-2022
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    strategy:
 | 
			
		||||
      matrix:
 | 
			
		||||
        flavor: [Net, NoNet]
 | 
			
		||||
        target: [apk, apk_split]
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
    
 | 
			
		||||
@@ -76,52 +78,53 @@ jobs:
 | 
			
		||||
      run: |
 | 
			
		||||
        make java
 | 
			
		||||
 | 
			
		||||
    - name: Install NuGet dependencies (net)
 | 
			
		||||
      run: make nuget Flavor=Net
 | 
			
		||||
 | 
			
		||||
    - name: Use the _net manifest
 | 
			
		||||
    - name: Update dotnet workloads
 | 
			
		||||
      run: |
 | 
			
		||||
        make manifestlink Flavor=Net
 | 
			
		||||
        dotnet workload update        
 | 
			
		||||
 | 
			
		||||
    - name: Select the manifest
 | 
			
		||||
      run: |
 | 
			
		||||
        make manifestlink Flavor=${{ matrix.flavor }}
 | 
			
		||||
 | 
			
		||||
    - name: Install NuGet dependencies
 | 
			
		||||
      run: make nuget Flavor=${{ matrix.flavor }}
 | 
			
		||||
 | 
			
		||||
    - name: List apks
 | 
			
		||||
      run:  find . -type f -name "*.apk"
 | 
			
		||||
      shell: bash
 | 
			
		||||
 | 
			
		||||
    - name: Build APK (net)
 | 
			
		||||
      env:
 | 
			
		||||
        KeyStore: "${{ github.workspace }}/kp2a.keystore"
 | 
			
		||||
        MyAndroidSigningStorePass: ${{ secrets.KEY_STORE_PASSWORD }}
 | 
			
		||||
        MyAndroidSigningKeyPass: ${{ secrets.KEY_PASSWORD }}
 | 
			
		||||
        DropboxAppKey: ${{ secrets.DROPBOX_APP_KEY }}
 | 
			
		||||
        DropboxAppSecret: ${{ secrets.DROPBOX_APP_SECRET }}
 | 
			
		||||
        DropboxAppFolderAppKey: ${{ secrets.DROPBOX_APP_FOLDER_APP_KEY }}
 | 
			
		||||
        DropboxAppFolderAppSecret: ${{ secrets.DROPBOX_APP_FOLDER_APP_SECRET }}
 | 
			
		||||
 | 
			
		||||
      run: |
 | 
			
		||||
        make Configuration=Release Flavor=Net
 | 
			
		||||
        make ${{ matrix.target }} Configuration=Release Flavor=${{ matrix.flavor }}
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    - name: Install NuGet dependencies (nonet)
 | 
			
		||||
      run: make nuget Flavor=NoNet
 | 
			
		||||
 | 
			
		||||
    - name: Use the _nonet manifest
 | 
			
		||||
      run: |
 | 
			
		||||
        make manifestlink Flavor=NoNet
 | 
			
		||||
 | 
			
		||||
    - name: Build APK (NoNet)
 | 
			
		||||
      env:
 | 
			
		||||
        KeyStore: "${{ github.workspace }}/kp2a.keystore"
 | 
			
		||||
        MyAndroidSigningStorePass: ${{ secrets.KEY_STORE_PASSWORD }}
 | 
			
		||||
        MyAndroidSigningKeyPass: ${{ secrets.KEY_PASSWORD }}
 | 
			
		||||
      run: |
 | 
			
		||||
        make Configuration=Release Flavor=NoNet        
 | 
			
		||||
 | 
			
		||||
    - name: List files
 | 
			
		||||
    - name: List apks
 | 
			
		||||
      run:  find . -type f -name "*.apk"
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        ls src/keepass2android-app/bin/**/*.*
 | 
			
		||||
    
 | 
			
		||||
    - name: Archive production artifacts (net)
 | 
			
		||||
    - name: Archive production artifacts
 | 
			
		||||
      uses: actions/upload-artifact@v4
 | 
			
		||||
      with:
 | 
			
		||||
        name: signed APK (built on ${{ github.job }})
 | 
			
		||||
        name: keepass2android_${{ matrix.target }}_${{ matrix.flavor }}
 | 
			
		||||
        path: |
 | 
			
		||||
          src/keepass2android-app/bin/Release/net8.0-android/*-Signed.apk
 | 
			
		||||
          src/keepass2android-app/bin/Release/net8.0-android/publish/*.apk
 | 
			
		||||
          src/keepass2android-app/bin/Release/net8.0-android/*/publish/*.apk
 | 
			
		||||
    
 | 
			
		||||
    - name: Upload APK to GitHub Release
 | 
			
		||||
      uses: softprops/action-gh-release@v2
 | 
			
		||||
      if: github.ref_type == 'tag'
 | 
			
		||||
      with:
 | 
			
		||||
        files: |
 | 
			
		||||
            src/keepass2android-app/bin/Release/net8.0-android/*-Signed.apk
 | 
			
		||||
    - name: List apks
 | 
			
		||||
      run:  find . -type f -name "*.apk"
 | 
			
		||||
      shell: bash
 | 
			
		||||
      
 | 
			
		||||
    #- name: Upload APK to GitHub Release
 | 
			
		||||
    #  uses: softprops/action-gh-release@v2
 | 
			
		||||
    #  if: github.ref_type == 'tag'
 | 
			
		||||
    #  with:
 | 
			
		||||
    #    files: |
 | 
			
		||||
    #        src/keepass2android-app/bin/Release/net8.0-android/*/publish/*.apk src/keepass2android-app/bin/Release/net8.0-android/publish/*.apk
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -64,7 +64,7 @@ Thumbs.db
 | 
			
		||||
/src/java/android-filechooser/code/projectzip/project.zip
 | 
			
		||||
/src/java/android-filechooser/code/unused.txt
 | 
			
		||||
 | 
			
		||||
/src/Kp2aBusinessLogic/Io/DropboxFileStorageKeys.cs
 | 
			
		||||
/src/Kp2aBusinessLogic/Io/DropboxFileStorage.g.cs
 | 
			
		||||
 | 
			
		||||
/src/java/workspace/DriveTest
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										25
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								Makefile
									
									
									
									
									
								
							@@ -62,11 +62,11 @@ $(info )
 | 
			
		||||
 | 
			
		||||
# On linux use xabuild, on Windows use MSBuild.exe, otherwise (macos?) use msbuild.
 | 
			
		||||
ifeq ($(detected_OS),Linux)
 | 
			
		||||
  MSBUILD_binary := xabuild
 | 
			
		||||
  MSBUILD := $(shell $(WHICH) $(MSBUILD_binary))
 | 
			
		||||
  MSBUILD_binary := dotnet
 | 
			
		||||
  MSBUILD := $(shell $(WHICH) $(MSBUILD_binary)) publish
 | 
			
		||||
else ifeq ($(detected_OS),Windows)
 | 
			
		||||
  MSBUILD_binary := MSBuild.exe
 | 
			
		||||
  MSBUILD := $(shell $(WHICH) $(MSBUILD_binary) 2> nul)
 | 
			
		||||
  MSBUILD_binary := dotnet
 | 
			
		||||
  MSBUILD := $(shell $(WHICH) $(MSBUILD_binary) 2> nul) publish
 | 
			
		||||
  ifeq ($(MSBUILD),)
 | 
			
		||||
    # Additional heuristic to find MSBUILD_BINARY on Windows
 | 
			
		||||
    VSWHERE := "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
 | 
			
		||||
@@ -312,19 +312,20 @@ manifestlink:
 | 
			
		||||
	$(CREATE_MANIFEST_LINK)	
 | 
			
		||||
 | 
			
		||||
#####
 | 
			
		||||
src/Kp2aBusinessLogic/Io/DropboxFileStorageKeys.cs:
 | 
			
		||||
ifeq ($(detected_OS),Windows)
 | 
			
		||||
	$(CP) src\Kp2aBusinessLogic\Io\DropboxFileStorageKeysDummy.cs src\Kp2aBusinessLogic\Io\DropboxFileStorageKeys.cs
 | 
			
		||||
else
 | 
			
		||||
	$(CP) src/Kp2aBusinessLogic/Io/DropboxFileStorageKeysDummy.cs $@
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
msbuild: manifestlink native java nuget src/Kp2aBusinessLogic/Io/DropboxFileStorageKeys.cs
 | 
			
		||||
msbuild: manifestlink native java nuget 
 | 
			
		||||
	$(MSBUILD) src/KeePass.sln -target:keepass2android-app -p:AndroidSdkDirectory="$(ANDROID_SDK_ROOT)" -p:BuildProjectReferences=true $(MSBUILD_PARAM) -p:Platform="Any CPU" -m
 | 
			
		||||
 | 
			
		||||
apk: msbuild 
 | 
			
		||||
apk: manifestlink native java nuget  
 | 
			
		||||
	$(MSBUILD) src/keepass2android-app/keepass2android-app.csproj -p:AndroidSdkDirectory="$(ANDROID_SDK_ROOT)" -t:SignAndroidPackage $(MSBUILD_PARAM) -p:Platform=AnyCPU -m 
 | 
			
		||||
 | 
			
		||||
apk_split: manifestlink native java nuget 
 | 
			
		||||
	$(MSBUILD) src/keepass2android-app/keepass2android-app.csproj -p:AndroidSdkDirectory="$(ANDROID_SDK_ROOT)" -t:SignAndroidPackage $(MSBUILD_PARAM) -p:Platform=AnyCPU -m -p:RuntimeIdentifier=android-arm
 | 
			
		||||
	$(MSBUILD) src/keepass2android-app/keepass2android-app.csproj -p:AndroidSdkDirectory="$(ANDROID_SDK_ROOT)" -t:SignAndroidPackage $(MSBUILD_PARAM) -p:Platform=AnyCPU -m -p:RuntimeIdentifier=android-arm64
 | 
			
		||||
	$(MSBUILD) src/keepass2android-app/keepass2android-app.csproj -p:AndroidSdkDirectory="$(ANDROID_SDK_ROOT)" -t:SignAndroidPackage $(MSBUILD_PARAM) -p:Platform=AnyCPU -m -p:RuntimeIdentifier=android-x86
 | 
			
		||||
	$(MSBUILD) src/keepass2android-app/keepass2android-app.csproj -p:AndroidSdkDirectory="$(ANDROID_SDK_ROOT)" -t:SignAndroidPackage $(MSBUILD_PARAM) -p:Platform=AnyCPU -m -p:RuntimeIdentifier=android-x64
 | 
			
		||||
	src/build-scripts/rename-output-apks.sh src/keepass2android-app/bin/Release/net8.0-android/
 | 
			
		||||
 | 
			
		||||
build_all: msbuild
 | 
			
		||||
 | 
			
		||||
##### Cleanup targets
 | 
			
		||||
 
 | 
			
		||||
@@ -1,13 +0,0 @@
 | 
			
		||||
namespace keepass2android.Io
 | 
			
		||||
{
 | 
			
		||||
	public partial class DropboxFileStorage
 | 
			
		||||
	{
 | 
			
		||||
		private const string AppKey = "dummy";
 | 
			
		||||
		private const string AppSecret = "dummy";
 | 
			
		||||
	}
 | 
			
		||||
	public partial class DropboxAppFolderFileStorage
 | 
			
		||||
	{
 | 
			
		||||
		private const string AppKey = "dummy";
 | 
			
		||||
		private const string AppSecret = "dummy";
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										27
									
								
								src/Kp2aBusinessLogic/Io/GenerateSecrets.targets
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								src/Kp2aBusinessLogic/Io/GenerateSecrets.targets
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
			
		||||
<Project>
 | 
			
		||||
  <Target Name="GenerateDropboxSecrets" BeforeTargets="BeforeCompile"
 | 
			
		||||
  Inputs="@(DropboxSecretLines)"
 | 
			
		||||
  Outputs="DropboxFileStorage.g.cs">
 | 
			
		||||
 | 
			
		||||
    <WriteLinesToFile
 | 
			
		||||
    File="Io/DropboxFileStorage.g.cs"
 | 
			
		||||
      Lines="@(DropboxSecretLines->'%(Text)')"
 | 
			
		||||
      Overwrite="true"
 | 
			
		||||
      />
 | 
			
		||||
  </Target>
 | 
			
		||||
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <DropboxSecretLines Include="GeneratedDropboxSecrets">
 | 
			
		||||
      <Text>namespace keepass2android.Io {
 | 
			
		||||
    public partial class DropboxFileStorage {
 | 
			
		||||
      private const string AppKey = "$(DropboxAppKey)";
 | 
			
		||||
      private const string AppSecret = "$(DropboxAppSecret)";
 | 
			
		||||
    }
 | 
			
		||||
    public partial class DropboxAppFolderFileStorage {
 | 
			
		||||
      private const string AppKey = "$(DropboxAppFolderAppKey)";
 | 
			
		||||
      private const string AppSecret = "$(DropboxAppFolderAppSecret)";
 | 
			
		||||
    }
 | 
			
		||||
  }</Text>
 | 
			
		||||
    </DropboxSecretLines>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
</Project>
 | 
			
		||||
@@ -4,30 +4,43 @@
 | 
			
		||||
    <SupportedOSPlatformVersion>21</SupportedOSPlatformVersion>
 | 
			
		||||
    <Nullable>enable</Nullable>
 | 
			
		||||
    <ImplicitUsings>enable</ImplicitUsings>
 | 
			
		||||
    <DefineConstants Condition="'$(Flavor)'=='NoNet'">NO_QR_SCANNER;EXCLUDE_JAVAFILESTORAGE;NoNet</DefineConstants>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Folder Include="Resources\" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <PackageReference Include="FluentFTP" Version="51.1.0" />
 | 
			
		||||
    <PackageReference Include="MegaApiClient" Version="1.10.4" />
 | 
			
		||||
    <PackageReference Include="Microsoft.Graph" Version="5.68.0" />
 | 
			
		||||
    <PackageReference Include="Microsoft.Identity.Client" Version="4.67.1" />
 | 
			
		||||
    <PackageReference Include="FluentFTP" Version="51.1.0" Condition="'$(Flavor)'!='NoNet'"/>
 | 
			
		||||
    <PackageReference Include="MegaApiClient" Version="1.10.4"  Condition="'$(Flavor)'!='NoNet'"/>
 | 
			
		||||
    <PackageReference Include="Microsoft.Graph" Version="5.68.0" Condition="'$(Flavor)'!='NoNet'"/>
 | 
			
		||||
    <PackageReference Include="Microsoft.Identity.Client" Version="4.67.1" Condition="'$(Flavor)'!='NoNet'"/>
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.Browser" Version="1.8.0" />
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.Core" Version="1.13.1.5" />
 | 
			
		||||
    <PackageReference Include="Xamarin.Google.Android.Material" Version="1.11.0.3" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ProjectReference Include="..\AndroidFileChooserBinding\AndroidFileChooserBinding.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\JavaFileStorageBindings\JavaFileStorageBindings.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\JavaFileStorageBindings\JavaFileStorageBindings.csproj" Condition="'$(Flavor)'!='NoNet'"  />
 | 
			
		||||
    <ProjectReference Include="..\KeePassLib2Android\KeePassLib2Android.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\KP2AKdbLibraryBinding\KP2AKdbLibraryBinding.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\TwofishCipher\TwofishCipher.csproj" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
  <None Remove="Io/DropboxFileStorageKeysDummy.cs" />
 | 
			
		||||
  <Compile Remove="Io/DropboxFileStorageKeysDummy.cs" />
 | 
			
		||||
  <Content Remove="Io/DropboxFileStorageKeysDummy.cs" />
 | 
			
		||||
 | 
			
		||||
</ItemGroup>
 | 
			
		||||
<ItemGroup  Condition="'$(Flavor)'=='NoNet'">
 | 
			
		||||
  <None Remove="Io/OneDrive2FileStorage.cs" />
 | 
			
		||||
  <Compile Remove="Io/OneDrive2FileStorage.cs" />
 | 
			
		||||
  <Content Remove="Io/OneDrive2FileStorage.cs" />
 | 
			
		||||
  <None Remove="Io/MegaFileStorage.cs" />
 | 
			
		||||
  <Compile Remove="Io/MegaFileStorage.cs" />
 | 
			
		||||
  <Content Remove="Io/MegaFileStorage.cs" />
 | 
			
		||||
</ItemGroup>
 | 
			
		||||
 | 
			
		||||
<Import Project="Io/GenerateSecrets.targets" />
 | 
			
		||||
<ItemGroup>
 | 
			
		||||
<Compile Include="Io/DropboxFileStorage.g.cs" />
 | 
			
		||||
</ItemGroup>
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
</Project>
 | 
			
		||||
@@ -20,7 +20,6 @@ git clone --recurse-submodules https://github.com/PhilippC/keepass2android.git
 | 
			
		||||
cd keepass2android/src/build-scripts
 | 
			
		||||
./build-java.sh && ./build-native.sh
 | 
			
		||||
cd ..
 | 
			
		||||
cp Kp2aBusinessLogic/Io/DropboxFileStorageKeysDummy.cs Kp2aBusinessLogic/Io/DropboxFileStorageKeys.cs
 | 
			
		||||
cd keepass2android-app
 | 
			
		||||
ln -s Manifests/AndroidManifest_debug.xml AndroidManifest.xml
 | 
			
		||||
dotnet workload restore
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										22
									
								
								src/build-scripts/rename-output-apks.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/build-scripts/rename-output-apks.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
BASE_DIR="${1}"
 | 
			
		||||
 | 
			
		||||
for arch_dir in "$BASE_DIR"/android-*/; do
 | 
			
		||||
  arch=$(basename "$arch_dir")
 | 
			
		||||
  arch=${arch#android-}
 | 
			
		||||
  APK_DIR="${arch_dir}publish"
 | 
			
		||||
  if [[ -d "$APK_DIR" ]]; then
 | 
			
		||||
    apk_path=$(find "$APK_DIR" -maxdepth 1 -type f -name "*.apk" | head -n1)
 | 
			
		||||
    if [[ -n "$apk_path" ]]; then
 | 
			
		||||
      base=$(basename "$apk_path" .apk)
 | 
			
		||||
      new_path="$APK_DIR/${base}-${arch}.apk"
 | 
			
		||||
      mv "$apk_path" "$new_path"
 | 
			
		||||
      echo "Renamed $apk_path to $new_path"
 | 
			
		||||
    else
 | 
			
		||||
      echo "No APK found in $APK_DIR"
 | 
			
		||||
    fi
 | 
			
		||||
  else
 | 
			
		||||
    echo "Directory $APK_DIR does not exist"
 | 
			
		||||
  fi
 | 
			
		||||
done
 | 
			
		||||
@@ -6,8 +6,7 @@
 | 
			
		||||
        android:allowBackup="true"
 | 
			
		||||
        android:icon="@mipmap/ic_launcher"
 | 
			
		||||
        android:label="@string/app_name"
 | 
			
		||||
        android:supportsRtl="true"
 | 
			
		||||
        android:theme="@style/AppTheme">
 | 
			
		||||
        android:supportsRtl="true">
 | 
			
		||||
        <activity android:name="com.crocoapps.javafilestoragetest2.MainActivity"
 | 
			
		||||
                  android:exported="true">
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
 
 | 
			
		||||
@@ -37,8 +37,10 @@ using System.Net;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using Android.Content.Res;
 | 
			
		||||
using Android.Database;
 | 
			
		||||
#if !NO_QR_SCANNER
 | 
			
		||||
using Android.Gms.Common;
 | 
			
		||||
using Android.Gms.Tasks;
 | 
			
		||||
#endif
 | 
			
		||||
using Android.Graphics;
 | 
			
		||||
using Android.Graphics.Drawables;
 | 
			
		||||
using Android.Runtime;
 | 
			
		||||
@@ -55,10 +57,11 @@ using Object = Java.Lang.Object;
 | 
			
		||||
using Uri = Android.Net.Uri;
 | 
			
		||||
using Resource = keepass2android.Resource;
 | 
			
		||||
using Google.Android.Material.TextField;
 | 
			
		||||
#if !NO_QR_SCANNER
 | 
			
		||||
using Xamarin.Google.MLKit.Vision.Barcode.Common;
 | 
			
		||||
using Xamarin.Google.MLKit.Vision.CodeScanner;
 | 
			
		||||
#endif
 | 
			
		||||
using Console = System.Console;
 | 
			
		||||
using Task = Android.Gms.Tasks.Task;
 | 
			
		||||
 | 
			
		||||
namespace keepass2android
 | 
			
		||||
{
 | 
			
		||||
@@ -1158,8 +1161,10 @@ namespace keepass2android
 | 
			
		||||
            {
 | 
			
		||||
                dlgView.FindViewById(Resource.Id.totp_custom_settings_group).Visibility = args.IsChecked ? ViewStates.Visible : ViewStates.Gone;
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            dlgView.FindViewById<Button>(Resource.Id.totp_scan).Click += async (object o, EventArgs args) =>
 | 
			
		||||
#if NO_QR_SCANNER
 | 
			
		||||
            dlgView.FindViewById<Button>(Resource.Id.totp_scan).Visibility = ViewStates.Gone;
 | 
			
		||||
#else
 | 
			
		||||
			dlgView.FindViewById<Button>(Resource.Id.totp_scan).Click += async (object o, EventArgs args) =>
 | 
			
		||||
            {
 | 
			
		||||
                if (GoogleApiAvailability.Instance.IsGooglePlayServicesAvailable(this) != ConnectionResult.Success)
 | 
			
		||||
                {
 | 
			
		||||
@@ -1194,6 +1199,7 @@ namespace keepass2android
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            };
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
			//copy values from entry into dialog
 | 
			
		||||
			View ees = (View)sender.Parent;
 | 
			
		||||
@@ -1572,6 +1578,7 @@ namespace keepass2android
 | 
			
		||||
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
#if !NO_QR_SCANNER
 | 
			
		||||
    public class SuccessListener : Object, IOnSuccessListener
 | 
			
		||||
    {
 | 
			
		||||
        private readonly Action<Barcode> _onSuccess;
 | 
			
		||||
@@ -1601,8 +1608,9 @@ namespace keepass2android
 | 
			
		||||
            _onFailure?.Invoke(e);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    public class DefaultEdit : EditModeBase
 | 
			
		||||
	public class DefaultEdit : EditModeBase
 | 
			
		||||
	{
 | 
			
		||||
		
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
      android:versionCode="212"
 | 
			
		||||
      android:versionName="1.12-r8"
 | 
			
		||||
      android:versionCode="217"
 | 
			
		||||
      android:versionName="1.12-r9c"
 | 
			
		||||
      package="keepass2android.keepass2android"
 | 
			
		||||
      xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
      android:installLocation="auto">
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
      android:versionCode="212"
 | 
			
		||||
      android:versionName="1.12-r8"
 | 
			
		||||
      android:versionCode="217"
 | 
			
		||||
      android:versionName="1.12-r9c"
 | 
			
		||||
      package="keepass2android.keepass2android_nonet"
 | 
			
		||||
      xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
      android:installLocation="auto">
 | 
			
		||||
 
 | 
			
		||||
@@ -10,6 +10,7 @@
 | 
			
		||||
    <ApplicationVersion>1</ApplicationVersion>
 | 
			
		||||
    <ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>
 | 
			
		||||
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
 | 
			
		||||
    <DefineConstants Condition="'$(Flavor)'=='NoNet'">NO_QR_SCANNER;EXCLUDE_JAVAFILESTORAGE;NoNet</DefineConstants>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <None Remove="Assets\fontawesome-webfont.ttf" />
 | 
			
		||||
@@ -750,18 +751,18 @@
 | 
			
		||||
    <PackageReference Include="Xamarin.AndroidX.Preference" Version="1.2.1.12" />
 | 
			
		||||
    <PackageReference Include="Xamarin.Google.Android.Material" Version="1.12.0.2" />
 | 
			
		||||
    <PackageReference Include="Xamarin.Google.Guava" Version="33.4.0.1" />
 | 
			
		||||
    <PackageReference Include="Xamarin.GooglePlayServices.Auth" Version="121.3.0.1" />
 | 
			
		||||
    <PackageReference Include="Xamarin.GooglePlayServices.Base" Version="118.5.0.4" />
 | 
			
		||||
    <PackageReference Include="Xamarin.GooglePlayServices.Code.Scanner" Version="116.1.0.10" />
 | 
			
		||||
    <PackageReference Include="Xamarin.GooglePlayServices.Auth" Version="121.3.0.1" Condition="'$(Flavor)'!='NoNet'" />
 | 
			
		||||
    <PackageReference Include="Xamarin.GooglePlayServices.Base" Version="118.5.0.4" Condition="'$(Flavor)'!='NoNet'" />
 | 
			
		||||
    <PackageReference Include="Xamarin.GooglePlayServices.Code.Scanner" Version="116.1.0.10" Condition="'$(Flavor)'!='NoNet'" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ProjectReference Include="..\AndroidFileChooserBinding\AndroidFileChooserBinding.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\DropboxBinding\DropboxBinding.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\JavaFileStorageBindings\JavaFileStorageBindings.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\DropboxBinding\DropboxBinding.csproj" Condition="'$(Flavor)'!='NoNet'" />
 | 
			
		||||
    <ProjectReference Include="..\JavaFileStorageBindings\JavaFileStorageBindings.csproj" Condition="'$(Flavor)'!='NoNet'" />
 | 
			
		||||
    <ProjectReference Include="..\Kp2aAutofillParser\Kp2aAutofillParser.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\KP2AKdbLibraryBinding\KP2AKdbLibraryBinding.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\Kp2aKeyboardBinding\Kp2aKeyboardBinding.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\PCloudBindings\PCloudBindings.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\PCloudBindings\PCloudBindings.csproj" Condition="'$(Flavor)'!='NoNet'" />
 | 
			
		||||
    <ProjectReference Include="..\PluginSdkBinding\PluginSdkBinding.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\ZlibAndroid\ZlibAndroid.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\TwofishCipher\TwofishCipher.csproj" />
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user