Skip to content

Commit

Permalink
Merge pull request #666 from aiselp/build-fix
Browse files Browse the repository at this point in the history
打包app的修复
  • Loading branch information
kkevsekk1 authored Sep 16, 2023
2 parents e66a8f9 + 87ec946 commit 7540458
Show file tree
Hide file tree
Showing 21 changed files with 392 additions and 505 deletions.
9 changes: 7 additions & 2 deletions app/src/main/java/org/autojs/autojs/build/ApkBuilder.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import com.stardust.app.GlobalAppContext
import com.stardust.autojs.apkbuilder.ApkPackager
import com.stardust.autojs.apkbuilder.ManifestEditor
import com.stardust.autojs.project.BuildInfo
import com.stardust.autojs.project.Constant
import com.stardust.autojs.project.ProjectConfig
import com.stardust.autojs.script.EncryptedScriptFileHeader
import com.stardust.autojs.script.JavaScriptFileSource
Expand All @@ -16,11 +17,10 @@ import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.asSharedFlow
import org.apache.commons.io.FileUtils
import org.apache.commons.io.IOUtils
import org.autojs.autojs.tool.addAllIfNotExist
import org.autojs.autojs.tool.copyTo
import org.autojs.autojs.tool.parseUriOrNull
import org.autojs.autojs.tool.unzip
import com.stardust.autojs.project.Constant
import org.autojs.autojs.tool.addAllIfNotExist
import pxb.android.StringItem
import pxb.android.axml.AxmlWriter
import zhao.arsceditor.ArscUtil
Expand Down Expand Up @@ -141,6 +141,11 @@ class ApkBuilder(
}

