Ist die Namenskonvention für die native Java-Schnittstellenmethode und den Modulnamen?
Ich kann einem JNI-Tutorial folgen. Aber wenn ich den Methodennamen ändere, bekomme ich Probleme. Gibt es eine Namenskonvention, der ich folgen muss? Das Tutorial verwendete HelloJNI als Modulnamen und Bibliotheksnamen. Ich habe "useaaacom" benutzt.
Ich habe ein tolles Feedback dazu und mache Fortschritte. Ich habe eine verwandte Frage. Lass es mich wissen, wenn ich einen weiteren Beitrag dafür erstellen soll. Ich baue gerne auf diese App auf, die an dieser Stelle läuft. Wie rufe ich Funktionen von einem Gerätetreiber aus auf? Ich habe die Header-Datei und der Treiber wird in mein Image geladen. Mit "wie" meine ich, muss ich eine Kopie der Header-Datei in meinem Projekt haben? Dieser Gerätetreiber ist vom Hersteller implementiert, d. H. Er ist nicht Teil von AOSP. Ich habe eine Kopie davon, da ich das gesamte Open Source-Projekt heruntergeladen und es erstellt habe. Ich frage also, was muss ich in meiner APK-Datei tun, damit die App die Funktionen aufruft, die Teil eines aktiven Gerätetreibers sind?
Lassen Sie mich wissen, ob ich einen Teil davon näher erläutern soll, oder ob ich die Header-Datei posten muss oder ...
Ich habe bereits überprüft, ob ich einen Gerätetreiber mit den folgenden Codezeilen öffnen kann:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char **argv)
{
/* Our file descriptor */
int fd;
int rc = 0;
char *rd_buf[16];
printf("%s: entered\n", argv[0]);
/* Open the device */
fd = open("/dev/hello1", O_RDWR);
if ( fd == -1 ) {
perror("open failed");
rc = fd;
exit(-1);
}
printf("%s: open: successful\n", argv[0]);
/* Issue a read */
rc = read(fd, rd_buf, 0);
if ( rc == -1 ) {
perror("read failed");
close(fd);
exit(-1);
}
printf("%s: read: returning %d bytes!\n", argv[0], rc);
close(fd);
return 0;
}
Ich denke, ich muss den obigen Code in Form einer .c-Quelldatei zu meinem jni-Ordner hinzufügen und die Funktionen in meiner Gerätetreiber-Header-Datei aus dieser Datei aufrufen. Möglicherweise haben Sie bemerkt, dass der obige Code für einen Testgerätetreiber mit dem Namen "hallo1" gilt. Ich werde den Namen in meinen Zielgerätetreiber ändern.