
倧èŠæš¡ãªãœãŒã¹ã³ãŒãããŒã¹C ++ãŸãã¯ããã©ãŒãã³ã¹èŠä»¶ã®ããã«ãJavaã§ã¯ã»ãšãã©äžå¯èœãªã¢ããªã±ãŒã·ã§ã³ãããªãããã§ãããã ãããŠããããã®ã¢ããªã±ãŒã·ã§ã³ã®1ã€ãã€ãŸã3DOã²ãŒã ã³ã³ãœãŒã«ãšãã¥ã¬ãŒã¿ãŒReal3DOPlayerãéçºããŠããããšãããããŸãã ã ç§ã®å Žåãã³ãŒãããŒã¹ãšããã©ãŒãã³ã¹ã®äž¡æ¹ã®èŠä»¶ã圹å²ãæãããŸããã ã³ãŒãã¯ãã§ããã¯ã¹ã®ãã¹ã¯ããããããžã§ã¯ãã«åºã¥ããŠãããçµã¿èŸŒã¿ããã»ããµãšã¯ç°ãªããäžèŠæš¡ã®ãã¹ã¯ãããã§ãé床ãäœäžããŸããã Gooogleã§ã®ããã®æ°ãèŠããŠããŸããããåããçµéšã¯éåžžã«è²Žéã§ãããããã§å ±æããããšæããŸãã
å£ã«é¡ãå©ããŠããåå¿è ã......

ç§ã¯çµéšè±å¯ãªããã°ã©ããŒïŒ15幎以äžïŒã§ããã«ãããããããNDKãåãäžãããšããã«ãåå¿è ã®ããã«æããŸããã
æåã®ãã³ãã Android StudioãWindowsã«ã€ã³ã¹ããŒã«ããã®ã§ãJNIåŒã³åºãã§æãåçŽãªãHelloãworldïŒãã®æŠèŠã説æããããšã«ããŸããã ãã¹ãŠãéåžžã«ç°¡åã§ãïŒ
JNIEXPORT jstring JNICALL Java_ru_arts_union_real3doplayer_NativeCore_stringFromJNI(JNIEnv* env, jclass clazz) { return env->NewStringUTF("Hello, World!"); }
ã³ã³ãã€ã«ãšã©ãŒã ãã ã³ã³ãã€ã«ãšã©ãŒã ã芧ã®ãšãããã³ãŒãã¯ã³ã³ãã€ã«ãããŸããã åé¡ãç©æ¥µçã«ã°ãŒã°ã«ã§èª¿ã¹ãŠã³ãŒããã³ã³ãã€ã«ããããšãããã1æ¥åŸã«ã³ãŒããåéã§ããŸããã§ããã ç¿æ¥ãLinuxãæèŒããã©ããããããæã¡ãããã2ã€ã®ã©ã€ã³ãèŠããç¶ããããšã«æ±ºããŸãããé©ããããšã«ããã¹ãŠãããã«éãŸããŸããã ãã©ãŒã©ã ãèªã¿å§ããŸããããWindowsã§ã³ãŒããã³ã³ãã€ã«ã§ããªãã®ã¯ãªãã§ããïŒ ããã¯å€æããŸãã-1ã€ã®C / CPPãã¡ã€ã«ã¯ãããžã§ã¯ããæ§ç¯ããã®ã«ååã§ã¯ãããŸãããå°ãªããšã2ããããŸãïŒ
ãã³ãã¯2çªç®ã§ãã ã¢ããªã±ãŒã·ã§ã³ãèµ·åãããšã¯ã©ãã·ã¥ããstringFromJNIã¡ãœãããèŠã€ãããªãã£ãããšãå ±åãããŸãã ã©ãããŠèŠã€ãããŸãããïŒïŒ ããã«ããããããšéã¢ã»ã³ãã©ãŒã«è¡šç€ºãããŠããŸãïŒ ãããã¯ã«ãªããªãã§ãã ãããç§ã¯ã³ãŒãå šäœãèŠãŠè¡ããŸããç¥ã«æè¬ããŸããããã»ã©å€ãã¯ãããŸããã é¢æ°ru_arts_union_real3doplayerã®ååã®ãã¬ãã£ãã¯ã¹ãèŠããšãäœããããã§ééã£ãŠããããšãããããŸã...çµå±ãç§ã®ããã±ãŒãžã®ååã¯æ¬¡ã®ããã«ãªããŸããã ãããã³ç°å¢èªäœãããã±ãŒãžã«ãã®ãããªååãèš±å¯ããŠããã®ã¯å¥åŠã§ãã ããã·ã¥ãåé€ããŠãããã±ãŒãžãšã¡ãœããã®ååãå€æŽããŸãã ãã£ãïŒ ã¡ãœããã衚瀺ããã2æ¥åŸã«ãHelloãworldïŒã
ãã³ãã¯3çªç®ã§ãã åé¡ã¯ãããŸãããå€ãã®ãã¡ã€ã«ãååšããååãä¿®æ£ãããŸãããææªã®äºæ ãé ããŠãããšèããŠå ã«é²ã¿ãŸãã Linux / Windowsã§ããŸããŸãªããã»ããµïŒARMãå«ãïŒã§ãã¹ãããããœãŒã¹ãè¿œå ããŸãã ãã¹ãŠãå®å šã«ã³ã³ãã€ã«ããããšã©ãŒã¯1ã€ããããŸããã èŠåãªãã§èµ·åæã«ã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ããŸãã ã³ãŒãã®çæ³ãç¶ããé·ãäºéã®ééç·ã芳å¯ããNEONãæ倧ã®åãä¿æããŠããããšãæãåºããŸããããã®ã³ãŒãã¯åŒã³åºãããããã ååšããã¿ã€ãããããŒã«real80ãåé€ããŸããã ãããŠãã³ãŒãã¯ãšã©ãŒãªãã§ã³ã³ãã€ã«ãããŸããïŒ ããŒã..ã¿ã³ããªã³ãããã¯ããããããç§ã¯ãã®ã³ãŒãã飲ã¿ããã§ã...èµ·åããŠããã³ãŽïŒ ã¯ã€ã«ããã¬ãŒããããã£ãŠããŠããã³ãŒãã¯æ©èœããã²ãŒã ãå§ãŸããŸãïŒ
ãŸããäžèŠåœããåã®ããã«èŠãããã®-æšæºCã©ã€ãã©ãªã泚æããŠãã ãããããããŒãžã§ã³ã«ååšããäžéšã®ã¡ãœãããå¥ã®ããŒãžã§ã³ã«ååšãããç®çã®ã¡ãœãããããŒãã§ããªãããã«ã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ããããšããããããŸãã ããã§åœ¹ç«ã€ã®ã¯ãéçãªã³ã¯ã䜿çšããSTLãæ¯æããåºç¯ãªãã¹ããŸãã¯æåŠã®ã¿ã§ãã ãã®ãããããšãã°ãæ°å€ãæååã«ããŸãã¯ãã®éã«å€æããæ©èœããªããããããªãå€æ°ã®ããã€ã¹ã§TinyXMLãã¯ã©ãã·ã¥ããŸãã
çµéšãå°ãªãã»ã©ãããå€ãã®ã³ãŒã³ãåŸãããŸã-粟ç¥çã«æºåããŠãã ããããããããã¹ãŠãèŠããŠããŸããã§ãã...
ããã©ãŒãã³ã¹ãè¿œæ±ããããŸãã¯äžåºŠæ¥èœãã...

