关于生成apk之后的一些疑问,恳请帮助

历来不希望自己是伸手党,所以长期习惯自己先尝试网上能否找到解决方法,所以现在被卡了两天,实在头晕脑胀,无奈希望能有人帮忙一下,先谢谢了。

cocos2.2.8
cocos2d-x3.6(通过cocos商店下载的frameworks)
使用cocos新建的项目,然后把自己以前项目的cpp文件复制到项目文件下,vs2013编译没问题,一切正常,也确定自己的编译环境没有什么问题

然后生成APK。经过努力目前也能够成功生成APK文件,而且可以在真机上运行,可是关键的问题是只有第一个layer,也就是只有一个画面,当点击界面中有回调函数的按钮,程序就自动退出了,如果是空按钮,也就是没有回调的按钮,一切正常。

经过自己的研究,可能是程序找不到文件的问题,然后就产生了疑问,造成现在问题的关键,是否是编译的时候,有些什么东西并没有被生成成功?该如何解决?

我尝试着把项目导入到eclipse中,发现直观看上去并没有什么问题。

因为对Android端的eclipse使用的太少,所以目前完全无从下手,希望有人能稍微指点一下方向,例如要解决这方面的问题,应该去了解一下什么方面的资料之类的,谢谢了!

贴一下项目内容,希望能够让愿意帮忙的人更了解一下我所遇见的问题。

auto star = MainLayer::create();
auto hero = HeroLayer::create();
layer.pushBack(star);
layer.pushBack(hero);
slptr slp;
for (int i = 0; i < slp->GetLine(“NewHero”); i++){
auto dict = slp->FinById(“NewHero”,i);
auto other = SkipLayer::createLayer(dict.asString());
layer.pushBack(other);
}
auto main = LayerMultiplex::createWithArray(layer);
addChild(main);

开始的Scene是用LayerMultiplex生成的几个layer,slptr slp;是自己封装的一个单例,
按钮的回调只是简单的layer跳转

void MainLayer::skipLayer(Ref* pSender)
{
MenuItem* item = (MenuItem*)pSender;

string File = "Data/NewHero.csv";
slptr<SQLiteHelper> slp;
//slp->DeleteTB("NewHero");
slp->initDB("NewHero", File);
File = "Data/HeroEquip.csv";
//slp->DeleteTB("HeroEquip");
slp->initDB("HeroEquip", File);
File = "Data/HeroRune.csv";
//slp->DeleteTB("HeroRune");
slp->initDB("HeroRune", File);
static_cast<LayerMultiplex *>(_parent)->switchTo(item->getTag());
slp.~Singleton_ptr();

}

唯一麻烦的是我在跳转的时候自己封装了Sqlite3命令,会从项目资源去加载CSV文件新建一个Sqlite数据库文件和一些相关的表

在WIN32的时候,如果新建的项目第一次编译的时候会发现跳转之后的第二个layer有一些资源并没有生成成功,只是第一次,应该是Sqlite数据库有一些问题,目前考虑自己先生成Sqlite数据库,直接读取数据库应该可以解决,但因该和生成APK文件没有关系才对,我个人这样觉得的。

那么到底是什么导致的生成的apk点击这个按钮导致程序退出的呢?

好吧,经测试,果然是Sqlite3数据库的问题。发帖声明下。

个人觉得我似乎走进了一个坑中,原来是AndroidManifest.xml中我没有给应用读写SD卡权限。目前正在测试加入权限之后!

果然进坑了,本人技术太差,实在弄不明白,为什么给了权限之后,依然没有生成本地的数据库文件,在真机上反正找不到,虽然WIN32已经可以了,可是android似乎有些其他的问题,对android研究不太多,现在直接将生成的数据库文件放在资源里面一起打包,sqlite3的封装也得改了。哎,这坑啊,希望能有人来说下,生成的APK不能再手机上生成数据库文件这个问题吧,最后一次测试,直接读取本地数据库文件,看看能不能解决!

这坑还不浅,似乎cpp文件中的对手机内存或者SD卡的操作并没有被执行,这之类的生成文件操作看来得放到android里面java文件中,毕竟android使用的是java,应该和生成APK文件有关,但这得查太多东西的感觉。

又或者,我在cpp中使用的是win32下的接口,似乎得去查一下api文档。看有没有用于android环境下的接口!