Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
导入phonegap';我的插件是sr.java吗?_Java_Android_Cordova_R.java File - Fatal编程技术网

导入phonegap';我的插件是sr.java吗?

导入phonegap';我的插件是sr.java吗?,java,android,cordova,r.java-file,Java,Android,Cordova,R.java File,我正在尝试制作一个phonegap插件,打开一个活动,通过android的videoView播放视频(因为让我们面对现实,android的webview不能播放html视频)。我让一切正常,但我必须将phonegap包中的R.java包含到我的包中,以便我的插件工作/构建,并消除“R不能解析为变量”错误 我的插件是在如果你阅读“重要!”部分,你可以找到我要做什么来修复的R。。。问题 基本上,用户必须将我的插件中的import语句更改为他们的phonegap包名,这样R.id和R.layout就可

我正在尝试制作一个phonegap插件,打开一个活动,通过android的videoView播放视频(因为让我们面对现实,android的webview不能播放html视频)。我让一切正常,但我必须将phonegap包中的R.java包含到我的包中,以便我的插件工作/构建,并消除“R不能解析为变量”错误

我的插件是在如果你阅读“重要!”部分,你可以找到我要做什么来修复的R。。。问题

基本上,用户必须将我的插件中的import语句更改为他们的phonegap包名,这样R.id和R.layout就可以工作了

我是一名web开发人员,远不是android或phone gap编码器,因此欢迎对此提供任何帮助/提示(eclipse修复程序除外)


谢谢

问题中描述的问题可以通过在插件安装后添加
来解决。我已经编写了一个钩子来修改我的活动
SketchActivity.java
,如下所示。根据需要将程序包名称更改为插件

#!/usr/bin/env node
/*
A hook to add R.java to the draw activiy in Android platform.
*/


var fs = require('fs');
var path = require('path');

var rootdir = process.argv[2];

function replace_string_in_file(filename, to_replace, replace_with) {
    var data = fs.readFileSync(filename, 'utf8');
    var result = data.replace(to_replace, replace_with);
    fs.writeFileSync(filename, result, 'utf8');
}

var target = "stage";
if (process.env.TARGET) {
    target = process.env.TARGET;
}

    var ourconfigfile = path.join( "plugins", "android.json");
    var configobj = JSON.parse(fs.readFileSync(ourconfigfile, 'utf8'));
  // Add java files where you want to add R.java imports in the following array

    var filestoreplace = [
        "platforms/android/src/in/co/geekninja/plugin/SketchActivity.java"
    ];
    filestoreplace.forEach(function(val, index, array) {
        if (fs.existsSync(val)) {
          console.log("Android platform available !");
          //Getting the package name from the android.json file,replace with your plugin's id
          var packageName = configobj.installed_plugins["in.co.geekninja.Draw"]["PACKAGE_NAME"];
          console.log("With the package name: "+packageName);
          console.log("Adding import for R.java");
            replace_string_in_file(val,"package in.co.geekninja.plugin;","package in.co.geekninja.plugin;\n\nimport "+packageName+".R;");

        } else {
            console.log("No android platform found! :(");
        }
    });
将它放在插件的
/hooks/after\u plugin\u install/
目录中 并在
之间添加以下行标记:

<hook type="after_plugin_install" src="hooks/after_plugin_install/hook-add-r-import.js" />


每当有人使用
cordova plugin add
命令添加插件并将
R.java
import写在包声明的正下方时,代码都会被执行

您是否找到了没有修改字符串的其他解决方案?