рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛
рдпрд╣
OpenFL рдХреЗ рд▓рд┐рдП рдореВрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдиреЗ рдкрд░ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдЕрдВрддрд┐рдо, рддреАрд╕рд░реЗ рднрд╛рдЧ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИред
рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ рдХрд┐ рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдЗрд╕ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдмрд╛рдж рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗ, рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдЖрдИрдУрдПрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рдХрд░рдирд╛ рдХреБрдЫ рдЖрд╕рд╛рди рд╣реИред
рдЬрд╛рд╡рд╛, рд╣реИрдХреНрд╕ рдФрд░ рд╕рдм рдХреБрдЫ, рд╕рдм рдХреБрдЫ, рд╕рдм рдХреБрдЫ!
рдЕрдкрдиреЗ рдЕрдЧрд▓реЗ рдЧреЗрдо рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдПрдореНрдмреЗрдбреЗрдб HTML рдкреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдорджрдж рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд╛рдпрд╛:
NMEWebview ред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рд╣реЗрдХреНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЬрд╛рд╡рд╛ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдЬрд╛рд╡рд╛ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдБ:
cd project mkdir android mkdir android/testextension
рдФрд░ рдлрд╝рд╛рдЗрд▓
TestExtension.java package testextension; class TestExtension { public static String doSomething(String in){ return in+"\n"+in; } }
testextension.TestExtension.doSomething (рд╕реНрдЯреНрд░рд┐рдВрдЧ): рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣рдорд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдп рд╣реИ рдФрд░ рд╣рдореЗрдВ рдЗрд╕реЗ haxe рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рд╣рдо рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП cpp.Lib.load рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП openfl.utils.JNI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдХреИрд╕реЗ
TestExtension.hx рдореЗрдВ haxe
рд▓рд┐рдкрдЯреЗ :
#if android
openfl.utils.JNI.createStaticMethod cpp.Lib.load рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд╣рд▓реЗ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдФрд░ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рддреАрд╕рд░рд╛ рддрд░реНрдХ, рд╕рдмрд╕реЗ рдХрдард┐рди рд╣рд┐рд╕реНрд╕рд╛ рд╡рд┐рдзрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реИред
рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ () рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд░реВрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдХрд┐ рдХреЛрд╖реНрдардХ рдХреЗ рдЕрдВрджрд░ рддрд░реНрдХ рд╣реИрдВ, рдФрд░ рдпрд╣ рдХрд┐ рдмрд╛рд╣рд░ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИред
(Ljava / lang / String;) Ljava / lang / рд╕реНрдЯреНрд░рд┐рдВрдЧ; рдорд┐рд▓рд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧ-> рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИрдХреНрд╕ рдореЗрдВред
рдЖрдк
рдпрд╣рд╛рдВ рдЬреЗрдПрдирдЖрдИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде) рдореЗрдВ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкрджрдирд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдкрд╣рд▓рд╛ рд▓рд┐рдВрдХ рд╣реИ рдЬреЛ рдореБрдЭреЗ Google рдкрд░ рдорд┐рд▓рд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХ рд╕рд░рд▓ рдкреНрд░рд▓реЗрдЦрди рд╣реИред
рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рдЬрд╛рд╡рд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╕рдВрдХрд▓рди рдЖрд╡реЗрджрди рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рджреМрд░рд╛рди рд╣реЛрдЧрд╛ рдФрд░ рд╣рдореЗрдВ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдЗрди рдХреЛ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ
редxml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
<java path="project/android" if="android" />
рдЙрд╕рдХреЗ рдмрд╛рдж, TestApp рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ TestExtension.doSomething () рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдХреЛрдб рдХреЛ
GitHub 'e рдкрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП
android / Tweet.cpp рдлрд╝рд╛рдЗрд▓ (рд▓реЗрдХрд┐рди рдЯреНрд╡реАрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛) рдЬреЛрдбрд╝рд╛ рдФрд░ рдкреВрд░реЗ рдХреЛрдб рдореЗрдВ #if ios рдЬреЛрдбрд╝ рджрд┐рдпрд╛ред
рдЕрдЧрд▓реА рдмрд╛рдд рдЬреЛ рдореИрдВ рдЬрд╛рд╡рд╛ / рд╣реЗрдХреНрд╕ рдмрдВрдбрд▓ рдореЗрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╡рд╣ рд╕реАрдЦрдирд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ HaxeObject рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рдФрд░ рд╡рд╣рд╛рдВ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ openfl.utils.JNI рдереЛрдбрд╝рд╛ рд╕реАрдорд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо JNI рд╕реЗ haxe рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ C ++ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред
рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ
рдпрд╣ рд▓реЙрд░реЗрдВрдЯ рдмреЗрдбреБрдмрд░реНрдЧ рд╕реЗ рджреЗрд╢реА рд╡рд┐рд╕реНрддрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдиреЗ рдкрд░ рд▓реЗрдЦреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рд╕рдорд╛рдкрди рдХрд░рддрд╛ рд╣реИред рдЪрдХреНрд░ рдЕрдкрдиреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░ рдХрд╛рдо рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдиреНрдпреВрдирддрдо рдиреНрдпреВрдирддрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдЬрдм рдореИрдВрдиреЗ рдЕрдкрдиреЗ
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕реЗрдЯ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓реЗрдЦ рдирд╣реАрдВ рдереЗ рдФрд░ рдореБрдЭреЗ рд╡рд┐рднрд┐рдиреНрди рдмреНрд▓реЙрдЧреЛрдВ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рддрд▓рд╛рд╢рдиреА рдереАред
рдпрджрд┐ рдЖрдк рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдирд╡реАрдирддрдо рдПрд╕рдбреАрдХреЗ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ
рдпрд╣рд╛рдВ рдЖрдк рдПрд╕рдбреАрдХреЗ рдХреЗ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдПрдХ рд▓реЗрдЦ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред