Skip to content

Commit

Permalink
Convert android billing api from Sku to Product. Add android emulator…
Browse files Browse the repository at this point in the history
… helper
  • Loading branch information
Hugh Sanderson committed Mar 24, 2024
1 parent 1def906 commit b94fbf8
Show file tree
Hide file tree
Showing 7 changed files with 231 additions and 124 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:

- uses: krdlab/setup-haxe@v1
with:
haxe-version: 4.3.0
haxe-version: 4.3.4

- name: Install haxelibs
run: |
Expand Down
1 change: 1 addition & 0 deletions src/nme/store/BillingManager.hx
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ class BillingManager
public static function setPurchases(inPurchases:Array<Purchase>, andFire=true)
{
purchases = inPurchases;
//trace("setPurchases " + inPurchases);
if (andFire)
fire( PurchasesUpdated(0) );
}
Expand Down
13 changes: 7 additions & 6 deletions src/nme/store/SkuInfo.hx
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,17 @@ package nme.store;
class SkuInfo
{
public var description:String;
public var freeTrialPeriod:String;
public var introductoryPrice:String;
public var introductoryPriceAmountMicros:String;
public var introductoryPriceCycles:String;
public var introductoryPricePeriod:String;
//public var freeTrialPeriod:String;
//public var introductoryPrice:String;
//public var introductoryPriceAmountMicros:String;
//public var introductoryPriceCycles:String;
//public var introductoryPricePeriod:String;
public var name:String;
public var price:String;
public var priceAmountMicros:String;
public var priceCurrencyCode:String;
public var sku:String;
public var subscriptionPeriod:String;
//public var subscriptionPeriod:String;
public var title:String;
public var type:String;

Expand Down
265 changes: 151 additions & 114 deletions templates/android/java/org/haxe/nme/BillingManager.java

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion templates/android/java/org/haxe/nme/GameActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,7 @@ public static void billingInit(final String inPublicKey, final HaxeObject inUpda
final GameActivity me = activity;
queueRunnable( new Runnable() { @Override public void run() {
me.mBillingManager = new BillingManager(me, inPublicKey, inUpdatesListener);
Log.v(TAG,"billingInit got:" + me.mBillingManager );
} });
}
public static void billingClose()
Expand Down Expand Up @@ -318,8 +319,9 @@ public static JSONObject getSkuJson(com.android.billingclient.api.SkuDetails sku
}
*/

public static void billingQuery(String itemType, String[] skuArray, final HaxeObject onResult)
public static void billingQuery(String productType, String[] products, final HaxeObject onResult)
{
activity.mBillingManager.queryProductsAsync(productType, products, onResult);
/*
activity.mBillingManager.querySkuDetailsAsync(itemType, java.util.Arrays.asList(skuArray),
new com.android.billingclient.api.SkuDetailsResponseListener() {
Expand Down
7 changes: 6 additions & 1 deletion tools/nme/src/CommandLineTools.hx
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ class CommandLineTools
"installer", "copy-if-newer", "tidy", "set", "unset", "nocompile",
"clean", "update", "build", "run", "rerun", "install", "uninstall", "trace", "test",
"rebuild", "shell", "icon", "banner", "favicon", "serve", "listbrowsers",
"prepare", "quickrun", "uploadcrashlytics", "ndk-stack" ];
"prepare", "quickrun", "uploadcrashlytics", "ndk-stack", "emulator" ];
static var setNames = [ "target", "bin", "command", "cppiaHost", "cppiaClassPath", "deploy", "developmentTeam" ];
static var setNamesHelp = [ "default when no target is specifiec", "alternate location for binary files", "default command to run", "executable for running cppia code", "additional class path when building cppia", "remote deployment host", "IOS development team id (10 character code)" ];
static var quickSetNames = [ "debug", "verbose" ];
Expand Down Expand Up @@ -789,6 +789,7 @@ class CommandLineTools
sys.println(" demo : Run an existing sample or project");
sys.println(" create : Create a new project or extension using templates");
sys.println(" setup : Create an alias for nme so you don't need to type 'haxelib run nme...'");
sys.println(" emulator : start/list an android emulator");
sys.println(" rebuild : rebuild binaries from a build.xml file'");
sys.println(" remake : rebuild nme tool and build nme project binaries for targets'");
sys.println(" listbrowsers: show list of browsers that can be used with js targets");
Expand Down Expand Up @@ -1462,6 +1463,10 @@ class CommandLineTools
case "generate":
generate();

case "emulator":
var android = new platforms.AndroidPlatform(project);
android.emulator(words);

case "clone":
processSample(project,"clone");

Expand Down
63 changes: 62 additions & 1 deletion tools/nme/src/platforms/AndroidPlatform.hx
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,18 @@ class AndroidPlatform extends Platform
project.androidConfig.ABIs = [abi];

if (project.androidConfig.ABIs.length==0)
{
var emulators = getAvdList();
if (emulators==null || emulators.length==0)
{
Log.info(" Could not find any emulators - try installing from Android Studio");
}
else
{
Log.info(" try starting one of the emulators with emulator emulator_name from" + emulators);
}
Log.error("Could not determine build target from adb, and no test ABI specified");
}
}
else if(project.androidConfig.ABIs.length == 0)
{
Expand Down Expand Up @@ -130,6 +141,25 @@ class AndroidPlatform extends Platform
}
}

public function emulator(args:Array<String>)
{
if (args.length!=1)
{
Log.error("Usage: name emulator [emulator_name|list]");
}
if (args[0]=="list")
{
var emus = getAvdList();
Sys.println('Emulators: $emus');
}
else
{
var emu = getEmulatorExe();
if (emu==null)
Log.error("Could not find emulator exe.");
ProcessHelper.runCommand("", emu, [ "-avd", args[0] ] );
}
}

function findArchitectureByName(arch:String) : Architecture
{
Expand Down Expand Up @@ -349,6 +379,37 @@ class AndroidPlatform extends Platform
return exe;
}

static var emulatorExe:String = null;
function getEmulatorExe() : String
{
if (emulatorExe==null)
{
var ext = "";
if (PlatformHelper.hostPlatform==Platform.WINDOWS)
ext = ".exe";
var test = project.environment.get("ANDROID_SDK") + "/emulator/emulator" + ext;
if (FileSystem.exists(test))
{
Log.verbose("Found emulator exe at:" + test);
emulatorExe = test;
}
else
emulatorExe = "";
}
return emulatorExe=="" ? null : emulatorExe;
}


public function getAvdList() : Array<String>
{
var exe = getEmulatorExe();
if (exe==null)
return null;

var out = ProcessHelper.getOutput(exe, [ "-list-avds"]);
return out;
}

public function runNdkStack(args:Array<String>)
{
var exe = getNdkStackExe();
Expand Down Expand Up @@ -530,7 +591,7 @@ class AndroidPlatform extends Platform

private function queryDeviceABI():String {
var lines = ProcessHelper.getOutput(adbName,"shell getprop ro.product.cpu.abi".split(' '), Log.mVerbose);
trace(lines);
//trace(lines);
if(lines.length > 0) {
if(lines[0].indexOf('error') == -1) {
var abi = lines[0].split("\r")[0];
Expand Down

0 comments on commit b94fbf8

Please sign in to comment.