Merge pull request #606 from stenzek/android-sign

CI: Sign Android APK before uploading
This commit is contained in:
Connor McLaughlin 2020-07-13 02:39:33 +10:00 committed by GitHub
commit 7cf50e816d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 56 additions and 25 deletions

View File

@ -170,13 +170,27 @@ jobs:
run: | run: |
cd android cd android
./gradlew assembleRelease ./gradlew assembleRelease
mv app/build/outputs/apk/release/app-release-unsigned.apk ../duckstation-release-unsigned.apk
- name: Sign APK
uses: r0adkll/sign-android-release@v1
with:
releaseDirectory: android/app/build/outputs/apk/release
signingKeyBase64: ${{ secrets.APK_SIGNING_KEY }}
alias: ${{ secrets.APK_KEY_ALIAS }}
keyStorePassword: ${{ secrets.APK_KEY_STORE_PASSWORD }}
keyPassword: ${{ secrets.APK_KEY_PASSWORD }}
- name: Rename APK
shell: bash
run: |
cd android
mv app/build/outputs/apk/release/app-release-unsigned-signed.apk ../duckstation-android-aarch64.apk
- name: Upload APK - name: Upload APK
uses: actions/upload-artifact@v1 uses: actions/upload-artifact@v1
with: with:
name: "android" name: "android"
path: "duckstation-release-unsigned.apk" path: "duckstation-android-aarch64.apk"
create-release: create-release:
@ -239,5 +253,5 @@ jobs:
linux-x64-appimage-qt-zsync/duckstation-qt-x64.AppImage.zsync linux-x64-appimage-qt-zsync/duckstation-qt-x64.AppImage.zsync
linux-libretro/duckstation_libretro.so.zip linux-libretro/duckstation_libretro.so.zip
linux-libretro/duckstation_libretro_android_aarch64.so.zip linux-libretro/duckstation_libretro_android_aarch64.so.zip
android/duckstation-release-unsigned.apk android/duckstation-android-aarch64.apk

View File

@ -49,7 +49,7 @@ Other features include:
- SDL-compatible game controller (e.g. XB360/XBOne) - SDL-compatible game controller (e.g. XB360/XBOne)
## Downloading and running ## Downloading and running
Binaries of DuckStation for 64-bit Windows and 64-bit Linux (in AppImage format) are available via GitHub Releases and are automatically built with every commit/push. Binaries or packages distributed through other sources may be out of date and are not supported by the developer. Binaries of DuckStation for Windows 64-bit, x86_64 Linux x86_64 (in AppImage format), and Android ARMv8/AArch64 are available via GitHub Releases and are automatically built with every commit/push. Binaries or packages distributed through other sources may be out of date and are not supported by the developer.
### Windows ### Windows
@ -83,14 +83,20 @@ To download:
A prebuilt APK is now available for Android. However, please keep in mind that the Android version is not yet feature complete, it is more of a preview of things to come. You will need a device running a 64-bit AArch64 userland (anything made in the last few years). A prebuilt APK is now available for Android. However, please keep in mind that the Android version is not yet feature complete, it is more of a preview of things to come. You will need a device running a 64-bit AArch64 userland (anything made in the last few years).
Download link: https://github.com/stenzek/duckstation/releases/download/latest/duckstation-release-unsigned.apk Download link: https://github.com/stenzek/duckstation/releases/download/latest/duckstation-android-aarch64.apk
The main limitations are: The main limitations are:
- No controller support, only on-screen controls. - No controller support, only on-screen controls.
- User directory is currently hardcoded to /sdcard/duckstation. So BIOS files go in /sdcard/duckstation/bios. - User directory is currently hardcoded to `/sdcard/duckstation`. So BIOS files go in `/sdcard/duckstation/bios`.
- Lack of options in menu when emulator is running. - Lack of options in menu when emulator is running.
- Performance is currently lower than the desktop x86_64 counterpart. - Performance is currently lower than the desktop x86_64 counterpart.
To use:
- Install and run the app for the first time.
- This will create `/sdcard/duckstation`. Drop your BIOS files in `/sdcard/duckstation/bios`.
- Add game directories by hitting the `+` icon and selecting a directory. Due to a bug you may need to restart the app for it to scan the directory.
- Tap a game to start.
### Title Information ### Title Information

View File