ãšãã¥ã¬ãŒã¿ã®ããã©ãŒãã³ã¹ãåäžãããæ¹æ³ã¯ãäžéšã®å Žæã§ã¯i7ã«ãè² æ ããããŸãããïŒ éåžžã«ç°¡åã§ãèªåãã³ã³ãã¥ãŒãã£ã³ã°ãªãœãŒã¹ã«å¶éããå¿ èŠããããŸããããã¯ãAndroidã«ç§»æ€ããããšãããšãã«çºçããŸããã
ãã®ãããªå°é£ãªç¶æ³ã§ã¯ãã³ã³ãœãŒã«ã®ã°ã©ãã£ãã¯ããã»ããµã«ãã£ãŠäºåãŸãã¯éšåçã«åŠçããããã¯ã»ã«ã§ãã¯ã¹ãã£ãã£ãã·ã³ã°ãå®è£ ããå¿ èŠããããŸããã æ£æ¹åœ¢ããªãŽã³ã®äžè§åœ¢åå²ïŒ3DOã«ã¯éç·åœ¢ãã¯ã¹ãã£ãããã³ã°ããããŸãïŒ; éçã³ãŒãã®åã³ã³ãã€ã«ãé »ç¹ã«äœ¿çšãããã³ã³ãœãŒã«OSã®ã©ã€ãã©ãªã ã³ã³ãœãŒã«ã®ãµãã·ã¹ãã ã®ãšãã¥ã¬ãŒã·ã§ã³ã®äžŠååã ããã«ãããããŒããŠã§ã¢èŠä»¶ã3å以äžåæžã§ããŸããã å€å žçãªãã¯ããã¯ãã¢ã»ã³ããªã®æé©åããããã¡ã€ã©ãŒã«é·æé座ã£ãŠããããšãèæ ®ããã«ãä»ã«ã©ãã§æèšãç¯çŽã§ããŸããïŒ æããã«ãã»ãšãã©ã®ãŠãŒã¶ãŒã¯éãã«æ°ä»ããªãã§ãããã ãã®ãããããšãã°ããã¬ãŒã ãå¡ãã€ã¶ããšãã«ã24ãããã§ã¯ãªã16ãããã©ã¹ã¿ã§å€ããä¿åããŸããã
æé©åããã»ã¹èªäœã¯éåžžã«é¢çœããå¥ã®èšäºã«åºã¥ããŠããŸãããäžèšã®ãã¹ãŠã¯Androidèªäœã«ã¯é©çšãããŸããã ãããããã©ãããã©ãŒã èªäœãšãã®æ©èœããäœãåŸãããŸããïŒ ã»ãšãã©ã®ããã€ã¹ãã¢ãã€ã«ãã©ãããã©ãŒã ã®CPUãšGPUãå ±æããŠãããããæããã«ãã¯ã¹ãã£ã¡ã¢ãªã«çŽæ¥èšé²ããŸãã ããããæ®å¿µãªãããGraphicBufferãšããŠç¥ããããã®ã¡ã«ããºã ã¯ãäžè¬çãªäœ¿çšãç®çãšããŠããŸããïŒ äœããdlopenãä»ããŠååŸããããšã¯ã§ããŸããã ãã ãããã®ããã¯ã¯ã©ãã§ãæ©èœããªãå¯èœæ§ããããããããã¯ãªãã·ã§ã³ã§è¡ãå¿ èŠããããŸãã ããã§å®è£ ãèŠãããšãã§ããŸãïŒæ€çŽ¢ã§èŠã€ããã®ã¯ããªãå°é£ã§ãïŒïŒ android.googlesource.com/platform/external/deqp / + / deqp-dev / framework / platform / android / tcuAndroidInternals.cpp
ãããŠãAndroidã¯æ¬åœã«ç§ãã¡ã«äœãæäŸãããã®ã§ãããæ¬åœã«å¿ èŠã§ããïŒ ãã¡ãããã¢ããªã±ãŒã·ã§ã³ãµã€ã¯ã«ãå¶åŸ¡ããŠãã ããïŒ ããããæ¬åœã«å¿ èŠãªå Žåã¯ãNativeActivityã圹ç«ã¡ãŸãããŸãã¯ãã·ã³ãã«ã§äŸ¿å©ãªãã®å°ããªäŸïŒ github.com/tsaarni/android-native-egl-exampleã圹ç«ã¡ãŸãã éåžžã®ã¢ã¯ãã£ããã£ããã®æäœæ¹æ³ãäžæãªNativeActivityãšã¯ç°ãªãããã®ã¢ãããŒãã§ã¯ãJavaã決å®ãããšãã§ã¯ãªããå¿ èŠãªãšãã«ãŠã£ã³ããŠã³ã³ããã¹ãããã£ããã£ããŠå¥ã®ã¹ããªãŒã ã«æç»ã§ããŸãã ãããŠãããã§ç§ã¯èªåã§ãããç¥ããã«æ··ä¹±ããŠããã
å®éããã®ã¡ã«ããºã ã¯ãã¹ãŠã®ããŒãžã§ã³ã®Androidã§æ©èœããããã§ã¯ãããŸããïŒå°ãªããšãç§ã®ãã¹ãã§ã¯ãããŒãžã§ã³4.1-4.3ã¯ãµããŒãããŠããŸããïŒãããã¯ãGoogleã®çµ±èšã«ãããšãã¢ããªã±ãŒã·ã§ã³ã®ã¿ãŒã²ããããã€ã¹ã®çŽ40ïŒ ã§ãã 40ïŒ ã®å©çã ãããŠãããã«ã€ããŠã¯éåžžã«é ãããšãããããŸããéåžžããŠãŒã¶ãŒã¯ã¢ããªã±ãŒã·ã§ã³ã眮ããŠããããæ©èœããªãããšã確èªããããã«åãå£ããã¬ãã¥ãŒãæžããªãããã§ãã ã¢ããªã±ãŒã·ã§ã³ã®ééã£ããµã€ã¯ã«ãä¿®æ£ããã®ã¯æ¥œããããšã§ã¯ãããŸãããåäœããããã€ã¹ãšåäœããªãããã€ã¹ãå€æããããšã¯äžå¯èœã§ãããããããã©ã«ãã§ããé ããœãªã¥ãŒã·ã§ã³ãèšå®ã§ããŸãããããäºææ§ã®ãããã®ãèšå®ã§ããŸãããã«ã«ããå°ç¡ãã«ããããšã¯ã§ããŸããèšå®ã確èªããŸãããäœããç· ããŠã以åã®ããã«é ããªããŸãããïŒãããã«ãªãŒã¯ããŒãžã§ã³ãäœæããŠãããªãã·ã§ã³ãè¿œå ããæ¹ãè¯ãã§ãããç§ã®å Žåã¯é ãããŸãã
ãšã³ãã£ãã£ã®åæãŸãã¯2ã€ã®åšãã®æ··ä¹±...

