Only expose symbols bundled in APK on demand

- Cuts down on launch time
    - Cuts down on wasted app space
This commit is contained in:
Aaron Culliney 2015-10-22 23:30:36 -07:00
parent 9f5bbe6eb0
commit 42a2fac420
3 changed files with 19 additions and 5 deletions

View File

@ -146,14 +146,9 @@ public class Apple2Activity extends Activity {
// run first-time initializations // run first-time initializations
if (!Apple2Preferences.FIRST_TIME_CONFIGURED.booleanValue(this)) { if (!Apple2Preferences.FIRST_TIME_CONFIGURED.booleanValue(this)) {
Apple2DisksMenu.firstTime(this); Apple2DisksMenu.firstTime(this);
Apple2DisksMenu.exposeSymbols(this);
Apple2Preferences.KeypadPreset.IJKM_SPACE.apply(this); Apple2Preferences.KeypadPreset.IJKM_SPACE.apply(this);
} }
Apple2Preferences.FIRST_TIME_CONFIGURED.saveBoolean(this, true); Apple2Preferences.FIRST_TIME_CONFIGURED.saveBoolean(this, true);
if (BuildConfig.DEBUG) {
// always copy new symbols while developing/iterating
Apple2DisksMenu.exposeSymbols(this);
}
// get device audio parameters for native OpenSLES // get device audio parameters for native OpenSLES
int sampleRate = DevicePropertyCalculator.getRecommendedSampleRate(this); int sampleRate = DevicePropertyCalculator.getRecommendedSampleRate(this);

View File

@ -187,6 +187,8 @@ public class Apple2CrashHandler {
@Override @Override
public void run() { public void run() {
Apple2DisksMenu.exposeSymbols(activity);
final int sampleRate = DevicePropertyCalculator.getRecommendedSampleRate(activity); final int sampleRate = DevicePropertyCalculator.getRecommendedSampleRate(activity);
final int monoBufferSize = DevicePropertyCalculator.getRecommendedBufferSize(activity, /*isStereo:*/false); final int monoBufferSize = DevicePropertyCalculator.getRecommendedBufferSize(activity, /*isStereo:*/false);
final int stereoBufferSize = DevicePropertyCalculator.getRecommendedBufferSize(activity, /*isStereo:*/true); final int stereoBufferSize = DevicePropertyCalculator.getRecommendedBufferSize(activity, /*isStereo:*/true);
@ -239,6 +241,8 @@ public class Apple2CrashHandler {
allCrashData.append(">>>>>>> JAVA CRASH DATA\n"); allCrashData.append(">>>>>>> JAVA CRASH DATA\n");
allCrashData.append(javaCrashData); allCrashData.append(javaCrashData);
Apple2DisksMenu.unexposeSymbols(activity);
// send report with all the data // send report with all the data
_sendEmailToDeveloperWithCrashData(activity, allCrashData); _sendEmailToDeveloperWithCrashData(activity, allCrashData);
} }

View File

@ -137,6 +137,10 @@ public class Apple2DisksMenu implements Apple2MenuView {
recursivelyCopyAPKAssets(activity, /*from APK directory:*/"symbols", /*to location:*/new File(sDataDir, "symbols").getAbsolutePath()); recursivelyCopyAPKAssets(activity, /*from APK directory:*/"symbols", /*to location:*/new File(sDataDir, "symbols").getAbsolutePath());
} }
public static void unexposeSymbols(Apple2Activity activity) {
recursivelyDelete(new File(sDataDir, "symbols"));
}
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
// Apple2MenuView interface methods // Apple2MenuView interface methods
@ -274,6 +278,17 @@ public class Apple2DisksMenu implements Apple2MenuView {
return pathBuffer.toString(); return pathBuffer.toString();
} }
private static void recursivelyDelete(File file) {
if (file.isDirectory()) {
for (File f : file.listFiles()) {
recursivelyDelete(f);
}
}
if (!file.delete()) {
Log.d(TAG, "Failed to delete file: " + file);
}
}
private static void recursivelyCopyAPKAssets(Apple2Activity activity, String srcFileOrDir, String dstFileOrDir) { private static void recursivelyCopyAPKAssets(Apple2Activity activity, String srcFileOrDir, String dstFileOrDir) {
AssetManager assetManager = activity.getAssets(); AssetManager assetManager = activity.getAssets();