[DEV][REF] How to include your ROMs/kernels/themes in ROM Manager - Epic 4G Android Development

HOW TO GET YOUR ROM/KERNEL/THEME LISTED IN ROM MANAGER:
first, go to www.clockworkmod.com, and click the Developer Portal link on the top of the page.
Sign in with your google login, and give it permissions on your google account.
Once you have done that, sign into the portal, and click link Developer Settings, and edit your developer profile.
After that, you can submit ROMs to ROM Manager in one of 2 ways:
UPLOAD USING ROM MANAGER HOSTING:
Go here:
http://developer.clockworkmod.com/developer/upload
This is the easiest method, you just use the developer portal to upload your ROM, and specify which phone your ROM is for. You can upload screen shots, etc after your ROM is uploaded. This is easy, but there's one caveat: your ROMs will be hosted with ROM Manager hosting, and will only be seen by premium ROM Manager users on the weekends. If you want your ROMs to be seen by free ROM Manager users at all times, see the following section on how to use your own hosting and enable advanced ROM install options.
USING YOUR OWN HOSTING AND ADVANCED FEATURES OF ROM MANAGER:
OK, this is for developers that have their own hosting, and don't mind doing a little bit of extra work for a whole lot of benefit. The code examples here are taken from the following link:
ROM Manager and Third Party ROMs
First, you'll then want to get yourself listed in the list of developers in ROM Manager by updating your developer settings.
Make sure that the URL you provide for your ROM list above will not ever need to change. Now go to http://developer.clockworkmod.com/developer/settings and check the box for "Manual Manifest URL (Advanced Developers Only!)" and paste the link to your manifest.js file.
Now, you'll want to describe your list of ROMs that the user sees when they click you.
To do that, you need to create a JavaScript file that will live at the URL you provided. It should look something like this:
Code:
{
// The version of the manifest, so ROM Manager knows how to load it
"version": "1",
// The homepage for your ROM, if you have one.
"homepage": "http://www.cyanogenmod.com/",
// The donate link for yuor ROM, if you have one.
"donate": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3283920",
// Your list of ROMs
"roms":
[
{
// Display name of the rom
"name": "CyanogenMod 5.0.5",
// Display summary of the rom
"summary": "Stable",
// Device that this rom runs on
"device": "sholes",
// A screenshot to show off what the ROM looks like! (This is optional)
"screenshot": "http://www.droidaftermarket.com/koush//motorola/sholes/screenshot2.png",
// This is the download URL of your ROM.
// These URLs should have unique filenames per version!
// Ie, don't use a zip with the same name
// as that of a previous version with a new version.
// Otherwise ROM Manager will continue using the
// old cached zip on the SD card.
// This must be a direct download,
// and not a Mediafire type link.
"url": "http://www.droidaftermarket.com/koush/motorola/sholes/cyanogen_sholes-ota-eng.koush_5.0.5.zip"
},
// Antother, older ROM!
{
"name": "CyanogenMod 5.0.4",
"summary": "Stable",
"device": "sholes",
"url": "http://www.droidaftermarket.com/koush/motorola/sholes/cyanogen_sholes-ota-eng.koush_5.0.4.zip"
}
]
// Remember to delete all comment lines for JSON compliance, and the blank
// lines that some editors stick at the end of files. Finally, be sure to
// run your file through www.jsonlint.com to catch any whitespace or syntax errors.
}
And that's it! Your ROM is now listed in ROM Manager!
But, if you want to use the more advanced features of ROM Manager, such as download mirroring, and ROM customization, check out this manifest:
Code:
{
// The version of the manifest, so ROM Manager knows how to load it
"version": "1",
// The homepage for your ROM, if you have one.
"homepage": "http://www.cyanogenmod.com/",
// The donate link for yuor ROM, if you have one.
"donate": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3283920",
// Your list of ROMs
"roms":
[
{
// Display name of the rom
"name": "CyanogenMod 5.0.5",
// Display summary of the rom
"summary": "Stable",
// Device that this rom runs on
"device": "sholes",
// Product name of the mod. Product names should stay the same between versions of the mod.
"product": "CyanogenMod",
// The "modversion" is the value of ro.modversion in /system/build.prop. Your ROM should set this
// in that build.prop so that ROM Manager can figure out what ROM is currently running.
// This is optional however, you don't need this line here or in /system/build.prop
// if you don't want to use OTA updates.
// ROM Manager then uses this modversion to compare it to other modversions in the list of
// ROMs, and determine which is the newest version by using an alphabetical sort.
// For example, if the user is running "CyanogenMod-5.0.5-Droid" and there
// are roms with modversion "CyanogenMod-5.0.7-Droid" and "CyanogenMod-5.0.6-Droid",
// ROM Manager will upgrade the user to "CyanogenMod-5.0.7-Droid".
// Please note, that "CyanogenMod-5.1-Droid" would be considered a DOWNGRADE
// to "CyanogenMod-5.0.5-Droid" due to how it is sorted alphabetically.
// The proper version for such an upgrade would be: "CyanogenMod-5.1.0-Droid".
"modversion": "CyanogenMod-5.0.5-Droid",
// Some Screenshots that show off the ROM!
"screenshots":
[
"http://www.droidaftermarket.com/koush//motorola/sholes/screenshot.png",
"http://www.droidaftermarket.com/koush//motorola/sholes/screenshot2.png"
],
// This is a list of mirrors for your ROM. These URLs should have unique filenames per version!
// Ie, don't use a zip with the same name as that of a previous version with a new version.
// Otherwise ROM Manager will continue using the old cached zip on the SD card.
"urls":
[
"http://www.droidaftermarket.com/koush/motorola/sholes/cyanogen_sholes-ota-eng.koush_5.0.5.zip",
"http://koush.romraid.com/motorola/sholes/cyanogen_sholes-ota-eng.koush_5.0.5.zip",
"http://alldroid.org/roms/motorola/droid/koush/motorola/sholes/cyanogen_sholes-ota-eng.koush_5.0.5.zip"
],
// Optional addons (you don't need this if you dont have any)
"addons":
[
{
"name": "Google Apps",
"url": "http://goo-inside.me/gapps/gapps-passion-EPE54B-signed.zip"
},
{
"name": "Modules",
"urls":
[
"http://koush.romraid.com/motorola/sholes/bekit-modules.zip",
"http://alldroid.org/roms/motorola/droid/koush//motorola/sholes/bekit-modules.zip",
"http://www.droidaftermarket.com/koush//motorola/sholes/bekit-modules.zip"
]
}
]
},
// And here's another, older ROM!
{
"name": "CyanogenMod 5.0.4.2",
"summary": "Stable",
"device": "sholes",
"product": "CyanogenMod",
"incremental": "5042",
"modversion": "CyanogenMod-5.0.4.2-Droid",
"urls":
[
"http://koush.romraid.com/motorola/sholes/cyanogen_sholes-ota-eng.koush_5.0.4.2.zip",
"http://alldroid.org/roms/motorola/droid/koush/motorola/sholes/cyanogen_sholes-ota-eng.koush_5.0.4.2.zip",
"http://www.droidaftermarket.com/koush/motorola/sholes/cyanogen_sholes-ota-eng.koush_5.0.4.2.zip"
],
"addons":
[
{
"name": "Modules",
"urls":
[
"http://koush.romraid.com/motorola/sholes/bekit-modules.zip",
"http://alldroid.org/roms/motorola/droid/koush//motorola/sholes/bekit-modules.zip",
"http://www.droidaftermarket.com/koush//motorola/sholes/bekit-modules.zip"
]
}
],
"choices":
[
{
"name": "Kernel",
"options":
[
{
"name": "Overclocked",
"url": ""
},
{
name: "Stable",
"url": "http://clockworkmod.s3.amazonaws.com/motorola/sholes/kernel_nooverlock_1.0.2.zip"
}
]
}
]
}
]
// Remember to delete all comment lines for JSON compliance, and the blank
// lines that some editors stick at the end of files. Finally, be sure to
// run your file through www.jsonlint.com to catch any whitespace or syntax errors.
}
Note that you can do cool things that install a sequence of installation zip files. "choices" makes a user choose between several zips (use a URL of "" for no action). Only one of those choices will be installed. You can also have multiple choice selections. And "addons" lets the user choose any number of additional zips to install. You can view my manifest for a full sample.
Finally, to register your ROM for OTA updates, you need to edit your /system/build.prop in your ROM to include your Developer ID ro.modversion (as mentioned above) so ROM Manager can identify the version of your ROM. This is optional as well, but why not get OTA updates if it's just a couple lines of settings!
ro.rommanager.developerid=cyanogen
ro.modversion=CyanogenMod-5.0.5-Droid
And that's it! Once you upload that file, your ROM will now be available to other ROM Manager users! Good luck, and let me know if you encounter any bugs or need help!
ROM MANAGER WEB CONNECT FEATURE FOR PREMIUM USERS
The ROM Manager Web Connect feature is a way for Premium users to be able to flash a ROM directly to their phone, just by clicking a forum link. This link can be clicked even on a desktop PC, and it will download and prompt to install directly on the phone.
For users to use Web Connect:
In ROM Manager, hit the menu key, an click on Web Connect. Sign in to whatever google account you want Web Connect tied to. When you click a Web Connect link, simply sign in to your google account, and it will immediately download the ROM to the phone, and prompt to install it. The install can be cancelled if desired.
For developers to create a Web Connect link to your ROM:
Go here:
http://www.koushikdutta.com/2010/09/new-rom-manager-feature-web-connect.html
and put in your name/url, and create a bit.ly url for your ROM link.

