对于迟到的回复表示歉意,但这可能会有所帮助......是的,这绝对是可能的。我已经使用 Nexus 7 和带有 ARM 处理器的外部设备完成了此操作。 Nexus 7 必须在启用 USB 调试的情况下获得 root 权限。我用了伍格弗莱什的Nexus Root 工具包——非常简单。
接下来(请坐在座位上),您必须编写应用程序以使用 YModem 协议。一种选择是使用android NDK(本机开发套件)编译用C/C++编写的YModem协议(尝试Tixy's)。你需要cygwin or mingw如果您使用的是 Windows,请在安装 NDK 之前进行。
假设您使用 Windows 并且已安装 NDKc:\android-ndk-r8b-windows\android-ndk-r8b
。您可以使用安装了 adt 插件的 Eclipse,假设您的项目的新工作空间是 c:\android-workspace。您可以使用批处理文件从项目中执行 NDK make (c:\android-workspace\batch.bat
):
C:\android-ndk-r8b-windows\android-ndk-r8b\ndk-build.cmd
PAUSE
只需确保导出 C/C++ 函数,以便您的 JAVA android 应用程序可以使用它们。
接口.cpp:
#include <string.h>
#include <jni.h>
#include <dirent.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "ymodem_tx.h"
#include "ymodem_main.h"
extern "C" {
JNIEXPORT int JNICALL Java_com_example_ymupload_MainActivity_ymodemSent( JNIEnv* env, jobject obj, int portNumber, jstring fileName)
{
int status = 0;
if (portNumber >= 0)
{
const char* input = env->GetStringUTFChars(fileName, 0);
status = ymodem_sentFile(portNumber, input);
env->ReleaseStringUTFChars(fileName, input);
}
else
{
status = 0xFF;
}
return status;
}
JNIEXPORT int JNICALL Java_com_example_ymupload_MainActivity_YmodemGetTotalSize( JNIEnv* env, jobject obj)
{
return ymodem_getTotalSize();
}
JNIEXPORT int JNICALL Java_com_example_ymupload_MainActivity_YmodemGetTransferredSize( JNIEnv* env, jobject obj)
{
return ymodem_getTransferredSize();
}
JNIEXPORT bool JNICALL Java_com_example_ymupload_MainActivity_YmodemIsSending( JNIEnv* env, jobject obj)
{
return ymodem_bIsSending();
}
JNIEXPORT int JNICALL Java_com_example_ymupload_MainActivity_YmodemGetStatus( JNIEnv* env, jobject obj)
{
return ymodem_uGetStatus();
}
JNIEXPORT jstring JNICALL Java_com_example_ymupload_MainActivity_YmodemGetFileName( JNIEnv* env, jobject obj)
{
return env->NewStringUTF(ymodem_pGetFileName());
}
}
还要确保您将该文件和其他文件.c
, .cpp
, .h
文件在jni
项目文件夹中的文件夹,例如c:\android-workspace\prog-name\jni
,以及一个Android.mk
文件(还有很多其他堆栈问题Android.mk
files).
您可以将要刷新的二进制文件放在/sdcard/
。下载文件浏览器来查看它们。