add buildtypes
This commit is contained in:
@@ -42,7 +42,8 @@ jobs:
|
||||
|
||||
- name: Build VTLite
|
||||
run: |
|
||||
gradle prepareDexForMerge
|
||||
gradle generateBuildTasks
|
||||
gradle prepareDexForMergeDebug
|
||||
java -jar scripts/apktool.jar b smali -o smali/VTLite.apk --use-aapt2 -p scripts/framework/
|
||||
zipalign -p -f 4 smali/VTLite.apk smali/VTLite.apk_aligned
|
||||
mv smali/VTLite.apk_aligned smali/VTLite.apk
|
||||
|
||||
+124
-102
@@ -49,6 +49,18 @@ android {
|
||||
multiDexEnabled true
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
debug {
|
||||
buildConfigField 'String', 'APPCENTER_KEY', '""'
|
||||
}
|
||||
beta {
|
||||
buildConfigField 'String', 'APPCENTER_KEY', '""'
|
||||
}
|
||||
release {
|
||||
buildConfigField 'String', 'APPCENTER_KEY', '""'
|
||||
}
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
coreLibraryDesugaringEnabled true
|
||||
sourceCompatibility JavaVersion.VERSION_14
|
||||
@@ -68,118 +80,129 @@ dependencies {
|
||||
implementation 'com.google.guava:guava:23.3-android'
|
||||
}
|
||||
|
||||
task exportDex {
|
||||
doLast {
|
||||
try {
|
||||
File moduleDir = projectDir
|
||||
ZipInputStream inputStream = new ZipInputStream(new FileInputStream(moduleDir.getAbsolutePath() + "/build/outputs/apk/release/app-release-unsigned.apk"))
|
||||
ZipFile file = new ZipFile(moduleDir.getAbsolutePath() + "/build/outputs/apk/release/app-release-unsigned.apk");
|
||||
ZipEntry entry
|
||||
while ((entry = inputStream.nextEntry) != null) {
|
||||
if (entry.getName().equals("classes.dex")) {
|
||||
print('classes.dex found!')
|
||||
task generateBuildTasks() {
|
||||
android.applicationVariants.all { variant ->
|
||||
variant.outputs.each { output ->
|
||||
def buildType = output.name.toString().capitalize()
|
||||
def lowerBuildType = buildType.toLowerCase()
|
||||
task "exportDex$buildType"() {
|
||||
dependsOn('assemble' + buildType)
|
||||
doLast {
|
||||
try {
|
||||
var z = ""
|
||||
if (lowerBuildType != "debug") {
|
||||
z = "-unsigned"
|
||||
}
|
||||
|
||||
FileOutputStream output = new FileOutputStream(new File(moduleDir.getAbsoluteFile(), "classes6.dex"))
|
||||
File moduleDir = projectDir
|
||||
ZipInputStream inputStream = new ZipInputStream(new FileInputStream(moduleDir.getAbsolutePath() + "/build/outputs/apk/$lowerBuildType/app-$lowerBuildType${z}.apk"))
|
||||
ZipFile file = new ZipFile(moduleDir.getAbsolutePath() + "/build/outputs/apk/$lowerBuildType/app-$lowerBuildType${z}.apk");
|
||||
ZipEntry entry
|
||||
while ((entry = inputStream.nextEntry) != null) {
|
||||
if (entry.getName().equals("classes.dex")) {
|
||||
print('classes.dex found!')
|
||||
|
||||
byte[] buffer = new byte[1024]
|
||||
int len = 0
|
||||
while ((len = inputStream.read(buffer)) > 0) {
|
||||
output.write(buffer, 0, len)
|
||||
FileOutputStream outputStream = new FileOutputStream(new File(moduleDir.getAbsoluteFile(), "classes6.dex"))
|
||||
|
||||
byte[] buffer = new byte[1024]
|
||||
int len = 0
|
||||
while ((len = inputStream.read(buffer)) > 0) {
|
||||
outputStream.write(buffer, 0, len)
|
||||
}
|
||||
outputStream.close()
|
||||
}
|
||||
if (entry.getName().equals("classes2.dex")) {
|
||||
print('\nclasses2.dex found!')
|
||||
|
||||
FileOutputStream outputStream = new FileOutputStream(new File(moduleDir.getAbsoluteFile(), "classes7.dex"))
|
||||
|
||||
byte[] buffer = new byte[1024]
|
||||
int len = 0
|
||||
while ((len = inputStream.read(buffer)) > 0) {
|
||||
outputStream.write(buffer, 0, len)
|
||||
}
|
||||
outputStream.close()
|
||||
}
|
||||
}
|
||||
|
||||
for (ZipEntry e : Collections.list(file.entries())) {
|
||||
if (e.getName().endsWith("assets/version.properties")) {
|
||||
var is = file.getInputStream(e)
|
||||
FileOutputStream outputStream = new FileOutputStream(new File(moduleDir.getAbsoluteFile(), "version.properties"))
|
||||
|
||||
byte[] buffer = new byte[1024]
|
||||
int len = 0
|
||||
while ((len = is.read(buffer)) > 0) {
|
||||
outputStream.write(buffer, 0, len)
|
||||
}
|
||||
outputStream.close()
|
||||
|
||||
print('\nversion.properties found!')
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
output.close()
|
||||
}
|
||||
if (entry.getName().equals("classes2.dex")) {
|
||||
print('\nclasses2.dex found!')
|
||||
|
||||
FileOutputStream output = new FileOutputStream(new File(moduleDir.getAbsoluteFile(), "classes7.dex"))
|
||||
|
||||
byte[] buffer = new byte[1024]
|
||||
int len = 0
|
||||
while ((len = inputStream.read(buffer)) > 0) {
|
||||
output.write(buffer, 0, len)
|
||||
}
|
||||
output.close()
|
||||
}
|
||||
}
|
||||
|
||||
for (ZipEntry e : Collections.list(file.entries())) {
|
||||
if (e.getName().endsWith("assets/version.properties")) {
|
||||
var is = file.getInputStream(e)
|
||||
FileOutputStream output = new FileOutputStream(new File(moduleDir.getAbsoluteFile(), "version.properties"))
|
||||
|
||||
byte[] buffer = new byte[1024]
|
||||
int len = 0
|
||||
while ((len = is.read(buffer)) > 0) {
|
||||
output.write(buffer, 0, len)
|
||||
}
|
||||
output.close()
|
||||
|
||||
print('\nversion.properties found!')
|
||||
task "prepareDexForMerge$buildType"(type: Copy) {
|
||||
dependsOn('exportDex' + buildType)
|
||||
// Remove comment for native lib build
|
||||
dependsOn('cargoBuild')
|
||||
into smaliFolder.toString()
|
||||
from(projectDir) {
|
||||
include 'classes6.dex'
|
||||
include 'classes7.dex'
|
||||
}
|
||||
from(projectDir) {
|
||||
include 'version.properties'
|
||||
into 'assets'
|
||||
}
|
||||
// Remove comment for native lib build
|
||||
from('../native-effects/target/aarch64-linux-android/release'){
|
||||
include 'libnative_effects.so'
|
||||
into 'lib/arm64-v8a'
|
||||
}
|
||||
from('../native-effects/target/armv7-linux-androideabi/release'){
|
||||
include 'libnative_effects.so'
|
||||
into 'lib/armeabi-v7a'
|
||||
}
|
||||
doLast {
|
||||
new File(projectDir, "classes6.dex").delete()
|
||||
new File(projectDir, "classes7.dex").delete()
|
||||
new File(projectDir, "version.properties").delete()
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace()
|
||||
task "buildVTL$buildType"(type: Exec) {
|
||||
dependsOn('prepareDexForMerge' + buildType)
|
||||
workingDir(projectDir.parentFile)
|
||||
if (Os.isFamily("unix") || Os.isFamily("mac")) {
|
||||
commandLine 'bash', '-c', './scripts/build.sh'
|
||||
} else {
|
||||
commandLine 'cmd', '/C', '.\\scripts\\build.bat'
|
||||
}
|
||||
}
|
||||
task "buildAndInstallVTL$buildType"(type: Exec) {
|
||||
dependsOn('buildVTL' + buildType)
|
||||
workingDir(scriptsFolder.toString())
|
||||
ignoreExitValue true
|
||||
if (Os.isFamily("unix") || Os.isFamily("mac")) {
|
||||
commandLine 'bash', '-c', 'adb install VTLite.apk'
|
||||
} else {
|
||||
commandLine 'adb', 'install', 'VTLite.apk'
|
||||
}
|
||||
}
|
||||
task "buildAndLaunchVTL$buildType"(type: Exec) {
|
||||
dependsOn('buildAndInstallVTL' + buildType)
|
||||
if (Os.isFamily("unix") || Os.isFamily("mac"))
|
||||
commandLine 'bash', '-c', 'adb shell monkey -p com.vtosters.lite -c android.intent.category.LAUNCHER 1'
|
||||
else
|
||||
commandLine 'adb', 'shell', 'monkey', '-p', 'com.vtosters.lite', '-c', 'android.intent.category.LAUNCHER', '1'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
task prepareDexForMerge(type: Copy) {
|
||||
dependsOn('exportDex')
|
||||
// Remove comment for native lib build
|
||||
dependsOn('cargoBuild')
|
||||
into smaliFolder.toString()
|
||||
from(projectDir) {
|
||||
include 'classes6.dex'
|
||||
include 'classes7.dex'
|
||||
}
|
||||
from(projectDir) {
|
||||
include 'version.properties'
|
||||
into 'assets'
|
||||
}
|
||||
// Remove comment for native lib build
|
||||
from('../native-effects/target/aarch64-linux-android/release'){
|
||||
include 'libnative_effects.so'
|
||||
into 'lib/arm64-v8a'
|
||||
}
|
||||
from('../native-effects/target/armv7-linux-androideabi/release'){
|
||||
include 'libnative_effects.so'
|
||||
into 'lib/armeabi-v7a'
|
||||
}
|
||||
doLast {
|
||||
new File(projectDir, "classes6.dex").delete()
|
||||
new File(projectDir, "classes7.dex").delete()
|
||||
new File(projectDir, "version.properties").delete()
|
||||
}
|
||||
}
|
||||
|
||||
task buildVTL(type: Exec) {
|
||||
dependsOn('prepareDexForMerge')
|
||||
workingDir(projectDir.parentFile)
|
||||
if (Os.isFamily("unix") || Os.isFamily("mac")) {
|
||||
commandLine 'bash', '-c', './scripts/build.sh'
|
||||
} else {
|
||||
commandLine 'cmd', '/C', '.\\scripts\\build.bat'
|
||||
}
|
||||
}
|
||||
|
||||
task buildAndInstallVTL(type: Exec) {
|
||||
dependsOn('buildVTL')
|
||||
workingDir(scriptsFolder.toString())
|
||||
ignoreExitValue true
|
||||
if (Os.isFamily("unix") || Os.isFamily("mac")) {
|
||||
commandLine 'bash', '-c', 'adb install VTLite.apk'
|
||||
} else {
|
||||
commandLine 'adb', 'install', 'VTLite.apk'
|
||||
}
|
||||
}
|
||||
|
||||
task buildAndLaunchVTL(type: Exec) {
|
||||
dependsOn('buildAndInstallVTL')
|
||||
if (Os.isFamily("unix") || Os.isFamily("mac"))
|
||||
commandLine 'bash', '-c', 'adb shell monkey -p com.vtosters.lite -c android.intent.category.LAUNCHER 1'
|
||||
else
|
||||
commandLine 'adb', 'shell', 'monkey', '-p', 'com.vtosters.lite', '-c', 'android.intent.category.LAUNCHER', '1'
|
||||
}
|
||||
|
||||
task generateRjava(type: Exec) {
|
||||
workingDir(projectDir.parentFile)
|
||||
@@ -189,7 +212,6 @@ task generateRjava(type: Exec) {
|
||||
commandLine "cmd", "/C", ".\\scripts\\rclass_regenerator.sh"
|
||||
}
|
||||
|
||||
exportDex.dependsOn('assembleRelease')
|
||||
clean.dependsOn('cleanVersionFile')
|
||||
versionFile.dependsOn('cleanVersionFile')
|
||||
preBuild.dependsOn('versionFile')
|
||||
|
||||
@@ -12,10 +12,12 @@ import com.microsoft.appcenter.ingestion.models.Log;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class AnalyticsHelper {
|
||||
private static final boolean analyticsDisabled = Preferences.getBoolValue("analyticsDisabled", false);;
|
||||
import ru.vtosters.lite.BuildConfig;
|
||||
|
||||
private static final String key = "5028aa35-9f16-44ed-b306-c4ed471a57eb";
|
||||
public class AnalyticsHelper {
|
||||
private static final boolean analyticsDisabled = Preferences.getBoolValue("analyticsDisabled", false);
|
||||
|
||||
private static final String key = BuildConfig.APPCENTER_KEY;
|
||||
|
||||
private static final Channel.Listener patchDeviceListener = new AbstractChannelListener() {
|
||||
@Override
|
||||
@@ -50,8 +52,9 @@ public class AnalyticsHelper {
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
public static void start(Application application) {
|
||||
if (analyticsDisabled) {
|
||||
if (analyticsDisabled || key.isEmpty()) {
|
||||
setAnalyticsStatus(false);
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user