-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
name: Release | ||
|
||
on: | ||
push: | ||
branches: | ||
- "master" | ||
paths: | ||
- "CHANGELOG.md" | ||
workflow_dispatch: | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
env: | ||
output: "${{ github.workspace }}/app/build/outputs/apk/release" | ||
steps: | ||
- uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
- uses: actions/setup-java@v3 | ||
with: | ||
distribution: temurin | ||
java-version: 17 | ||
|
||
- name: Setup Gradle | ||
uses: gradle/gradle-build-action@v2.4.2 | ||
|
||
- name: Init Signature | ||
run: | | ||
touch local.properties | ||
echo ALIAS_NAME='${{ secrets.ALIAS_NAME }}' >> local.properties | ||
echo ALIAS_PASSWORD='${{ secrets.ALIAS_PASSWORD }}' >> local.properties | ||
echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties | ||
echo KEY_PATH='./key.jks' >> local.properties | ||
# 从Secrets读取无换行符Base64解码, 然后保存到到app/key.jks | ||
echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/app/key.jks | ||
- name: Grant execute permission for gradlew | ||
run: chmod +x gradlew | ||
- name: Build with Gradle | ||
run: ./gradlew assembleRelease -build-cache --parallel --daemon --warning-mode all | ||
|
||
- name: Init APP Version Name | ||
run: | | ||
echo "ver_name=$(grep -m 1 'versionName' ${{ env.output }}/output-metadata.json | cut -d\" -f4)" >> $GITHUB_ENV | ||
- name: Upload App To Artifact | ||
if: success () || failure () | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: "ImageProcessor_${{env.ver_name}}" | ||
path: ${{ env.output }}/*.apk | ||
|
||
- uses: softprops/action-gh-release@v0.1.15 | ||
with: | ||
name: ${{ env.ver_name }} | ||
tag_name: ${{ env.ver_name }} | ||
body_path: ${{ github.workspace }}/CHANGELOG.md | ||
draft: false | ||
prerelease: false | ||
files: ${{ env.output }}/*.apk | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.TOKEN }} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
name: Test | ||
|
||
on: | ||
push: | ||
branches: | ||
- "master" | ||
paths-ignore: | ||
- 'README.md' | ||
|
||
workflow_dispatch: | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
env: | ||
output: "${{ github.workspace }}/app/build/outputs/apk/release" | ||
steps: | ||
- uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- uses: actions/setup-java@v3 | ||
with: | ||
distribution: temurin | ||
java-version: 17 | ||
|
||
- name: Setup Gradle | ||
uses: gradle/gradle-build-action@v2.4.2 | ||
|
||
- name: Init Signature | ||
run: | | ||
touch local.properties | ||
echo ALIAS_NAME='${{ secrets.ALIAS_NAME }}' >> local.properties | ||
echo ALIAS_PASSWORD='${{ secrets.ALIAS_PASSWORD }}' >> local.properties | ||
echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties | ||
echo KEY_PATH='./key.jks' >> local.properties | ||
# 从Secrets读取无换行符Base64解码, 然后保存到到app/key.jks | ||
echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/app/key.jks | ||
- name: Grant execute permission for gradlew | ||
run: chmod +x gradlew | ||
- name: Build with Gradle | ||
run: ./gradlew assembleRelease -build-cache --parallel --daemon --warning-mode all | ||
|
||
- name: Init APP Version Name | ||
run: | | ||
echo "ver_name=$(grep -m 1 'versionName' ${{ env.output }}/output-metadata.json | cut -d\" -f4)" >> $GITHUB_ENV | ||
- name: Upload App To Artifact | ||
if: success () || failure () | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: "ImageProcessor_${{env.ver_name}}" | ||
path: ${{ env.output }}/*.apk |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
*.jks | ||
*.iml | ||
.gradle | ||
/local.properties | ||
/.idea/caches | ||
/.idea/libraries | ||
/.idea/modules.xml | ||
/.idea/workspace.xml | ||
/.idea/navEditor.xml | ||
/.idea/assetWizardSettings.xml | ||
.DS_Store | ||
/build | ||
/captures | ||
.externalNativeBuild | ||
.cxx | ||
local.properties |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
/build |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
import java.util.Properties | ||
import java.io.FileInputStream | ||
|
||
plugins { | ||
id("com.android.application") | ||
id("org.jetbrains.kotlin.android") | ||
} | ||
|
||
android { | ||
namespace = "com.github.jing332.image_processor" | ||
compileSdk = 33 | ||
|
||
defaultConfig { | ||
applicationId = "com.github.jing332.image_processor" | ||
minSdk = 24 | ||
targetSdk = 33 | ||
versionCode = 1 | ||
versionName = "1.0" | ||
|
||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" | ||
vectorDrawables { | ||
useSupportLibrary = true | ||
} | ||
} | ||
|
||
|
||
signingConfigs { | ||
val pro = Properties() | ||
val input = FileInputStream(project.rootProject.file("local.properties")) | ||
pro.load(input) | ||
|
||
create("release") { | ||
storeFile = file(pro.getProperty("KEY_PATH")) | ||
storePassword = pro.getProperty("KEY_PASSWORD") | ||
keyAlias = pro.getProperty("ALIAS_NAME") | ||
keyPassword = pro.getProperty("ALIAS_PASSWORD") | ||
} | ||
} | ||
|
||
buildTypes { | ||
release { | ||
signingConfig = signingConfigs.getByName("release") | ||
isMinifyEnabled = true | ||
proguardFiles( | ||
getDefaultProguardFile("proguard-android-optimize.txt"), | ||
"proguard-rules.pro" | ||
) | ||
} | ||
|
||
debug { | ||
signingConfig = signingConfigs.getByName("release") | ||
isMinifyEnabled = false | ||
applicationIdSuffix = ".debug" | ||
versionNameSuffix = "_debug" | ||
} | ||
} | ||
compileOptions { | ||
sourceCompatibility = JavaVersion.VERSION_1_8 | ||
targetCompatibility = JavaVersion.VERSION_1_8 | ||
} | ||
kotlinOptions { | ||
jvmTarget = "1.8" | ||
} | ||
buildFeatures { | ||
compose = true | ||
} | ||
composeOptions { | ||
kotlinCompilerExtensionVersion = "1.4.3" | ||
} | ||
packaging { | ||
resources { | ||
excludes += "/META-INF/{AL2.0,LGPL2.1}" | ||
} | ||
} | ||
} | ||
|
||
dependencies { | ||
val accompanistVersion = "0.31.3-beta" | ||
implementation("com.google.accompanist:accompanist-systemuicontroller:${accompanistVersion}") | ||
implementation("com.google.accompanist:accompanist-navigation-animation:${accompanistVersion}") | ||
|
||
implementation("androidx.savedstate:savedstate:1.2.1") | ||
|
||
// 图片加载 | ||
implementation("io.coil-kt:coil-compose:2.4.0") | ||
|
||
// 图片预览 | ||
implementation("com.github.jvziyaoyao:ImageViewer:1.0.2-alpha.4") | ||
|
||
// 数据持久化 | ||
implementation("com.github.FunnySaltyFish.ComposeDataSaver:data-saver:v1.1.5") | ||
|
||
|
||
implementation("androidx.documentfile:documentfile:1.0.1") | ||
implementation("androidx.compose.material3:material3:1.1.1") | ||
implementation("androidx.compose.material:material-icons-extended:1.4.3") | ||
implementation("androidx.compose.material3:material3-window-size-class:1.1.1") | ||
|
||
implementation("androidx.lifecycle:lifecycle-runtime-compose:2.6.1") | ||
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1") | ||
|
||
implementation("androidx.constraintlayout:constraintlayout-compose:1.0.1") | ||
implementation("androidx.navigation:navigation-compose:2.6.0") | ||
|
||
implementation("androidx.core:core-ktx:1.9.0") | ||
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1") | ||
implementation("androidx.activity:activity-compose:1.7.2") | ||
implementation(platform("androidx.compose:compose-bom:2023.03.00")) | ||
implementation("androidx.compose.ui:ui") | ||
implementation("androidx.compose.ui:ui-graphics") | ||
implementation("androidx.compose.ui:ui-tooling-preview") | ||
implementation("androidx.compose.material3:material3") | ||
testImplementation("junit:junit:4.13.2") | ||
androidTestImplementation("androidx.test.ext:junit:1.1.5") | ||
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") | ||
androidTestImplementation(platform("androidx.compose:compose-bom:2023.03.00")) | ||
androidTestImplementation("androidx.compose.ui:ui-test-junit4") | ||
debugImplementation("androidx.compose.ui:ui-tooling") | ||
debugImplementation("androidx.compose.ui:ui-test-manifest") | ||
} |