From 6947240d978bdd552cf798d6e40e4f4e12588b88 Mon Sep 17 00:00:00 2001 From: Aaron Culliney Date: Sun, 15 Feb 2015 09:52:27 -0800 Subject: [PATCH] Skeleton project for Android NDK --- .gitignore | 6 ++ Android/.classpath | 9 ++ Android/AndroidManifest.xml | 25 ++++++ Android/build.xml | 83 ++++++++++++++++++ Android/jni/Android.mk | 15 ++++ Android/jni/jnihooks.c | 42 +++++++++ Android/jni/run.sh | 5 ++ Android/local.properties | 10 +++ Android/project.properties | 14 +++ Android/res/drawable-hdpi/ic_launcher.png | Bin 0 -> 1842 bytes Android/res/drawable-ldpi/ic_launcher.png | Bin 0 -> 840 bytes Android/res/drawable-mdpi/ic_launcher.png | Bin 0 -> 1135 bytes Android/res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 2578 bytes Android/res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 3944 bytes Android/res/drawable-xxxhdpi/ic_launcher.png | Bin 0 -> 5557 bytes Android/res/layout/main.xml | 18 ++++ Android/res/layout/thread_main.xml | 14 +++ Android/res/values/strings.xml | 7 ++ Android/run.sh | 6 ++ .../org/deadc0de/apple2/Apple2Activity.java | 48 ++++++++++ 20 files changed, 302 insertions(+) create mode 100644 Android/.classpath create mode 100644 Android/AndroidManifest.xml create mode 100644 Android/build.xml create mode 100644 Android/jni/Android.mk create mode 100644 Android/jni/jnihooks.c create mode 100755 Android/jni/run.sh create mode 100644 Android/local.properties create mode 100644 Android/project.properties create mode 100644 Android/res/drawable-hdpi/ic_launcher.png create mode 100644 Android/res/drawable-ldpi/ic_launcher.png create mode 100644 Android/res/drawable-mdpi/ic_launcher.png create mode 100644 Android/res/drawable-xhdpi/ic_launcher.png create mode 100644 Android/res/drawable-xxhdpi/ic_launcher.png create mode 100644 Android/res/drawable-xxxhdpi/ic_launcher.png create mode 100644 Android/res/layout/main.xml create mode 100644 Android/res/layout/thread_main.xml create mode 100644 Android/res/values/strings.xml create mode 100755 Android/run.sh create mode 100644 Android/src/org/deadc0de/apple2/Apple2Activity.java diff --git a/.gitignore b/.gitignore index 2e284b82..3bfe2333 100644 --- a/.gitignore +++ b/.gitignore @@ -64,3 +64,9 @@ man6 xcuserdata .DS_Store xcshareddata + +# Android builds +Android/bin +Android/gen +Android/libs + diff --git a/Android/.classpath b/Android/.classpath new file mode 100644 index 00000000..7bc01d9a --- /dev/null +++ b/Android/.classpath @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Android/AndroidManifest.xml b/Android/AndroidManifest.xml new file mode 100644 index 00000000..7c862696 --- /dev/null +++ b/Android/AndroidManifest.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + diff --git a/Android/build.xml b/Android/build.xml new file mode 100644 index 00000000..4c672b9a --- /dev/null +++ b/Android/build.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Android/jni/Android.mk b/Android/jni/Android.mk new file mode 100644 index 00000000..23a25b7d --- /dev/null +++ b/Android/jni/Android.mk @@ -0,0 +1,15 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE := apple2ix +LOCAL_SRC_FILES := jnihooks.c + +LOCAL_LDLIBS := -llog -landroid + +# Build a shared library and let Java/Dalvik drive +include $(BUILD_SHARED_LIBRARY) + +# --OR-- Build an executable so native can drive this show +#include $(BUILD_EXECUTABLE) + diff --git a/Android/jni/jnihooks.c b/Android/jni/jnihooks.c new file mode 100644 index 00000000..4d88d68c --- /dev/null +++ b/Android/jni/jnihooks.c @@ -0,0 +1,42 @@ +/* + * Apple // emulator for *nix + * + * This software package is subject to the GNU General Public License + * version 2 or later (your choice) as published by the Free Software + * Foundation. + * + * THERE ARE NO WARRANTIES WHATSOEVER. + * + */ + +#include +#include + +#define LOG(fmt, ...) __android_log_print(ANDROID_LOG_ERROR, "apple2ix", fmt, __VA_ARGS__) + +#define LAUNCH_WITHOUT_JAVA 0 +#if LAUNCH_WITHOUT_JAVA + +int main(int argc, char **argv) { + for (unsigned int i=0; i<10; i++) { + LOG("counter : %u", i); + sleep(1); + } + LOG("%s", "finished..."); +} + +#else + +void Java_org_deadc0de_apple2_Apple2Activity_nativeOnCreate(JNIEnv *env, jobject obj) { + LOG("%s", "native onCreate..."); +} + +void Java_org_deadc0de_apple2_Apple2Activity_nativeOnResume(JNIEnv *env, jobject obj) { + LOG("%s", "native onResume..."); +} + +void Java_org_deadc0de_apple2_Apple2Activity_nativeOnPause(JNIEnv *env, jobject obj) { + LOG("%s", "native onPause..."); +} + +#endif diff --git a/Android/jni/run.sh b/Android/jni/run.sh new file mode 100755 index 00000000..3dff6b96 --- /dev/null +++ b/Android/jni/run.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +ndk-build NDK_DEBUG=1 && \ + ant -f ../build.xml debug install && \ + adb shell am start -a android.intent.action.MAIN -n org.deadc0de.apple2/.Apple2Activity diff --git a/Android/local.properties b/Android/local.properties new file mode 100644 index 00000000..abeb5205 --- /dev/null +++ b/Android/local.properties @@ -0,0 +1,10 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. + +# location of the SDK. This is only used by Ant +# For customization when using a Version Control System, please read the +# header note. +sdk.dir=/home/asc/Android/Sdk diff --git a/Android/project.properties b/Android/project.properties new file mode 100644 index 00000000..ce39f2d0 --- /dev/null +++ b/Android/project.properties @@ -0,0 +1,14 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system edit +# "ant.properties", and override values to adapt the script to your +# project structure. +# +# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): +#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt + +# Project target. +target=android-18 diff --git a/Android/res/drawable-hdpi/ic_launcher.png b/Android/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e4363d26c2293eef58f670c76e64be96b57750db GIT binary patch literal 1842 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 OtcXEltt&71QvL%(R{0tL literal 0 HcmV?d00001 diff --git a/Android/res/drawable-xxhdpi/ic_launcher.png b/Android/res/drawable-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5900a23156be2458a3e841ad4579127502ddd4ab GIT binary patch literal 3944 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 literal 0 HcmV?d00001 diff --git a/Android/res/drawable-xxxhdpi/ic_launcher.png b/Android/res/drawable-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e7efff83886271489ac12c8114e3c20b57a63d54 GIT binary patch literal 5557 zcmb_g`#)3vA16X`Z!R%%EhGuKHTPUY^f4j#Tk&ye?ssxaqp1}_Zc`RwE+O|=8ZC{a zVMffgk;`Ic;d?&+!}mPS<(ISf9`D!d`FuT}&-2LM&VrX)oSTJ(h1bgR`Yqu3;lGRP z1aK$!GVOuKsr!~L5iBes3jbZKR=4E0SXhMbT3t7GjGf*ny%RG%^et=5WkKaDCq)Nw zdpY3f7*mx0k(2L)RjQGRv`mud=6l1CyC!N}U`o7d_mD@zJ^B3FE^2-4S3j;a>Hq(^ zkn$68kf*Ck_B?~TqK`bSEnT)^<^W=UaJUqAv_B_kHWuB*i&f*nZfN|8Jxcs|`DK3Y1Sik-j+TKMDMUOi`cVpRhlIApRp-_#Y zFY!Im?uBI|3JDdi^*=VE!@|P)5*f&mfIJt>hg1lGN@s#`S8hK);4a;l`$P6i8wlbVLd-5+UN8~q)8_^N-9FckpcUNnku=Y$x4zVTau<7l( znY%5^iqD?NaYIlleAjh1{|0i<7w9h|_7bs`bCankMOO?FL2)kd7yC3mJ|5P-4aS{H zleR)C!uK!27w()r6a93(aH#nU4RT`6Sl}o2k>C6BO*R4z2JRC(NIE-S$E(O=ni14I z^;Qv1+He|wNA46R(2A>ta|RO)JQYDZjBaVJuzN=GoTzZtlA46;8k73wZY4NQg1vkFBsV*O- zC^ijy8Pk4Q*N^*-YN5ASeA!)>ANO@Y?B4CHk5H3qkqbHn@~1ZENa9aWifR>9Di!0| z=cJr(Qu%?_y~#vShME&=B{y3*Yl&1Mkr)#blWEc)Mb<%Rm+*>k)X3lNVPo5YT<$o{ z91%mUb~e=3#xj0TcS|G$s=s?+=(|*+d6f))C%&g_BmjUD@|DJyvfHUDo2~66Eb3#kfwKA zrlh$Xp-@n!nfYuXYbn;-hxEmec44M!wJ0Qw#-$W{_@obiB=yWbiox-xys|}mW=;VUSD$DB4{2%#!u1LdWRh~^5PAO+x zx_&DWby;K(LbzZm6@2oOh#y8=oH=($BwP8~!iE(*y4R#rgdQP~@=G*EKuZyRX+bC2 zJw^vCE195P^d&%p7==}{f!)(JHYf-Bmud2VqC2Xt0ehX+so+M**(>CRR77sP7BaxWAf)54mv;_~yCjmsWF}zM0C<%Ns)If?o>mgc z$@brj&S;>14bZ^BmT4Unoxs6=ROeC!jv4?s#`jDFt#u;eGAKGTqtaY9zwMyp>%xV<=uG6dF$9-H2Q*8pwDX3 z4~6@|#nt_(21y5h0JPq!$@q@)JiGuQ@N=*g;7=M}=Xi&aFj5Ms8r%P~_D>gC#0;iY z0`PPxTvv?e_vR*6E%(eToy?{1j_?j1a{W~BL2npIi$H6jBFw9BI13!iIq@E0?5QVI zIp2OZE+XQe8pr4yB!qASsaa0A+fw8$rUVZy?0ak>CB5fU3mnRLb@k~s(nfsGUefXP zezD0X@>Y`uP4MVgYYd-Dj4=_BV8)4VD#oy9F=|RuXCcRi5m+zLMJqB zk@9V>bO?b4;gMwTFEhpZo=W>5()V7`SOBHSo%VqS0bMx!%y-`uLNLv~A;50tAib<+ zERgdmFVu*uM-iU(_z_C+NjZE_)`w9w#&rNpw6>70hLQsLjJvt8ZPBK5pQh}G+ERJ? z1ng>C$mK%(A?53k*GDaD=!Es_v`_bq1t!}Lx3;`oe*D$}1hv4w(nqOestzUAx60qa|V4X?T41aA%trP8U@F1EO7prRo~phzt5c})t(I- z)d1=Z2m{`q3%V-P;jAJhCB<%h-<>``&$?|oN2hB_+m25P=i~jK=LZ(Id0=?4TM&LF zj;=w+IXW<;qq{DFxO+Tq5~DIG=<&5+Ez=|ltKI4eeSwS|KqNxj>n4;5wEMg7J*m6m zrDC?@A1}V}8R8_%-T6;LYA1qfYf+nTshu>&OXwfF^Jo4>oMSVYv?uOHcaeiy?T3J7 z45-Zj19T!t2dqBc|Mrj1;N#LCR5LM1&lE z$EWFoHpOGFg&9%kow! z#7lFj;17-tnLbUEq3wOmEbH3dqW~uh@vWo{56s=-^WeM?5@(Kt=shD#mb87KkP247 zXehD?Xmtg&T8w9F@fJaGDNbsjzJUs;=|qs3gP#}&`_@`ykQm3s1agE#-X-ltNVaFG z9p`CrE98J$B$(5)3!8es2|{QmZ79M4Ku7hEHa<5)z`W6@!QYrVf- zX#YZ0H;T6MCZ=g9damo+Me|yc=X;z@uGFO5?24<;2xoA7gxA|QW9|6U3IlM*V0-PB zmC;~K1|KWFsjH7>Sf%|MILa>vc<}mG zjiYilGO(C~v9`Val%m7#Rgt)H_Ai5;6^a+Ev9QMt20l>21&OxX%A2itQMK92OU zdzvL9fb(`e;Q&h<_W)af?BxmSp~7Mx@#)&GuuiHGS?W|LoK+b@!p@Is+5%=_954p68t5$}z$BF$ru^QG zhog8Nn)>}KmUX4brh0rWsC8g;sL;}1l9wNZyCUKN*eYoL`s90=j*}7k1&@GbnIIWS zH&0JbclVA42{S=tn0eJ07R#n77o2@dMcmIt|`!>rdgO^1((^B}#b;m|kVnh~1Z)lp&oE*1a zW`~}!x)w`g9{+xw>qn3{FXn9)SH|)u2d1$G_3S>a>UO${mf^80l&r#b;8JLS-pO~I zE}A?-B;NdHdXAPp7_(w`zf~tfE^e7u%f*teYet$~d~A*sz46&NOXhm6{=bj&wyUkK z?56thB=W;)FbqPFdoadN|E=+R75wDR_n@oqJ{gzCSs|aa@|{$6pFg25R6{T5yH4wW?zqo6igkoM$daY7@M0Ew*mE4Dv*ptHX_tQ(?Zl zI=sWJ#!=pCCn-f!{F2CN9PHrGKsy<8d#haFAk)p+KF0}B4Do|QWRqY0|V5; ziGjgKwLhL_W_PkY=Ku@L!6}n!xvv~!=A{&$4O=4FdEWpjj=F388i`-3c-YlI+N5g~ z@x1K6rwNQPrM-{`k#Kk~5G3lIat39!wt6?KEF_hKw_MS05)aoO!R(MBq-VqIXvZr` z6e!g{W8LNH^wLdlu6a|?`fmJVb5rCiz@<5>+&>}w86(h-wY8!unJ~UZNuutc$CW_b zu}s(>p1=K(dV`~AjS8FdXR_u2=uuJthZP?`@YFD2TA)Rq-F2$xK!AgN?Hv$C$mFOl z_jgBF`EQ$aiz-2>+4!EUhN2&k6a0?#P7aqM6B2-238>>}#WO3f;8m=i#m44?3L?P5 zu({qt8o>~du#i)9ZRzg{2L!Mdxeu+xqj2p>c_;bz?(WqSz1Vqyl_T=pTopB_`Lu!+nNSHne@HIrmS~NB~wZ?B@g>k_WYX&E#@P2=ja5-{P{qIMyM=cR7D_rp!Sx zatNycIEnPrS%~j!QWRm3jJ9Rm;_@Ok{q{G{q!lc7) zdjII^uR$0%%dTntUwZT@Q{NiCnha=1U2S|S@1P-!kIm$v{@;6l2(wA++TDW_6T*CY z!z;9hQ9}Jef~CQuK0M0HUTQ{a27`_BDF!CdmLI&-J}_A%f4=fIb&Cog_fQ0}8v{e) zn!P&_gTY+P=UxXmil7T%Wc^wr-o5v|)G#S%e(%;hY-(&75JG^l_1HXJSV2-tST@5D z%m;;-@#a~M#2?$0Zf!K zHc^5vbs(d0D%g#v&j9T$u#3OE`YLc5sG2YP{1mu0a}#`xJ{=?UH5?*^Z+x1saB+0Hsa}bE zeQRwu9;irAYd{NQZT!NYE6E#&iShAioBd{zZ5_IPf+O55mE6MInMt#TdrZDrx-9rZ zC#*>oJp8A7{A5$(Wa3ldqTsyvZ@bKZmi}xouAkZFddUj;c_|!2^u_6K&@?8G$|*Xe zHrw$pD>Tl_HvChcG|sYq27$j!p`N03;`dX>=I*bGu1%`Q?oO|~SkIzaa0)&8{&+3( znyxxBE|>QyYmXsv85xh6qK6ncev0}adF`mW$JpKZmaug{yu53x99>IQUq8>_;(L+) zqAYfiSCqfeDN;Y+lpBO_?#xN!QaH7sL_x>dvY$+<%f5a^0|kvUR4E(6KFbnOekqz2f>-%PoYp^ zA?CLZiy#8Bt_A-6ztW{gH8*1U7nw(~kYr$X$>^c~J)d&+Hz)LLW0@L{gFC~O->-O? zLXrC%&(~0S#*;~%f1rZ*(T|PJu3@H+%iFJJm;&FiHew%E)-@s;S9SKLH;ewu?_#G; zu3V({UpD7@X~kXB4Q-${Ti1<05)$<_Y71#u`p63Nd%3fy!}s|Pe}hd@>lDfw?9RI- zlP`IOiV$FDHF#-PmblqSbDNaYQ4z`(3Y-avT+sWF#h0>oVLI>`MVBU5Az>%LZv1~g dU*V5g-M!SlswLp0f$y*^R%UkB8%(^?{s(#(%5DGv literal 0 HcmV?d00001 diff --git a/Android/res/layout/main.xml b/Android/res/layout/main.xml new file mode 100644 index 00000000..87705d85 --- /dev/null +++ b/Android/res/layout/main.xml @@ -0,0 +1,18 @@ + + + + + +