Javaã«ã¯èšå€§ãªã©ã€ãã©ãªããããããå€ãã®å ŽåãSDKã«ã¯ãããšãã°ããã©ã³ããç»åã®æäœãªã©ããã€ãã£ãã³ãŒãã§è€è£œããããªãæ©èœãæ¢ã«ãããŸãã ãããŠãC ++ããJavaã¡ãœãããåŒã³åºããããšããèªç¶ãªæ¬²æ±ããããŸãã ç§ã¯ãã®ãããªæ¬²æ±ãæ±ããŠããã®ã§ããã€ãã£ãã³ãŒãããã®èŠæ±ã«å¿ããŠãã©ã³ãããã¯ã¹ãã£ã«ã¬ã³ããªã³ã°ãããã¹ãŠã®ããã€ã¹ãšå€æ°ã®ä»®æ³ããã€ã¹ããã¹ãããŸããã ãã¹ãŠãæ£åžžã«åäœããåã³æ··ä¹±ã«é¥ããŸãã-ãªãªãŒã¹ãè¡ããŸãã...ãŠãŒã¶ãŒã®çŽ1ïŒ ïŒãã§ã«ã¢ããªã±ãŒã·ã§ã³ãè³Œå ¥ããïŒã«å¯ŸããŠãããã°ã©ã ã¯ã¯ã©ãã·ã¥ãå§ããŸããã æ§ããã«èšã£ãŠããéåžžã«æªãããã¬ãã£ããªã¬ãã¥ãŒããããŠç¶æ³ãã®ãã®-人ã¯æ¯æãããããããããã -ããã¯åœŒã«ãšã£ãŠã¯ããŸããããŸããã çç±ãäœã§ããããèšãã®ã¯é£ããã§ããç§ã¯ããã€ãã®ã¡ãŒã«ãŒãå€æŽããã軞ãŸãã¯ä»ã®ãã®ã䜿çšããŠãããšæããŸãã ãã¡ãããèªåããééããæé€ããããã§ã¯ãããŸãããããã®ãããªã¬ããŒããèŠãŠãç§ã¯ããã匷ãçããŸãïŒãã¡ããããã®æ¹æ³ã¯çœé»ã§ããïŒïŒ
java.lang.NoSuchMethodError: no method with name='loadConfig' signature='(Ljava/lang/String;)Ljava/lang/String;' in class Lru/vastness/altmer/real3doplayer/MainActivity; at dalvik.system.NativeStart.run(Native Method)
ãã®ãœãªã¥ãŒã·ã§ã³ãéåžžã«è¿ éã«åãåããå¥ã®ãœãªã¥ãŒã·ã§ã³ã«çœ®ãæããå¿ èŠããããŸããã å°ãè¡ãããããŸããã ãœãªã¥ãŒã·ã§ã³èªäœã¯éåžžã«åªããŠããŸãïŒ1ïŒ ã®éäºææ§ã¯èš±å®¹ã§ããŸãããééããã ãã§è³Œå ¥ããŸããïŒããã¢ããªã±ãŒã·ã§ã³ãèµ·åãããŸã§ã¯ãå€ãã®ã³ããŒãæ¢ã«è²©å£²ãããŠããå Žåã«ã®ã¿ãããã«å¯ŸããŠåŒ·ãã¢ããã€ã¹ããŸãã
æŠåšåº«ãæŽæ°ãããããã©ãã«ã«å·»ã蟌ãŸãã3 ...

