vs2015 ctp里面已经支持了移动平台开发,利用C++开发APK,或者win10平台的通用app都行。但是里面配置的环境还是很坑爹的,里面的hello word都编译错误。因为产品还没上市“外国专家”,还没当小白鼠,给出解决方案。所以,我们只能手工解决。
可以看到vs2015环境也是利用开源工程,不过里面llvm的编译器老是报错,太烦了,去尼玛的IDE,反正VS也是利用这个SDK生成应用,我们也可以利用命令行自己生成,需要的环境都在上面,请按照自己机器修改。
编译的例子,也是NDK自带的android-ndk-r10\samples\hello-jni,就是生成一个.so,然后java生成的UI调用这个so导出函数,显示返回结果。
大体步骤如下:
在android-ndk-r10\samples\hello-jni\jni目录上运行
ndk-build
这样会生成不同平台的libhello-jni.so
然后在android-ndk-r10\samples\hello-jni下作为我们工作目录
aapt.exe package -f -m -J D:\Android\android-ndk-r10\samples\hello-jni\gen -S res -I D:\Android\sdk\platforms\android-20\android.jar -M AndroidManifest.xml
生成hello-jni\gen\com\example\hellojni\R.java
javac gen\com\example\hellojni\R.java src\com\example\hellojni\HelloJni.java -bootclasspath D:\Android\sdk\platforms\android-20\android.jar -d bin
把所有的Java编译成class
dx.bat --dex --output=.\bin\classes.dex .\bin
把生成class变成dex文件,就是可以被谷歌虚拟机执行的中间格式
aapt.exe package -f -M AndroidManifest.xml -S res -I D:\Android\sdk\platforms\android-20\android.jar -F bin\tmp
把所有需要的资源打包
android.bat list targets
android update project -p . -t android-20
这样是确定本地adt支持生成android版本,然后运行命令为我们工程生成build.xml
ant release
利用ant生成bin\HelloJni-release-unsigned.apk
keytool -genkey -alias release -keyalg RSA -validity 20000 -keystore release.keystore
jarsigner -verbose -keystore release.keystore -storepass 123456 -keypass 123456 -signedjar .\bin\HelloJni-release.apk .\bin\HelloJni-release-unsigned.apk release
安装命令行提示生成密钥,并用它来签名你的apk
然后就是adb install新鲜出炉的apk在你的手机上看到
打开你的apk看到生成4个平台的so都打包进去了,而安装时候,apk会自动确定安装到机器上的是哪个。
这样就是完全手工的打通了编辑环境,发布再也不用IDE了,可以运行一个批处理,但是写代码的自动提示和真机断点调试还是利用IDE比较方便。
拨开IDE外衣才能看到一个程序到底发生了什么,是什么把你的字符串文本变成了可以执行的程序,不是神奇的魔法,不是靠运气,是靠一步一步的操作,仅此而已。