IDE now can launch apk on Android Virtual Devices

git-svn-id: svn://ultimatepp.org/upp/trunk@9576 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
klugier 2016-03-06 13:22:47 +00:00
parent ca839d7efd
commit 791de64074
5 changed files with 50 additions and 27 deletions

View file

@ -101,20 +101,21 @@ Vector<AndroidDevice> AndroidSDK::FindDevices() const
Vector<String> elements = Split(lines[i], " ");
for(int j = 0; j < elements.GetCount(); j++) {
if(j == 0) {
if(j == 0)
device.SetSerial(elements[j]);
continue;
}
Vector<String> element = Split(elements[j], ":");
if(element.GetCount() == 2) {
String tag = element[0];
String data = element[1];
if(tag == "usb")
device.SetUsb(data);
else
if(tag == "model")
device.SetModel(data);
else if(j == 1)
device.SetState(elements[j]);
else {
Vector<String> element = Split(elements[j], ":");
if(element.GetCount() == 2) {
String tag = element[0];
String data = element[1];
if(tag == "usb")
device.SetUsb(data);
else
if(tag == "model")
device.SetModel(data);
}
}
}
devices.Add(device);

View file

@ -12,19 +12,22 @@ public:
public:
String GetSerial() const { return serial; }
String GetState() const { return state; }
String GetUsb() const { return usb; }
String GetModel() const { return model; }
void SetSerial(const String& serial) { this->serial = serial; }
void SetState(const String& state) { this->state = state; }
void SetUsb(const String& usb) { this->usb = usb; }
void SetModel(const String& model) { this->model = model; }
public:
bool IsEmulator() const { return model.IsEmpty(); }
bool IsEmulator() const { return !usb.IsEmpty(); }
bool IsPhysicalDevice() const { return !IsEmulator(); }
private:
String serial;
String state;
String usb;
String model;
};

View file

@ -504,6 +504,12 @@ bool AndroidBuilder::SignApk(const String& target, const String& unsignedApkPath
DeleteFile(signedApkPath);
String jarsignerCmd;
jarsignerCmd << NormalizeExePath(jdk.GetJarsignerPath());
// Up to Java 6.0 below alogirms was by default
// (In Java 7.0 and above we need to manually specific this algorithms)
jarsignerCmd << " -sigalg SHA1withRSA";
jarsignerCmd << " -digestalg SHA1";
jarsignerCmd << " -keystore " + keystorePath;
jarsignerCmd << " -storepass android";
jarsignerCmd << " -keypass android";
@ -547,7 +553,9 @@ bool AndroidBuilder::GenerateDebugKey(const String& keystorePath)
keytoolCmd << NormalizeExePath(jdk.GetKeytoolPath());
keytoolCmd << " -genkeypair -alias androiddebugkey -keypass android";
keytoolCmd << " -keystore " << keystorePath;
keytoolCmd << " -storepass android -dname \"CN=Android Debug,O=Android,C=US\" -validity 100000";
keytoolCmd << " -storepass android -dname \"CN=Android Debug,O=Android,C=US\"";
keytoolCmd << " -keyalg RSA";
keytoolCmd << " -validity 100000";
//PutConsole(keytoolCmd);
if(Execute(keytoolCmd, ss) != 0) {
PutConsole(ss.GetResult());

View file

@ -152,7 +152,9 @@ public:
String GetSelectedSerial() const;
private:
void LoadPhysicalDevices();
void LoadDevices();
void OnRefresh();
private:
AndroidSDK* sdk;
@ -163,33 +165,41 @@ SelectAndroidDeviceDlg::SelectAndroidDeviceDlg(AndroidSDK* sdk) :
{
CtrlLayoutOKCancel(*this, "Android device selection");
devicesArray.AddColumn("Device/Model");
devicesArray.AddColumn("Serial");
devicesArray.AddColumn("Serial Number");
devicesArray.AddColumn("State");
LoadPhysicalDevices();
refresh <<= THISBACK(OnRefresh);
LoadDevices();
}
String SelectAndroidDeviceDlg::GetSelectedSerial() const
{
int row = devicesArray.IsCursor() ? devicesArray.GetCursor() : 0;
return devicesArray.GetCount() ? devicesArray.Get(row, 1) : "";
return devicesArray.GetCount() ? devicesArray.Get(row, 0) : "";
}
void SelectAndroidDeviceDlg::LoadPhysicalDevices()
void SelectAndroidDeviceDlg::LoadDevices()
{
Vector<AndroidDevice> devices = sdk->FindDevices();
for(int i = 0; i < devices.GetCount(); i++) {
if(devices[i].IsPhysicalDevice()) {
devicesArray.Add(devices[i].GetModel(), devices[i].GetSerial());
}
devicesArray.Add(devices[i].GetSerial(), devices[i].GetState());
}
if(devicesArray.GetCount())
devicesArray.Select(0);
if(devicesArray.GetCount()) {
devicesArray.GoBegin();
ok.Enable();
}
else
ok.Disable();
}
void SelectAndroidDeviceDlg::OnRefresh()
{
devicesArray.Clear();
LoadDevices();
}
void Ide::ExecuteApk()
{
AndroidSDK sdk(GetAndroidSdkPath(), true);

View file

@ -777,9 +777,10 @@ LAYOUT(JumpLayout, 692, 496)
END_LAYOUT
LAYOUT(SelectAndroidDeviceLayout, 432, 228)
ITEM(Button, ok, SetLabel(t_("OK")).RightPosZ(72, 64).BottomPosZ(4, 24))
ITEM(Button, refresh, SetLabel(t_("Refresh")).LeftPosZ(4, 64).BottomPosZ(4, 24))
ITEM(Button, cancel, SetLabel(t_("Cancel")).RightPosZ(4, 64).BottomPosZ(4, 24))
ITEM(ArrayCtrl, devicesArray, AutoHideSb(true).HSizePosZ(4, 4).TopPosZ(4, 192))
ITEM(Button, ok, SetLabel(t_("OK")).RightPosZ(72, 64).BottomPosZ(4, 24))
END_LAYOUT
LAYOUT(RenamePackageLayout, 228, 100)