ã·ã¹ãã ãåé 眮ããSDKãäžäœã«ã€ã³ã¹ããŒã«ãããããtargetSdkVersionãå€æŽãããŸããã è¿·æããããŸããã SDãã©ã€ãã衚瀺ãããªããªããŸãããããã¯ãã¢ã¯ã»ã¹æš©ã䜿çšããGoogleã®å¥åŠãªè©æ¬ºãåå ã§ãã åæã«ãå€ãããŒãžã§ã³ã®SDKã§APKãããŠã³ããŒãããããšãã§ããŸããïŒ ç¡çã§ãïŒ ããããç§ã¯ããããªææã§éããŸãããåé¡ã¯èš±å¯ãèŠæ±ããããšã§è§£æ±ºããŸããã ãããŠãåé¡ãããã»ã©ç°¡åã«è§£æ±ºãããªãå Žåã¯ã©ããªããŸããïŒ æ¬¡ã«äœãããŸããïŒ è³ªåã¯ãšãŠãèå³æ·±ãã§ã...
æŽæ°ã«äŒŽãæãäžå¿«ãªããšã¯ãä»æ¥ãŸã§åãé€ããŸãããããã€ãã£ãã©ã€ãã©ãªã®å€æŽã§APKãæŽæ°ããç°å¢ã®äžæ¬æã§ããLinuxããã³Windowsã§åé¡ãçºçããŸãã ããã¯é¢åãªã®ã§ãæ°ããåéãããææ°ã®APKã®ãããã°äžã®ããã€ã¹ã§ã次ã®æäœãè¡ãå¿ èŠããããŸãïŒAndroid Studio 2.1.1ïŒïŒ
1.ãããžã§ã¯ããåæ§ç¯ããŸãã
2.ãããžã§ã¯ããå®è¡ããŸãïŒåæã«ãæåã®æé ãã¹ããããããšåã¢ã»ã³ãã«ããããåæ§ç¯ãããŸãïŒã
3.ã¢ããªã±ãŒã·ã§ã³ãåæ¢ããŸãã
4. APKããã«ãããŸãã
5.ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŸãã
ãŸããåæ§ç¯ãè¡ã£ãå Žåãã¢ããªã±ãŒã·ã§ã³ãèµ·åãããšãããã€ã¹äžã§æ°ããåéãããAPKãåãåããšæããŸãããïŒ ããã«ã¯ãããŸããã§ããã確èªããŠãã ããã代ããã«ããããã¢ãããŠã£ã³ããŠãŸãã¯ãã°ã®ã¡ãã»ãŒãžã«å€æŽã®ããŒãžã§ã³ãèšèŒããŠãã ããã ããããªããšãäœæ¥ã³ãŒãããã§ãã¯ããã®ã«å€ãã®æéã倱ãå±éºããããŸãã ãããŠã2åç®ãŸãã¯3åç®ã®æã¡äžãããããŸãããããšãæåŸ ããªãã§ãã ããã
åæ§ã®åé¡ãæ±ããŠãã人ã®ããã«ãæéãè£ãããã«ãããããããŠããªããã°ããã€ãã£ãã³ãŒãã®äžŠåã¢ã»ã³ããªã®ããã«ãžã§ãNãæå®ããããšããå§ãããŸãã
äžçªäžã®è¡...