@ -23,10 +23,12 @@
</string-array> </string-array>
<string-array name="gpu_renderer_entries"> <string-array name="gpu_renderer_entries">
<item>Hardware (OpenGL)</item> <item>Hardware (OpenGL)</item>
<item>Hardware (Vulkan)</item>
<item>Software</item> <item>Software</item>
</string-array> </string-array>
<string-array name="gpu_renderer_values"> <string-array name="gpu_renderer_values">
<item>OpenGL</item> <item>OpenGL</item>
<item>Vulkan</item>
<item>Software</item> <item>Software</item>
</string-array> </string-array>
<string-array name="settings_gpu_resolution_scale_entries"> <string-array name="settings_gpu_resolution_scale_entries">
@ -65,4 +67,4 @@
<item>15</item> <item>15</item>
<item>16</item> <item>16</item>
</string-array> </string-array>
</resources> </resources>

View File

@ -2337,14 +2337,15 @@ void CDROM::DrawDebugWindow()
if (m_reader.HasMedia()) if (m_reader.HasMedia())
{ {
const CDImage* media = m_reader.GetMedia(); const CDImage* media = m_reader.GetMedia();
const auto [disc_minute, disc_second, disc_frame] = media->GetMSFPositionOnDisc(); const CDImage::Position disc_position = CDImage::Position::FromLBA(m_current_lba);
const auto [track_minute, track_second, track_frame] = media->GetMSFPositionInTrack(); const CDImage::Position track_position = CDImage::Position::FromLBA(
m_current_lba - media->GetTrackStartPosition(static_cast<u8>(media->GetTrackNumber())));
ImGui::Text("Filename: %s", media->GetFileName().c_str()); ImGui::Text("Filename: %s", media->GetFileName().c_str());
ImGui::Text("Disc Position: MSF[%02u:%02u:%02u] LBA[%u]", disc_minute, disc_second, disc_frame, ImGui::Text("Disc Position: MSF[%02u:%02u:%02u] LBA[%u]", disc_position.minute, disc_position.second,
media->GetPositionOnDisc()); disc_position.frame, disc_position.ToLBA());
ImGui::Text("Track Position: Number[%u] MSF[%02u:%02u:%02u] LBA[%u]", media->GetTrackNumber(), track_minute, ImGui::Text("Track Position: Number[%u] MSF[%02u:%02u:%02u] LBA[%u]", media->GetTrackNumber(),
track_second, track_frame, media->GetPositionInTrack()); track_position.minute, track_position.second, track_position.frame, track_position.ToLBA());
ImGui::Text("Last Sector: %02X:%02X:%02X (Mode %u)", m_last_sector_header.minute, m_last_sector_header.second, ImGui::Text("Last Sector: %02X:%02X:%02X (Mode %u)", m_last_sector_header.minute, m_last_sector_header.second,
m_last_sector_header.frame, m_last_sector_header.sector_mode); m_last_sector_header.frame, m_last_sector_header.sector_mode);
} }

View File

@ -369,17 +369,25 @@ static std::array<retro_core_option_definition, 22> s_option_definitions = {{
#endif #endif
}, },
{"GPU.ResolutionScale", {"GPU.ResolutionScale",
"Rendering Resolution Scale", "Internal Resolution Scale",
"Scales internal rendering resolution by the specified multiplier. Larger values are slower. Some games require " "Scales internal VRAM resolution by the specified multiplier. Larger values are slower. Some games require "
"1x rendering resolution or they will have rendering issues.", "1x VRAM resolution or they will have rendering issues.",
{{"1", "1x (1024x512)"}, {{"1", "1x (1024x512 VRAM)"},
{"2", "2x (2048x1024)"}, {"2", "2x (2048x1024 VRAM)"},
{"3", "3x (3072x1536)"}, {"3", "3x (3072x1536 VRAM)"},
{"4", "4x (4096x2048)"}, {"4", "4x (4096x2048 VRAM)"},
{"5", "5x (5120x2160)"}, {"5", "5x (5120x2160 VRAM)"},
{"6", "6x (6144x3072)"}, {"6", "6x (6144x3072 VRAM)"},
{"7", "7x (7168x3584)"}, {"7", "7x (7168x3584 VRAM)"},
{"8", "8x (8192x4096)"}}, {"8", "8x (8192x4096 VRAM)"},
{"9", "9x (9216x4608 VRAM)"},
{"10", "10x (10240x5120 VRAM)"},
{"11", "11x (11264x5632 VRAM)"},
{"12", "12x (12288x6144 VRAM)"},
{"13", "13x (13312x6656 VRAM)"},
{"14", "14x (14336x7168 VRAM)"},
{"15", "15x (15360x7680 VRAM)"},
{"16", "16x (16384x8192 VRAM)"}},
"1"}, "1"},
{"GPU.TrueColor", {"GPU.TrueColor",
"True Color Rendering", "True Color Rendering",