I have been unable to get OTA updates to work with ROM Manager.
For example, I'll have a ROM with modversion of CleanGB-Test01 and when I put a ROM in my manifest with modeversion of CleanGB-Test02 it tells me I have no updates available. I've also tried modversions like CleanGB-1.0 and CleanGB-1.1, with no success.
There is no other documentation out on the net for ROM Manager aside from the guide which is copypasted into this thread.
Can anyone provide some insight?
Here is my manifest. I have "CleanGBTEST-1.0" in my build.prop right now.
http://xda.toadlife.net/ROMManager/manifests/rmmanifest.js

I'll ask koush about this and show him this thread, to see if I can get a solution for ya.
Sent from my Samsung Epic4G

Related

[Q]c# / development questions (background-img, checkbox)

Hi
i work on my first app, the info-part is finished. now i want add a simple question/answer-part. the first part with button for answers and questions works fine, but with the checkboxes i have some problems.
i want two or three solutions for one question, wich can be choose if i am click on one of these checkboxes. the answer is showing up in MessageBox and work so far, but the checkbox don't be cleared!?
What i have to do, to clear the checkbox. please help me! i don't know so much about the source-code c#, so every explanation will help me! Thanks!
xaml.cs
Code:
private void checkBox6_Checked(object sender, RoutedEventArgs e)
{
MessageBox.Show("Richtig!");
checkBox6.?? = checkBox6.??;
}
private void checkBox7_Checked(object sender, RoutedEventArgs e)
{
MessageBox.Show("Richtig!");
checkBox7.?? = checkBox7.??;
}
xaml
Code:
<TextBlock Height="73" HorizontalAlignment="Left" Margin="13,489,0,0" Name="DerTextblock13" VerticalAlignment="Top" TextWrapping="Wrap" Width="436" FontSize="22">Question?</TextBlock>
<CheckBox Content="YES" Height="72" HorizontalAlignment="Left" Margin="5,518,0,0" Name="checkBox6" VerticalAlignment="Top" Checked="checkBox6_Checked" />
<CheckBox Content="NO" Height="72" HorizontalAlignment="Right" Margin="0,518,18,0" Name="checkBox7" VerticalAlignment="Top" Checked="checkBox7_Checked" />
Just need to change the IsChecked property.
checkbox6.IsChecked = false;
hi
thanks for your comment.. i have read and search about "checkbox6.IsChecked = false;" and test it, but it doesn't work. i got this error in attached image.. checkbox6 is in content not available, but there is in content the checkbox6 (Name="checkbox6" and Checked="checkBox6_Checked")..
so i still don't know, why i get this error.. sorry for my stupid question..
Control names are case sensitive. It should be checkBox6.IsChecked = false;
oh man, what a stupid error.. thanks, case sensitive was the right keyword!
how can i change background-image for other xaml-site
hi
i don`t want open a new thread, so i ask here.
new problem! how can i change the background-image for an other xaml-site?
i searched a lot and find a lot, but nothing show me exactly how i can realize this.
in the source-code below, you see that i can change the background-image for example on mainpage.xaml.
Now i want integrate in my setting.xaml and settings.xaml.cs the same checkboxes to change the background-image on the mainpage.xaml.
What i have to do? Thanks for help!
xaml.cs
Code:
private void checkBox2_Checked(object sender, RoutedEventArgs e)
{
Uri uriR = new Uri("image/angler.png", UriKind.Relative);
BitmapImage imgSource = new BitmapImage(uriR);
this.imagechange.Source = imgSource;
checkBox1.IsChecked = false;
}
private void checkBox1_Checked(object sender, RoutedEventArgs e)
{
Uri uriR = new Uri("image/new-background.png", UriKind.Relative);
BitmapImage imgSource = new BitmapImage(uriR);
this.imagechange.Source = imgSource;
checkBox2.IsChecked = false;
}
xaml
Code:
<CheckBox Content="Hintergrund" Height="72" Margin="54,-33,0,0" Name="checkBox2" Checked="checkBox2_Checked" Width="163" FontSize="18" />
<CheckBox Content="Hintergrund 2" Height="72" Margin="0,-33,49,0" Name="checkBox1" Checked="checkBox1_Checked" Width="187" FontSize="18" />
Well done very good
Not sure if it's the best way, but one option would be to store the value you want to use in IsolatedStorageSettings. Then, when the page loads, it checks the value in ISS and applies that background (in its OnNavigatedTo event handler is probably best).
GoodDayToDie said:
Not sure if it's the best way, but one option would be to store the value you want to use in IsolatedStorageSettings. Then, when the page loads, it checks the value in ISS and applies that background (in its OnNavigatedTo event handler is probably best).
Click to expand...
Click to collapse
thanks, i have found a code to read an image in IsolatedStorage.. see below..
but i got a error.. i found a example-project, all works fine and i can read a image-file from IsolatedStorage. but in my app it doesn't work and i got these error..
also i had added the namespaces in xaml.cs
using System.IO.IsolatedStorage;
using System.IO;
xaml.cs
xaml-code
Code:
<Image x:Name="imagechange" Margin="30,62,38,204" Stretch="Fill" />
<Button Content="lesen" Height="72" HorizontalAlignment="Left" Margin="269,533,0,0" x:Name="lesen" VerticalAlignment="Top" Width="160" FontSize="19" Click="lesen_Click" />
vs 2010 are showing no faults in debugmodus! But if i click on button "lesen", i got the attached error. Please, where is the fault or what i have to do now?
does anyone has a idea about my described problem. sorry for my stupid questions, but that's all new for me and i want to learn it..
Do you have actual file "logo.jpg" on your ISF? Insert before opening:
if (myIsolatedStorage.FileExists("logo.jpg"))
{
... your code ...
sensboston said:
Do you have actual file "logo.jpg" on your ISF? Insert before opening:
if (myIsolatedStorage.FileExists("logo.jpg"))
{
... your code ...
Click to expand...
Click to collapse
hi
i had added your comment to source-code.. now, nothing happen, if i click on the button for reading the file from isolated storage..
how can i add the file "logo.jpg" to isolated storage?? i thought, i only have to put the file to my current project, like i did it with other images and then i can save or read the file to isolated storage.
I think this must be the fault. How can manage it? thanks..
Code:
private void lesen_Click(object sender, RoutedEventArgs e)
{
BitmapImage bi = new BitmapImage();
using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
if (myIsolatedStorage.FileExists("logo.jpg"))
using (IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile("logo.jpg", FileMode.Open, FileAccess.Read))
{
bi.SetSource(fileStream);
this.imagechange.Height = bi.PixelHeight;
this.imagechange.Width = bi.PixelWidth;
}
}
this.imagechange.Source = bi;
}
jayjojayson said:
i had added your code in comment to source-code.. now, nothing happen, if i click on the button for reading the file from isolated storage..
how can i add the file "logo.jpg" to isolated storage??
Click to expand...
Click to collapse
You may try to:
- download image from network and save to isf;
- copy from resource stream to isf;
- manually upload file to the app ISF using ISETool.exe or third-party tool.
jayjojayson said:
i thought, i only have to put the file to my current project, like i did it with other images and then i can save or read the file to isolated storage.
Click to expand...
Click to collapse
Wrong assumption.
P.S. Try this (btw, it's a first google link!): http://technodave.wordpress.com/201...ge-for-local-html-content-on-windows-phone-7/
hi
thanks a lot, it works... the first comment you have written are right..
i only have to save it first to isolated storage, before i can read the file.
thanks for your explanation to add files to ISF.. i have serach for that topic, but found nothing that describe how to added to ISF.. thanks for the link... i will read this in the evening...
now i have to find out, how i can change a image on a other site(xaml). than i can change for example in my setting.xaml the background in the mainpage.xaml
every day i learn new things, that's really exciting...
jayjojayson said:
now i have to find out, how i can change a image on a other site(xaml). than i can change for example in my setting.xaml the background in the mainpage.xaml
Click to expand...
Click to collapse
Sorry, I didn't read the whole thread before answering; seems like you are digging in the wrong direction. You don't need to use ISF (but it was a good practice for you), all you need is just a dynamical binding.
I'm too lazy to type code sample for you but (he-he!), our good friend google.com returned a good link for you http://www.eugenedotnet.com/2011/05...-property-in-silverlight-and-windows-phone-7/
P.S. Experience to use google should be "the must" in developer's experience.
entry Text in new line
Hi
i use google, my best friend, for a lot of my questions. but sometimes i don't know the right searchkeywords to do what i want to do (like image binding).
i have a new small problem. in my app i have 4 textboxes, that i use to write in some data. These 4 textboxes, i write to isolated storage in a textfile and let them summarized showing up in a textblock. This works fine.
Now, if i want write a new entry, these entry is written directly after the first entry.
example like is insert in textblock
Code:
▷Text - Text - Text - Text| ▷Text - Text - Text - Text|
But i want that the entry is written in a new line? How can i do this?
example like i want it
Code:
▷Text - Text - Text - Text|
▷Text - Text - Text - Text|
i know that i can create new lines with \n , \r\n and Environment.NewLine.
Code:
IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();
//create new file
using (StreamWriter writeFile = new StreamWriter(new IsolatedStorageFileStream("fangbuch.txt", FileMode.Create, FileAccess.Write, myIsolatedStorage)))
{
string someTextData = text.Text + "▷" + datum.Text + " - " + fisch.Text + " - " + größe.Text + "cm" + " - " + gewicht.Text + "Kg" + " | " + "\r\n";
writeFile.WriteLine(someTextData);
writeFile.Close();
}
if i use one of the elements to create a new line, like is showing in code above, the new (second) entry overwrite the first entry. What can i do now? thanks for your help.
You're using FileMode.Create, which will overwrite an existing file. You need to either use FileMode.OpenOrCreate and then seek to the end of the file, or you need to use FileMode.Append (this is the preferred approach).
Additionally, the StreamWriter.WriteFile function automatically appends a newline for you. There's no need to have them manually placed at the end of your text string.
http://msdn.microsoft.com/en-us/library/system.io.filemode.aspx

[APP][DEV][4.1+] - myHUB - Home for your ROM Content

{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Official myHUB Web site - http://myhub-web.com/ ​
myHUB is a custom HUB service that comes with Website and end-user application. myHUB is free to use* (see details below) and easy to configure, there is no need to have dedicated Hosting server and maintain it, you will only need any free file hosting servers like DevHost, DropBox and any other for your uploaded files, the rest will do for you myHUB Web. ​
Introduce you the new generation of myHUB.
What you can do on myHUB Web:
Add, edit, view sections for myHUB
Add, edit, view details to all Sections of myHUB
Monitor Comments for the Posts (currently only available for News type of section)
Add, edit, view myHUB moderators for cooperation with the Team
Features of myHUB application:
CardUI style of the app
Google Navigation drawer with pull to refresh
Push notifications (Using Google Cloud Messanging)
Immediate updates of the data in the app when you adding/removing/editing posts
Provide News (With images, links)
Comments in the News
Open links posted with the News inside the application, no need to open heavy browsers
Provide any Download sections you want (Skins, System MODs, Icons, Keyboards, Kernels)
Automatic installation of zip files (Automatic safe reboot to recovery)
Automatic checking of MD5
How to start using myHUB service:
For a limited time, the registration on myHUB will be moderated with invitation codes only
Fill this form - myHUB Registration
Wait for invitation code
Once you get it, go to the webite http://myhub-web.com/ and register
Follow the Developers F.A.Q on how you need to configure your system for myHUB, make changes
Download latest available myHUB apk from Download on the website
Create your sections and details for them and be happy with result
myHUB has been featured on XDA Developers Portal​
XDA:DevDB Information
[APP][DEV][4.1+] - myHUB - Home for your ROM Content, a App for the Android General
Contributors
mikrosmile
Version Information
Status: Stable
Current Stable Version: 1.0.7
Stable Release Date: 2013-07-27
Created 2013-10-14
Last Updated 2013-11-06
WIP
Official myHUB Sharing policy.
myHUB is Free to use for all Sense ROM Developers. (Fully featured, without any limitations) with following conditions
You never change app name, package name, developer name, etc.
You are not allowed to include donated app to your ROM (if you purchased it, it doesn't mean you are allowed to include it. The donation is from users, I don't ask anything from you as developer of the ROM )
You never change app icon
You need to fill form for all ROMs you have (Multi device for example) for Each Phone.
You never upload apk, any part of apk to Play Market.
You never ask for Donation pop-up dialog in the app.
You never change any String in the apk
You are to provide credits to this thread
To summarize there is one major rule - You are not allowed to add any changes, decompile, recompile apk by yourself.
If any of the following terms will not be followed, you will be banned to use myHUB for all your ROMs (you will have to remove myHUB from all your ROMs within 24 hours and there is no way to get permission back)
​
Your steps with Form and everything.
Download apk, configure it on your server or File hosting
Make it working, test everything by your own, not public release
When you are confident in using myHUB, want to release update/new ROM, fill Official Form.
After that your ROM will appear on the list who uses myHUB
Configuration guide you can find here on 4th post or click here
Official myHUB Form is located here
ROMs including myHUB:
HTC One
Elegancia™ ROM
RAYGLOBE ROM
42ONE ROM - The Aftermath
HTC One S
CharmanDroid ROM
HTC Sensation
KING SENSE ROM
HTC First
[MYST_UL] JmzMystJBSense 4.1.2 Sense 4+
HTC Pico (Explorer)
[Rom][ICS][4.0.3][Revolution Sense 5
HTC Desire HD
SVHD ROM
HTC Desire S
SVHD ROM
HTC Incredible S
SVHD ROM
HOW TO and ERRORS​
To avoid any errors in app make sure all your links are working through WEB. Images, zip or apk files are downloadable.
If news link cannot be opened, make sure you have "/" symbol at the end of the link. Example - http://yoursite.com/somenews/
For name of sections try to use English in most cases. Section name represents download path for files you have and Recovery does not recognize some languages
Automatic installation of zip files requires reboot file in system/bin/
If Automatic reboot doesnt work, please make sure your SuperSU works. It always requests access and without access wont reboot
​
WIP
Downloads and Changelog​
Download myHUB
(For full function of the app, it requires Configuration file)
You need to put apk file to /data/app directory
By downloading myHUB you are agree with the above terms
myHUB V1.0.7
Google Play Link
Changelog:
myHUB 1.0.7
Fixes for myHUB OTA issue
Updated layout
myHUB 1.0.6
Hot fixes
myHUB 1.0.5
Updated layout in myHUB, myHUB Files
ROM Devs - added custom download path
Fixed myHUB Files for some ROMs
Maybe something more i dont remember
myHUB 1.0.4
Fixed Kernel MD5 error
Fixed Automatic installation of OTA Updates
Added Remove update file in options after finish Downloading OTA updates
Added Automatic update of OTA when open myHUB OTA (Same option in Settings)
myHUB 1.0.3
Fixed MD5 error for OTA updates
myHUB 1.0.2
Hopefully fixed error for Sense Lite ROMs
Handled all Errors if configuration file is not present
myHUB 1.0.1
Fixed donation link
myHUB 1.0.0
Initial release
WIP
myHUB Configuration Guide. How to set-up myHUB​
For myHUB you don't need any specific Server settings or even Hosting server at all. You can use any file-hosting as DropBox, Google Drive, DevHost etc. But the only problem is you need to find direct URL to the files (xml file, apk file etc) see below how. ​
By using this Guide and setting up myHUB in your ROM, you are agree with above terms​
STEP 1. CONFIGURATION FILE, “MYHUB.TXT”.
All you need to get working the app is one txt file in your System folder. Create or download example file “myHUB.txt”
Fields in the file:
HTML:
main=http://mikrosense.com/sensehub/sections.xml
rom_upd=http://mikrosense.com/sensehub/update.xml
rom_name=DarkSense
rom_v=1.3.5
rom_dev=Jonny & mikrosmile
main – the link to the xml file on server which represents the Main menu in the app (See step 2);
rom_upd – the link to the xml file on server, which provides OTA update of your ROM (See step 4);
rom_name – Enter your ROM name;
rom_v – Enter the current version of your ROM;
rom_dev – Enter your name
You can setup either full working server or any File hosting (DropBox, Google Drive).
In case of using DropBox or Google Drive, you need to find the full link to the file first and insert it. For example, you upload a file to DropBox, start downloading it and in Downloads page (e.g. Chrome Browser), you will see full, direct link to the file. That one you need to use in configuration file.​
STEP 2. CONFIGURATION FILE ON SERVER (MAIN MENU IN APP)
The file from step 1 under “main”;
You can create your own or download example “sections.xml”
The fields in the file:
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<body>
<item headline = "News">
<text>Latest news about ROM Development</text>
<section>news</section>
<image-url>http://mikrosense.com/sensehub/ic_news3.png</image-url>
<file_ext>apk</file_ext>
<url>http://mikrosense.com/sensehub/news.xml</url>
<details1></details1>
<details2></details2>
<date></date>
</item>
<item headline = "Skins">
<section>mods</section>
<dl_path>Skins</dl_path>
<text>Download amazing Skins for your Device</text>
<image-url>http://mikrosense.com/sensehub/ic_skins.png</image-url>
<file_ext>apk</file_ext>
<url>http://mikrosense.com/sensehub/skins.xml</url>
<details1></details1>
<details2></details2>
<date></date>
</item>
<item headline = "Kernels">
<section>kernels</section>
<dl_path>Kernels</dl_path>
<text>Simply download and install latest Kernels just from the app</text>
<image-url>http://mikrosense.com/sensehub/ic_kernels.png</image-url>
<file_ext>apk</file_ext>
<url>http://mikrosense.com/sensehub/kernels.xml</url>
<details1></details1>
<details2></details2>
<date></date>
</item>
</body>
The sections starts with <item> and ends with </item>. Within this tags you will identify everything you need to get working.
<item headline = “News”> - Represents name of the Section. You can name it as you want
<section></section> - this is represents Type of the section. This is compulsory field to identify how the app will know what content you want to provide. For news, it will use special made Layout to present them in a special text only way, the same as kernels. For other things apart from News and Kernels use tag mods, which can be anything you want, Skins, Icons, System MODs, etc.
<dl_path></dl_path> - Now you can set your own Download path. Note that you can use only English letters as Recovery does not recognize another languages
<image-url></image-url> - this is link to Section icon in the Main menu
<file_ext></file_ext> - Enter the file extension you want to provide.
<url></url> - This is the link to Individual Sections which you need to configure as well (See step 3);
Available section types:
news
mods
kernels
Available types:
apk
zip
STEP 3. CONFIGURATION FILE FOR NEWS, MODS, KERNELS, ETC
Here we will create Individual sections files for all Sections in your Main menu.
Let’s start from News type; You can create or download example file “news.xml”
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<body>
<item headline = "Welcome!">
<text></text>
<news_link>http://forum.xda-developers.com/showthread.php?t=2230067</news_link>
<date>03.06.2013</date>
</item>
<item headline = "Another News">
<text>Your text for another news</text>
<news_link></news_link>
<date>06.03.2013</date>
</item>
</body>
<item headline = “Welcome!”> - This is Headline of your News
<text></text> - Here you can enter any text on any language you want to. It also support multi-line texting. Just type as you are comfortable.
<news_link></news_link> - If your news does not contain enough information or you want the users to open a page in web, you can enter it, and the app itself will open it in the myHUB Web application.
<date></date> - This is the date of posting News
MODs type
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<body>
<item headline = "Blue+Orange Skin">
<text>Made by 12Reza12</text>
<image-url>http://mikrosense.com/sensehub/skin.png</image-url>
<file_ext>apk</file_ext>
<url>http://mikrosense.com/sensehub/Serene.apk</url>
<md5>d209ecdb2bacc7ac4aef806568236a67</md5>
</item>
<item headline = "Serene Skin">
<text>HTC Skin from HTC Hub</text>
<image-url></image-url>
<file_ext>apk</file_ext>
<md5></md5>
</item>
</body>
<item headline = “Name”> - This represents Name of the File.
<text></text> - This is another text field, you can enter anything you want. Size, Version, etc;
<image-url><image-url> - The image preview for the Mod, Skin, Icon, etc;
<file_ext></file_ext> - File extension you want to provide.
<md5></md5> - MD5 file sum. Needs to compare MD5 after finish of downloading file
Available types:
apk
zip
Kernels type;
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<body>
<item headline = "Sultan Kernel">
<file_ext>zip</file_ext>
<url>http://mikrosense.com/store/kernels/kernel.zip</url>
<details1></details1>
<date></date>
<md5>8e92b519b5211d5769e3abe0719cf686</md5>
</item>
</body>
<item headline = “Name”> - Kernel name
<file_ext></file_ext> - File extension you want to provide
<url></url> - The direct link to the file on your Server or any File storage
<details1></details1> - Details of your Kernel. Supports multi-line
<date></date> - Date of upload the Item
<md5></md5> - MD5 file sum
STEP 4. CONFIGURATION FILE FOR OTA
You can create your own or download example file – “update.xml”
Field in the file:
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<body>
<item headline = "1.3.6">
<text>Here will be your Changelog of the ROM</text>
<url></url>
<md5></md5>
</item>
</body>
<item headline = “X.X.X”> - the version of your New ROM, this version should be higher than the one in myHUB.txt file. Therefore, it will compare these two versions. All the time you update your rom, do not forget to update myHUB.txt as well.
<text></text> - Here you can enter your changelog;
<url></url> - The direct link to the file on your Server or File storage;
<md5></md5> - MD5 file sum
Thank you very much ! Great creator !:good:
My screenshot:
mikrosmile said:
Downloads and Changelog​
Download myHUB
(For full function of the app, it requires Configuration file)
myHUB V1.0.1
Changelog:
myHUB 1.0.1
Fixed donation link
myHUB 1.0.0
Initial release
Click to expand...
Click to collapse
I found the error:
1. Open the news, can`t click on the jump to Web pages
2. Open Mods hint: no data
3. Kernel select download, prompt: file has been successfully removed
4. Open about ROM, "MyHUB" has stopped running
5. myHUB OTA Unable to open, open display:"MyHUB" has stopped running
kinghunki said:
I found the error:
1. Open the news, can`t click on the jump to Web pages
2. Open Mods hint: no data
3. Kernel select download, prompt: file has been successfully removed
4. Open about ROM, "MyHUB" has stopped running
5. myHUB OTA Unable to open, open display:"MyHUB" has stopped running
Click to expand...
Click to collapse
In configuration guide there are samples which I use now , make sure you follow everything as in the guide .
In few hours I will make checking of all config fields and it will prompt what you don't have
Sent from my Galaxy Nexus using Tapatalk 2
kinghunki said:
I found the error:
1. Open the news, can`t click on the jump to Web pages
2. Open Mods hint: no data
3. Kernel select download, prompt: file has been successfully removed
4. Open about ROM, "MyHUB" has stopped running
5. myHUB OTA Unable to open, open display:"MyHUB" has stopped running
Click to expand...
Click to collapse
send me your main.xml file for sections pls
mikrosmile said:
send me your main.xml file for sections pls
Click to expand...
Click to collapse
File has been sent to your Gmail!
Its very good to see this
But Sharing Policy... :|
We Cant Change anything :\
mygamers said:
Its very good to see this
But Sharing Policy... :|
We Cant Change anything :\
Click to expand...
Click to collapse
This features I give everyone without anything in return .. An as in respect I ask to not change anything that made by me
. that's all .. This could appear on a particular ROM for example , but now you have that is just great and powerful )
Sent from my Galaxy Nexus using Tapatalk 2
mikrosmile said:
This features I give everyone without anything in return .. An as in respect I ask to not change anything that made by me
. that's all .. This could appear on a particular ROM for example , but now you have that is just great and powerful )
Sent from my Galaxy Nexus using Tapatalk 2
Click to expand...
Click to collapse
I understand you
But I think Its Better you think About this
I think most of devs wants to do this
Permission to change app name And App Icon
mygamers said:
I understand you
But I think Its Better you think About this
I think most of devs wants to do this
Permission to change app name And App Icon
Click to expand...
Click to collapse
But you don't change any other app u use in your ROM or phone .. So this is just another app as many
Sent from my Galaxy Nexus using Tapatalk 2
I agree with mikrosmile's sharing policy!
kinghunki said:
I agree with mikrosmile's sharing policy!
Click to expand...
Click to collapse
thx.
I found errors.. your server is broken.. most of links are not opened through web.. so check them, than it should work or use DropBox
kinghunki said:
I found the error:
1. Open the news, can`t click on the jump to Web pages
2. Open Mods hint: no data
3. Kernel select download, prompt: file has been successfully removed
4. Open about ROM, "MyHUB" has stopped running
5. myHUB OTA Unable to open, open display:"MyHUB" has stopped running
Click to expand...
Click to collapse
for news - add - / at the end of link. for example http://yoursite.com/
All the problems have been solved, thanks mikrosmile!
myHUB 1.0.2
Hopefully fixed error for Sense Lite ROMs
Handled all Errors if configuration file is not present
mikrosmile said:
myHUB 1.0.2
Hopefully fixed error for Sense Lite ROMs
Handled all Errors if configuration file is not present
Click to expand...
Click to collapse
THX!
myHUB 1.0.3
Fixed MD5 error for OTA updates

[Automation Tool] [Java] [WIP] [Tutorials] Selenium [RHBROMS]

{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
SELENIUM by Ravi H Basawa​
This will be a Full Tutorial on Selenium Automation Tool
I will be updating this thread as I get time. SO NO ETA's.
Click to expand...
Click to collapse
If anybody wants to use / copy this tutorial to their Website or Blog please feel free to contact me at my personal email id: [email protected]
or at our official Website: www.rhbroms.com
Click to expand...
Click to collapse
Please Click on Thanks button if this tutorial by me had helped you for some extent !!!
Click to expand...
Click to collapse
Contents:
1. What is Selenium?
2. What all we need before we get it started?
3. How to setup Selenium for Eclipse?
4. Simple Selenium Test Script for google.co.in
5. Execution using Junit
5a. Execution using TestNG
6. DataDriven Testing using POI jar files
7. Issues or challenges with Selenium
Credits:
@Swaroop Bandagadde
My Other Works:
1. ROBOTIUM AUTOMATION TOOL
2. MONKEYRUNNER AUTOMATION TOOL
Selenium
1. What is Selenium?​
Selenium is an open source ( It's free !!!!) automation testing tool used for automating websites under any browser(not all).
Selenium supports the following browsers: IE, FireFox(Default), Chrome, Safari, Opera.
We write Selenium WebDriver Scripts in Eclipse. These scripts are written in Java language.
Things that you should be good at Java are: Constructors, Overriding, Overloading, Constructor Chaining, Interface, Inheritance, Abstract Class and UpCasting - DownCasting concepts are enough to write Selenium WebDriver Script.
What all we need before we get it started?
2. What all we need before we get it started?​
1. Windows 7 / 8
2. Java
3. Eclipse ((Juno or ADT) what I have worked on !! )
4. selenium-server-standalone-2.38.0
5. TestNG plugin for Eclipse
6. POI jar files
Downloads:
POI jar files: POI.zip
Selenium Jar file
How to setup Selenium for Eclipse?
3. How to setup Selenium for Eclipse?​
1. Open Eclipse goto Help -> Install new software.. -> give work with edittext field value as " TestNG - http://beust.com/eclipse " -> select all -> Next -> Finish
2. when you create a new test project inside its build path add selenium webdriver jar files. I will show it in next chapter.
4. Simple Selenium Test Script for Google website
4. Simple Selenium Test Script for Google website ​
1. Create new java project with name Selenium Test as shown below:
2. Now we have to add the selenium Jar file to the build path ( Goto project -> Properties -> Java Build path ) as shown in below screen shot and add the downloaded selenium-server-standalone-2.38.0.jar file. by clicking on the add external Jar's button. After this goto "Order and Export" tab click on "Select All" button and click "ok" button.
3.After completion of the above step now create a new java class ( Goto Project -> New -> Class) as shown in below ss and give name as TestWebDriver
4. After this now we will write a code to open Mozilla FireFox Browser and also open Google website inside it. The code for this is as below:
package com.rhb.selenium; // package name what I have given. It can differ with yours
import org.openqa.selenium.WebDriver; // Automatically imported by eclipse [This is for invoking the WebDriver class from selenium API]
import org.openqa.selenium.firefox.FirefoxDriver; // Automatically imported by eclipse [This is for invoking the FireFoxDriver class from selenium API]
public class TestWebDriver {
static WebDriver driver = null; // initialization
//the below method is made static to call this method inside our package without creating any instance for it.
public static void setup(){
driver = new FirefoxDriver(); // inbuilt method called from selenium class
driver.get("http://www.google.co.in"); // opens the website which is written inside the braces.
}
}
Click to expand...
Click to collapse
5. Now Lets create another java class called FunLib and inside this what we do is we will try to enter some text into the edit text box of the Google website and also we will click on the search button. the code for this is as below:
import org.openqa.selenium.By;
public class FunLib extends TestWebDriver {
public static void Search() throws InterruptedException {
driver.findElement(By.xpath("//div[@id='hplogo']")).click(); // clicks on the Google Logo
Thread.sleep(3000); // sleeps for 3000 milliseconds
driver.findElement(By.xpath("//input[@name='q']")).sendKeys("RHBROMS"); // type as RHBROMS in the edit text field
driver.findElement(By.xpath("//button[@id='gbqfb']")).click(); // Click on the Search button
Thread.sleep(3000); // again sleeps for 3000 milliseconds
driver.findElement(By.xpath("//li[1]/div/div/h3/a")).click(); // Click on the first link that is rhbroms.com
System.out.println("button got clicked"); // displays the msg on console.
}
}
Click to expand...
Click to collapse
6. Okay now you might be thinking as how to identify the edit text field as well as other elements.!! Its easy for that we need some Extensions for FireFox they are as below:
7. After installing these Extensions we now see how to use them to Identify the objects. Thing is we don't use all these but some, It again depends on which tool u want to use!!. which one is best for you.
8. First I will show you how to Identify the Google Logo by using Xpath. To do this open FireFox and open Google website and right click on Google Logo and select View XPath. After this you will see something like as shown below:
9. As you can see from the image as XPath is given as : id('hplogo') but thing is how to use this in our code.. Simple just add the tag type in this case it is <div> (The <div> tag defines a division or a section in an HTML document.) the changes what u have to do is as shown in below Screen Shot.
10. Now the same goes for other objects too..!! If you find any doubts on this feel free to ask me by either commenting here or by emailing me.
11. Now we will see how to execute our first Automation Script in the next chapter.
5. Execution using Junit and TestNG
5. Execution using Junit ​
1. First we will see how to execute our script via JUnit Suit.
2. Let us create a new JUnit test case (project -> New -> Junit test case) as shown in below screen shot:
3. Now let us give the Junit test case name as "Junit" as shown below in the screen shot. NOTE: Uncheck setup and teardown options.
4. Okay as we are done with creating new Junit test case just do the below editing:
package com.rhb.selenium; // package name
import junit.framework.TestCase; // auto import
import org.testng.annotations.Test; // auto import to give annotations that are necessary
public class Junit extends TestCase {
@Test
public void test1() throws Exception{
Main m = new Main(); // creating instance for Main class as "m"
m.setup(); // as setup is a method which is declared under Main class we can access it using access specifier "m"
m.Search(); // as Search is a method which is declared under Main class we can access it using access specifier "m"
}
}
Click to expand...
Click to collapse
5. To run the above JUnit Test right click on Junit.java file -> RunAs -> Junit Test
6. When you run the Junit test FireFox runs automatically in WebDriver mode as shown below and all the operations that we have specified in the Main class will be performed. Screen Shot of this is as shown below:
7. The below snap shows the test case is pass and the color is changed to Green. And also we got a msg at console as "button got clicked" what we have written in FunLib.java !!
8. The Result at FireFox WebDriver should be as shown below:
9. Okay now we will see how to execute using TestNG ( Easy one )
5a. Execution using TestNG
5a. Execution using TestNG​
1. Don't worry it is very easy compared to JUnit.
2. I hope you have installed the plugin of TestNG to your Eclipse.
3. Lets Create a new java class with name TestNGSuite1. Copy paste the below code after creation:
package com.rhb.selenium;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.testng.annotations.Test;
public class TestNGSuite1 {
@Test
public void testngtest() throws FileNotFoundException, InvalidFormatException, IOException, Exception {
Main m = new Main(); // instance of Main class
m.setup(); // call for setup method
m.Search(); // call for Search method
}
}
Click to expand...
Click to collapse
3. Right click on TestNGSuite1.java file -> TestNG -> Convert to TestNG as shown in below screen shot:
4. Now you will see as below Screen Shot, here TestNG is converting our java file to executable xml format.
5. Now click on Finish button and you will see a Testing.xml file as shown below:
6. Now Just right click on the xml file -> RunAs -> TestNG Suite as shown below:
7. Finally you will see the final result as below:
6. DataDriven Testing using POI jar files and TestNG XSLT + ANT
6. DataDriven Testing using POI jar files​
1.We go for data driven testing when we have some modules that need to be tested for multiple values. For example in a application which has a login page with username and password field we have to test these edit text boxes for multiple inputs, It can be a number or it also can be a string or both together.
2. Here I will take Google.com as example and show you how to extract data from a excel file and push the same to Google website.
3. First we will create an excel file with some data present in it to test our application. (An Excel file for testing our app is attached here)
4. To extract data from Excel we use “FileInputStream” Class by which we can create/delete and modify a file.
5. Now add POI.jar files to Java Build Path same as how we added Selenium Jar file.
6. After adding of POI jar files to Java Build Path you will see them added as shown below:
7. After this is done we will create a new java class and will give the name as "DataDriveTest" and extend it from "TestWebDriver" Class.
8. Now what we will do is we will open google.com enter "search" value as "RHBROMS" ( 1st value from the excel sheet ) click on the first link and then we will click on back button of the browser and then we will clear the search box and enter "xda developers" ( 2nd value from the excel sheet ) and click on first link that will be xda developers website.
9. The code for this is as written below with explanation.
package com.rhb.selenium;
// below package imports are for File I/O operations
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
// below packages are for excel sheet operations
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.openqa.selenium.By;
public class DataDriveTest extends TestWebDriver {
public static void test() throws Exception, IOException,
FileNotFoundException,InvalidFormatException {
String cellval1 = null; // set the current value of cellval1 as NULL
String cellval2 = null; // set the current value of cellval2 as NULL
FileInputStream fis= new FileInputStream("E:\\Test.xls");
Workbook wb = WorkbookFactory.create(fis); // creates object for workbook Test.xls
Sheet ws = wb.getSheet("Sheet1"); // opens Sheet1 from workbook Test.xls
int rc = ws.getLastRowNum(); // counts the number of rows which are used
for(int i=1; i<=rc; i++)
{
Row r = ws.getRow(i); // ponts to the i'th ROW
for (int j=0;j==0;j++){
{
Cell c = r.getCell(j); // points to the j'th Column
cellval1=c.getStringCellValue(); // gets the data from J'th cell
Cell c1 = r.getCell(j+1); // ponts to the J+1'th column
cellval2=c1.getStringCellValue(); // gets the data from J+1'th cell
driver.findElement(By.xpath("//div[@id='hplogo']")).click(); // Clicks on the google logo
driver.findElement(By.xpath("//input[@name='q']")).sendKeys(cellval1); // take the first value from first column and paste it at the search box
driver.findElement(By.xpath("//button[@id='gbqfb']")).click(); // clicks on the search button
Thread.sleep(3000); // sleeps for 3000milisecs
driver.findElement(By.xpath("//li[1]/div/div/h3/a")).click(); // clicks on first link
driver.navigate().back(); // clicks on the back button of the browser
driver.findElement(By.xpath("//input[@name='q']")).clear(); // clears the search box
driver.findElement(By.xpath("//input[@name='q']")).sendKeys(cellval2); // enters the second value from the excel sheet
driver.findElement(By.xpath("//button[@id='gbqfb']")).click(); // clicks on the search button again
Thread.sleep(3000);
driver.findElement(By.xpath("//li[1]/div/div/h3/a")).click(); // clicks on the first link
}
}
}
}
}
Click to expand...
Click to collapse
10. Now to execute this we have to do some editing at Main.java file as:
Code:
public class Main extends DataDriveTest {
public static void main(String args[]) throws FileNotFoundException, InvalidFormatException, IOException, Exception{
setup();
test();
}
11. And also in TestNGSuit1.java file as:
Code:
@Test
public void testngtest() throws FileNotFoundException, InvalidFormatException, IOException, Exception {
Main m = new Main();
m.setup();
m.test();
}
12. Now as usual convert the TestNGSuit1 file to TestNG and execute. :victory:
13. To see your TestNG results go to your eclipse workspace and open selenium project inside that you will find test-output folder. As shown in below Screen Shot:
14. For Generation of Graphical and more clean Results we use TestNG xslt with ANT. lets see how to do it in Next Chapter :laugh::laugh:
6. TestNG xslt with ANT ​
1. Download Ant from here: http://ant.apache.org/
2. Unzip it and rename the folder as ant.
3. Set ANT_HOME to environmental variables.( In windows 7 Right click on Computer -> properties -> “Advance system setting”
-> Choose Advanced Tab
-> Press Environment Variables Button
-> In the System Variables, click New Button
Give the Variable Name:ANT_HOME
Give the Value: E:\ant
Click OK )
as shown in Below Screen Shot.
4. Set ANT_HOME path,
go to path
Give the Value C:\ANT\bin
Click OK
5. To check ANT works properly or not
In the command prompt, type:
Code:
ant -version
you will see as below Screen Shot:
6. Now download testng-xslt from HERE
7. After this extract the downloaded zip file and go to testNG-xslt -> src -> main -> resources and copy the file testng-results.xsl and also copy this file from testNG-xslt -> lib that is saxon-8.7.jar and keep them at any folder for time being.
8. Now go to your project workspace and goto SeleniumTest -> test-output and paste testing-results.xsl that you copied.
9. and now goto eclipse and add saxon-8.7.jar to buildpath.
NOTE: the thing is you have to keep all your jar files in a same folder as I have kept at jar folder as shown below in my setup:
10. Now after doing all this create new xml file and call it as Build.xml
11. After creating this just copy paste the below code:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<project name="SeleniumTest" default="compile" basedir=".">
<path id="cp">
<pathelement path="bin" />
<fileset dir="jars"/>
</path>
<!-- for compiling -->
<target name="compile">
<javac classpathref="cp" srcdir="src" destdir="bin"/>
</target>
<!-- for running -->
<target name="run" depends="compile">
<java classpathref="cp" classname="org.testng.TestNG" args="testng.xml"/>
</target>
<!-- for report generation -->
<target name="report" depends="run">
<xslt in="./test-output/testng-results.xml" style="./test-output/testng-results.xsl" out="./test-output/testng-xslt.html">
<param expression="${basedir}/test-output/" name="testNgXslt.outputDir" />
<classpath refid="cp"/>
</xslt>
</target>
</project>
12. After this save the file.
13. Now right click on the project and do as below and select TestNG:
14. Now Run the Build.xml file. and your results will be stored at Index.html at test-output folder.
To be continued .. NEXT will be Maven with TestNG!!
Excellent..
This tutorial helps in starting up with Selenium with all the configuration.
Thanks
Swaroop Bandagadde said:
This tutorial helps in starting up with Selenium with all the configuration.
Click to expand...
Click to collapse
Thank you @Swaroop Bandagadde for helping me to write this Tutorial !!..:victory:

Fixing boot on custom kernels support that targets CyanogenMod

I get a lot of question that my custom kernel breaks support their own AOSP-based ROMs.
So I'm here to how to fix that from your side.
The culprit is CyanogenMod's /init.environ.rc.
CM has been messing around that in recent months.
Changing BOOTCLASSPATH does not break cross-compatibility between different AOSP forks, as long as they don't remove stuffs and just adds stuff.
The problem is SYSTEMSERVERCLASSPATH. If any new stuffs are added, Android RunTime will just abort itself and refuse to boot.
And recently, CyanogenMod added Cyanogen Platform API.
That additionally adds /system/framework/org.cyanogenmod.platform.jar to the /init.environ.rc's SYSTEMSERVERCLASSPATH.
That breaks other AOSP-forks that doesn't use Cyanogen Platform API.
So those ROM developers have 3 options.
They can..
1. Just go and use Cyanogen Platform API. Undoubtedly, this would be super hard if your ROM is not already based on CyanogenMod.
2. Ask custom kernel developers to release a separate version just for your ROM. Very unlikely.
3. Solution below.
Most elegant solution I ended up so far is patch your Android RunTime(android_art) to just bypass extra SYSTEMSERVERCLASSPATH.
Just go to art/runtime/native/dalvik_system_DexFile.cc.
Around line 380..
Code:
diff --git a/runtime/native/dalvik_system_DexFile.cc b/runtime/native/dalvik_system_DexFile.cc
index 3298b46..50aa44c 100644
--- a/runtime/native/dalvik_system_DexFile.cc
+++ b/runtime/native/dalvik_system_DexFile.cc
@@ -382,14 +382,6 @@ static jbyte IsDexOptNeededInternal(JNIEnv* env, const char* filename,
// Logging of reason for returning kDexoptNeeded or kPatchoatNeeded.
const bool kReasonLogging = true;
- if ((filename == nullptr) || !OS::FileExists(filename)) {
- LOG(ERROR) << "DexFile_isDexOptNeeded file '" << filename << "' does not exist";
- ScopedLocalRef<jclass> fnfe(env, env->FindClass("java/io/FileNotFoundException"));
- const char* message = (filename == nullptr) ? "<empty file name>" : filename;
- env->ThrowNew(fnfe.get(), message);
- return kUpToDate;
- }
-
// Always treat elements of the bootclasspath as up-to-date. The
// fact that code is running at all means that this should be true.
Runtime* runtime = Runtime::Current();
Remove those 7 lines and your ROM will be now compatible with custom kernels targeting CyanogenMod.
(Git style patch is added for 'git am' command. I'd appreciate it if you maintain Git repository, apply that Git patch for authorship.)
The only problem so far would be that this will break compatibility with Xposed, which replaces Android RunTime thus reverting this modification.

[ROM] AOSP 4.4.4 for grouper With DEXHUNTER.

AOSP 4.4.4 ROM baked with DEXHUNTER built in.
More info for dexhunter can be found here:
https://github.com/zyq8709/DexHunter
https://github.com/zyq8709/DexHunter/blob/master/slide.pptx
Credits to the DEXHUNTER team that put this together.
Usage:
If you want to unpack an app, you need to push the "dexname" file to "/data/" in the mobile before starting the app. The first line in "dexname" is the feature string (referring to "slide.pptx"). The second line is the data path of the target app (e.g. "/data/data/com.test.test/"). Its line ending should be in the style of Unix/Linux. You can observe the log using "logcat" to determine whether the unpacking procedure is finished. Once done, the generated "whole.dex" file is the wanted result which is located in the app's data directory.
Github Project Page Has more information.
String List:
360: /data/data/XXX/.jiagu/classes.dex
Ali: /data/data/XXX/files/libmobisecy1.zip
Baidu: /data/data/XXX/.1/classes.jar
Bangcle/Secneo: /data/data/XXX/.cache/classes.jar
Tencent: /data/app/XXX-1.apk (/data/app/XXX-2.apk)
ijiami: /data/data/XXX/cache/.
Notes:
This ROM is not rooted and has no modifications other than the DEXHUNTER integration(reason is some apps will detect root). If you have a custom recovery you can apply root easily via flash file. This ROM is built to analyze/dump dex data of packages that use heavy anti debugging, dex manipulation and dynamically loaded methods and classes . If you don't understand this, this ROM is probably not for you. Please deffer to the power point slides for more information.
This ROM has only been tested with Nexus Grouper. It May brick other devices.
Tested via Flashing with TeamWin recovery.
DOWNLOAD FILE:
https://www.dropbox.com/s/y7tixw8rfvx6b0v/DEXHUNTER-aosp_grouper-ota-eng.zip?dl=0
Download link does not work please fix
Could you please reupload?
Please reupload this. I really need this to analyze chinese spyware app

Categories

Resources