private fun encrypt(file: File, newFile: File) {
if (!projectConfig!!.isEncrypt){
newFile.delete()
file.copyTo(newFile)
return
}
val out = newFile.outputStream()
EncryptedScriptFileHeader.writeHeader(
out,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public Single<? extends ExplorerPage> getExplorerPage(ExplorerPage page) {
return listFiles(new PFile(path))
.collectInto(createExplorerPage(path, parent), (p, file) -> {
if (file.isDirectory()) {
ProjectConfig projectConfig = ProjectConfig.Companion.fromProjectDir(file.getPath());
ProjectConfig projectConfig = ProjectConfig.Companion.fromProject(file);
if (projectConfig != null) {
p.addChild(new ExplorerProjectPage(file, parent, projectConfig));
return;
Expand Down
187 changes: 93 additions & 94 deletions app/src/main/java/org/autojs/autojs/ui/build/BuildPage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,52 @@ import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.compose.foundation.Image
import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.shape.ZeroCornerSize
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.*
import androidx.compose.material.AlertDialog
import androidx.compose.material.Card
import androidx.compose.material.Checkbox
import androidx.compose.material.ContentAlpha
import androidx.compose.material.Divider
import androidx.compose.material.FabPosition
import androidx.compose.material.FloatingActionButton
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.LocalContentAlpha
import androidx.compose.material.LocalTextStyle
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Scaffold
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.material.TextButton
import androidx.compose.material.TextField
import androidx.compose.material.TextFieldColors
import androidx.compose.material.TextFieldDefaults
import androidx.compose.material.TopAppBar
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material.icons.filled.Done
import androidx.compose.runtime.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusDirection
Expand All @@ -47,15 +80,16 @@ import com.stardust.pio.PFile
import com.stardust.pio.PFiles
import com.stardust.util.IntentUtil
import org.autojs.autojs.Pref
import org.autojs.autoxjs.R
import org.autojs.autojs.build.ApkKeyStore
import org.autojs.autojs.build.ApkSigner
import org.autojs.autojs.external.fileprovider.AppFileProvider
import org.autojs.autojs.theme.dialog.ThemeColorMaterialDialogBuilder
import org.autojs.autojs.ui.compose.widget.ProgressDialog
import org.autojs.autojs.ui.filechooser.FileChooserDialogBuilder
import org.autojs.autojs.ui.shortcut.ShortcutIconSelectResult
import org.autojs.autoxjs.R
import java.io.File
import kotlin.reflect.KMutableProperty0

/**
* @author wilinz
Expand Down Expand Up @@ -120,6 +154,7 @@ fun BuildPage(model: BuildViewModel = viewModel()) {
ConfigCard(model)
PackagingOptionCard(model)
RunConfigCard(model)
EncryptCard(model)
SignatureCard(model)
}
}
Expand Down Expand Up @@ -226,42 +261,18 @@ private fun PackagingOptionCard(
onValueChange = { model.abiList = it },
label = { Text(text = stringResource(id = R.string.text_abi)) }
)
Row(verticalAlignment = Alignment.CenterVertically) {
Checkbox(
checked = model.isRequiredOpenCv,
onCheckedChange = { model.isRequiredOpenCv = it })
Text(text = stringResource(id = R.string.text_required_opencv))
}
Row(verticalAlignment = Alignment.CenterVertically) {
Checkbox(
checked = model.isRequiredMlKitOCR,
onCheckedChange = { model.isRequiredMlKitOCR = it })
Text(text = stringResource(id = R.string.text_required_google_mlkit_ocr))
}
Row(verticalAlignment = Alignment.CenterVertically) {
Checkbox(
checked = model.isRequiredPaddleOCR,
onCheckedChange = { model.isRequiredPaddleOCR = it })
Text(text = stringResource(id = R.string.text_required_paddle_ocr))
}
Row(verticalAlignment = Alignment.CenterVertically) {
Checkbox(
checked = model.isRequiredTesseractOCR,
onCheckedChange = { model.isRequiredTesseractOCR = it })
Text(text = stringResource(id = R.string.text_required_tesseract_ocr))
}
Row(verticalAlignment = Alignment.CenterVertically) {
Checkbox(
checked = model.isRequired7Zip,
onCheckedChange = { model.isRequired7Zip = it })
Text(text = stringResource(id = R.string.text_required_7zip))
}
Row(verticalAlignment = Alignment.CenterVertically) {
Checkbox(
checked = model.isRequiredDefaultOcrModelData,
onCheckedChange = { model.isRequiredDefaultOcrModelData = it })
Text(text = stringResource(id = R.string.text_required_default_paddle_ocr_model))
val map = mapOf(
stringResource(id = R.string.text_required_opencv) to model::isRequiredOpenCv,
stringResource(id = R.string.text_required_google_mlkit_ocr) to model::isRequiredMlKitOCR,
stringResource(id = R.string.text_required_paddle_ocr) to model::isRequiredPaddleOCR,
stringResource(id = R.string.text_required_tesseract_ocr) to model::isRequiredTesseractOCR,
stringResource(id = R.string.text_required_7zip) to model::isRequired7Zip,
stringResource(id = R.string.text_required_default_paddle_ocr_model) to model::isRequiredDefaultOcrModelData,
)
for ((t, v) in map) {
CheckboxOption(v, t)
}

//目前必须为true
/*Row(verticalAlignment = Alignment.CenterVertically) {
Checkbox(
Expand All @@ -273,6 +284,21 @@ private fun PackagingOptionCard(
}
}

@Composable
fun CheckboxOption(value: KMutableProperty0<Boolean>, name: String) {
Row(
modifier = Modifier
.fillMaxWidth()
.clickable { value.set(!value.get()) },
verticalAlignment = Alignment.CenterVertically
) {
Checkbox(
checked = value.get(),
onCheckedChange = { value.set(it) })
Text(text = name)
}
}

@Composable
private fun SignatureCard(
model: BuildViewModel
Expand Down Expand Up @@ -300,7 +326,19 @@ private fun SignatureCard(
}
}
}

@Composable
fun EncryptCard(model: BuildViewModel){
Card {
Column(
Modifier
.fillMaxSize()
.padding(24.dp)
){
Text(text = stringResource(R.string.text_encrypt_options))
CheckboxOption(model::isEncrypt, stringResource(id = R.string.text_is_encrypt))
}
}
}
@Composable
private fun RunConfigCard(model: BuildViewModel) {
val context = LocalContext.current
Expand All @@ -311,7 +349,7 @@ private fun RunConfigCard(model: BuildViewModel) {
}
)

Card() {
Card {
Column(
Modifier
.fillMaxSize()
Expand All @@ -324,60 +362,21 @@ private fun RunConfigCard(model: BuildViewModel) {
label = { Text(text = stringResource(id = R.string.text_main_file_name)) },
)
Spacer(modifier = Modifier.height(8.dp))
Row(verticalAlignment = Alignment.CenterVertically) {
Checkbox(
checked = model.isHideLauncher,
onCheckedChange = { model.isHideLauncher = it })
Text(text = stringResource(id = R.string.text_hideLaucher))
}
Row(verticalAlignment = Alignment.CenterVertically) {
Checkbox(
checked = model.isStableMode,
onCheckedChange = { model.isStableMode = it })
Text(text = stringResource(id = R.string.text_stable_mode))
}
Row(verticalAlignment = Alignment.CenterVertically) {
Checkbox(
checked = model.isHideLogs,
onCheckedChange = { model.isHideLogs = it })
Text(text = stringResource(id = R.string.text_hideLogs))
}
Row(verticalAlignment = Alignment.CenterVertically) {
Checkbox(
checked = model.isVolumeUpControl,
onCheckedChange = { model.isVolumeUpControl = it })
Text(text = stringResource(id = R.string.text_volumeUpcontrol))
}
Row(verticalAlignment = Alignment.CenterVertically) {
Checkbox(
checked = model.isRequiredAccessibilityServices,
onCheckedChange = { model.isRequiredAccessibilityServices = it })
Text(text = stringResource(id = R.string.text_required_accessibility_service))
}
Row(verticalAlignment = Alignment.CenterVertically) {
Checkbox(
checked = model.isHideAccessibilityServices,
onCheckedChange = { model.isHideAccessibilityServices = it })
Text(text = stringResource(id = R.string.text_hide_accessibility_services))
}
Row(verticalAlignment = Alignment.CenterVertically) {
Checkbox(
checked = model.isRequiredBackgroundStart,
onCheckedChange = { model.isRequiredBackgroundStart = it })
Text(text = stringResource(id = R.string.text_required_background_start))
}
Row(verticalAlignment = Alignment.CenterVertically) {
Checkbox(
checked = model.isRequiredDrawOverlay,
onCheckedChange = { model.isRequiredDrawOverlay = it })
Text(text = stringResource(id = R.string.text_required_draw_overlay))
}
Row(verticalAlignment = Alignment.CenterVertically) {
Checkbox(
checked = model.displaySplash,
onCheckedChange = { model.displaySplash = it })
Text(text = stringResource(id = R.string.text_display_splash))
val map = mapOf(
stringResource(id = R.string.text_hideLaucher) to model::isHideLauncher,
stringResource(id = R.string.text_stable_mode) to model::isStableMode,
stringResource(id = R.string.text_hideLogs) to model::isHideLogs,
stringResource(id = R.string.text_volumeUpcontrol) to model::isVolumeUpControl,
stringResource(id = R.string.text_required_accessibility_service) to model::isRequiredAccessibilityServices,
stringResource(id = R.string.text_hide_accessibility_services) to model::isHideAccessibilityServices,
stringResource(id = R.string.text_required_background_start) to model::isRequiredBackgroundStart,
stringResource(id = R.string.text_required_draw_overlay) to model::isRequiredDrawOverlay,
stringResource(id = R.string.text_display_splash) to model::displaySplash
)
for ((t, v) in map) {
CheckboxOption(v, t)
}

MyTextField(
value = model.splashText,
onValueChange = { model.splashText = it },
Expand Down
Loading

0 comments on commit 7540458

Please sign in to comment.