Tcl\u662f\u4e00\u79cd\u811a\u672c\u8bed\u8a00\uff0c\u5b83\u53ef\u4ee5\u901a\u8fc7\u7f16\u5199\u811a\u672c\u7a0b\u5e8f\u5b9e\u73b0\u5404\u79cd\u529f\u80fd\u3002\u5728Android\u5e94\u7528\u5f00\u53d1\u4e2d\uff0cTcl\u53ef\u4ee5\u7528\u6765\u6253\u5305apk\u6587\u4ef6\u3002\u8fd9\u7bc7\u6587\u7ae0\u5c06\u4ecb\u7ecdTcl\u6587\u4ef6\u6253\u5305apk\u7684\u539f\u7406\u548c\u8be6\u7ec6\u6b65\u9aa4\u3002<\/p>\n
\u4e00\u3001\u539f\u7406<\/p>\n
\u5728Android\u5e94\u7528\u5f00\u53d1\u4e2d\uff0c\u6211\u4eec\u901a\u5e38\u4f7f\u7528Java\u8bed\u8a00\u7f16\u5199\u5e94\u7528\u7a0b\u5e8f\uff0c\u7136\u540e\u4f7f\u7528Android SDK\u63d0\u4f9b\u7684\u5de5\u5177\u8fdb\u884c\u7f16\u8bd1\u3001\u6253\u5305\u7b49\u64cd\u4f5c\uff0c\u6700\u7ec8\u751f\u6210apk\u6587\u4ef6\u3002\u800c\u4f7f\u7528Tcl\u6587\u4ef6\u6253\u5305apk\u7684\u539f\u7406\u662f\u4f7f\u7528Tcl\u811a\u672c\u7a0b\u5e8f\u8c03\u7528Android SDK\u63d0\u4f9b\u7684\u5de5\u5177\uff0c\u5b9e\u73b0\u81ea\u52a8\u5316\u6253\u5305\u7684\u529f\u80fd\u3002<\/p>\n
\u5177\u4f53\u6765\u8bf4\uff0cTcl\u811a\u672c\u7a0b\u5e8f\u4e3b\u8981\u5b9e\u73b0\u4ee5\u4e0b\u529f\u80fd\uff1a<\/p>\n
1. \u8bbe\u7f6e\u5e94\u7528\u7a0b\u5e8f\u7684\u57fa\u672c\u4fe1\u606f\uff0c\u5982\u5305\u540d\u3001\u7248\u672c\u53f7\u7b49\u3002<\/p>\n
2. \u7f16\u8bd1Java\u6e90\u4ee3\u7801\uff0c\u751f\u6210class\u6587\u4ef6\u3002<\/p>\n
3. \u6253\u5305\u8d44<\/p>\n
\u6e90\u6587\u4ef6\uff0c\u5305\u62ec\u56fe\u7247\u3001\u5e03\u5c40\u3001\u5b57\u7b26\u4e32\u7b49\u3002<\/p>\n
4. \u5c06class\u6587\u4ef6\u548c\u8d44\u6e90\u6587\u4ef6\u6253\u5305\u6210apk\u6587\u4ef6\u3002<\/p>\n
\u4e8c\u3001\u8be6\u7ec6\u6b65\u9aa4<\/p>\n
\u4e0b\u9762\u5c06\u4ecb\u7ecd\u4f7f\u7528Tcl\u6587\u4ef6\u6253\u5305apk\u7684\u8be6\u7ec6\u6b65\u9aa4\u3002<\/p>\n
1. \u5b89\u88c5Android SDK<\/p>\n
\u9996\u5148\u9700\u8981\u5b89\u88c5Android SDK\uff0c\u53ef\u4ee5\u4ece\u5b98\u7f51\u4e0b\u8f7d\u6700\u65b0\u7248\u672c\u7684Android SDK\uff0c\u5e76\u6309\u7167\u5b98\u65b9\u6587\u6863\u8fdb\u884c\u5b89\u88c5\u3002<\/p>\n
2. \u7f16\u5199Tcl\u811a\u672c\u7a0b\u5e8f<\/p>\n
\u63a5\u4e0b\u6765\u9700\u8981\u7f16\u5199Tcl\u811a\u672c\u7a0b\u5e8f\uff0c\u5b9e\u73b0\u6253\u5305apk\u7684\u529f\u80fd\u3002\u5177\u4f53\u6765\u8bf4\uff0c\u9700\u8981\u5b9e\u73b0\u4ee5\u4e0b\u529f\u80fd\uff1a<\/p>\n
1. \u8bbe\u7f6e\u5e94\u7528\u7a0b\u5e8f\u7684\u57fa\u672c\u4fe1\u606f\uff0c\u5982\u5305\u540d\u3001\u7248\u672c\u53f7\u7b49\u3002<\/p>\n
“`tcl<\/p>\n
set pkg_name com.example.app<\/p>\n
set version_code 1<\/p>\n
set version_name “1.0”<\/p>\n
“`<\/p>\n
2. \u7f16\u8bd1Java\u6e90\u4ee3\u7801\uff0c\u751f\u6210class\u6587\u4ef6\u3002<\/p>\n
“`tcl<\/p>\n
set java_home “C:\/Program Files\/Java\/jdk1.8.0_121”<\/p>\n
set android_home “D:\/Android\/sdk”<\/p>\n
set project_dir “D:\/workspace\/MyApp”<\/p>\n
set class_dir “$project_dir\/bin\/classes”<\/p>\n
set java_files [glob “$project_dir\/src\/*.java”]<\/p>\n
exec “$java_home\/bin\/javac -d $class_dir -classpath $h5\u8f6c\u6210apk\u5de5\u5177<\/a>android_home\/platforms\/android-26\/android.jar $java_files”<\/p>\n
set res_dir “$project_dir\/res”<\/p>\n
set assets_dir “$project_dir\/assets”<\/p>\n
set resources [glob “$res_dir\/*”]<\/p>\n
set assets [glob “$assets_dir\/*”]<\/p>\n
exec “$andr\u4e2d\u5d0e\u6253\u5370\u673aapp<\/a>oid_home\/build-tools\/26.0.2\/aapt package -f -M $project_dir\/AndroidManifest.xml -S $res_dir -A $assets_dir -I $android_home\/platforms\/android-26\/android.jar -F $project_dir\/bin\/MyApp.apk.unaligned”<\/p>\n
set apk_file “$project_dir\/bin\/MyApp.apk.unaligned”<\/p>\n
3. \u8fd0\u884cTcl\u811a\u672c\u7a0b\u5e8f<\/p>\n
\u8fd9\u6837\u5c31\u53ef\u4ee5\u81ea\u52a8\u5316\u5730\u751f\u6210apk\u6587\u4ef6\u4e86\u3002<\/p>\n