äžè¬ã«ãç§ã¯ãã®ãã©ãããã©ãŒã ã®éçºããŒã«ã«æ²¡é ããŠããããã®ãããªæ¹Ÿæ²ã¯10幎éèŠãŠããŸããããæ¯èŒãããã®ããããŸãã ãã¡ãããJavaãåªå äºé ã§ããããšã¯ç解ããŠããŸãããããã§ã...å€æ°ã§ãŒãã«ã·ãããããšãã«ãã€ã³ãã«ã³ã³ãã€ã©ã§äœå¹Žãåã«èŠã€ãããã°ã ãããããã«ééããå¯èœæ§ããããŸãã
if(shift)return x>>shift; return x;
ããã§ããGoogleã«æ¬æãè¡šãã䟡å€ã¯ãããŸããAndroidã®ãã€ãã£ãéçºè ã®çµŠäžãé«ããªãããã«ã圌ãã¯ãã¹ãŠãè¡ããŸããã
ç§ã«ãšã£ãŠãC ++éçºè ãšããŠãAndroidçšã®ã¢ããªã±ãŒã·ã§ã³ã®ç¶æ³ã¯é説çã«èŠããŸãããäžæ¹ã§å¿ èŠãªã¡ã«ããºã ããããŸããããã©ãããã©ãŒã ã®åé¡ã®åèšéã¯ãæ¹åãè©Šã¿ããšããè©å€ã倱ããéçºããããéžæããå¿ èŠããããšããããšã§ãã¢ããªã±ãŒã·ã§ã³ã ãã®ãããªéžæã®åã«ç§ã眮ãããã©ãããã©ãŒã ã¯äžã€ããããŸããã
æå³ããã«ããã®ãã©ãããã©ãŒã ã§äœãæ¹åããªãæ¹ãè¯ããããããªããšèããŠããèªåããã£ããããŸããããã§ãªããã°ãäœãèµ·ãããã¯é¢ä¿ãããŸãã...
PSã èããªãã§ãã ãã-ãšãã¥ã¬ãŒã¿ãŒã¯éçºãç¶ããŸããããã¯ã¡ããã©æ²žéš°ããŸãã